0

I'm using IBM's Natural Language Understanding API to return information about tokens in the input text.

This is the code that I have in my onActivityResult to make a syntax feature request:

authenticator = IamAuthenticator("my_api_key")
naturalLanguageUnderstanding = NaturalLanguageUnderstanding("2020-08-05", authenticator)
naturalLanguageUnderstanding.serviceUrl = "my_url"
syntax = SyntaxOptions.Builder().sentences(true).build()
features = Features.Builder().syntax(syntax).build()
parameters = AnalyzeOptions.Builder().text(mainIngr[0]).features(features).build()
posResponse = naturalLanguageUnderstanding.analyze(parameters).execute().result
for (token: TokenResult in posResponse.syntax.tokens) {
    if (token.partOfSpeech == "NOUN") {
        print(token.text + ": " + token.partOfSpeech + ", ")
    }
}

I also have this code at the top of my activity for the above variables:

private lateinit var authenticator: IamAuthenticator
private lateinit var naturalLanguageUnderstanding: NaturalLanguageUnderstanding
private lateinit var syntax: SyntaxOptions
private lateinit var features: Features
private lateinit var parameters: AnalyzeOptions
private lateinit var posResponse: AnalysisResults

When I run my program, it crashes on this line: posResponse = naturalLanguageUnderstanding.analyze(parameters).execute().result

This is the error I get: android.os.NetworkOnMainThreadException

How do I fix this? The text that I need to use as input is in my onActivityResult.

Bert Hanz
  • 417
  • 1
  • 7
  • 16

0 Answers0