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
.