Я пытаюсь обнаружить пользовательские помеченные ключевые слова в фрагменте текста, используя службы когнитивных служб Azure (более конкретно azure-cognitiveservices-vision-contentmoderator==1.0.0
).
Код работает следующим образом:
from azure.cognitiveservices.vision.contentmoderator import ContentModeratorClient
from msrest.authentication import CognitiveServicesCredentials
subscription_key = '<my_key>'
endpoint_url = 'https://westeurope.api.cognitive.microsoft.com/'
client = ContentModeratorClient(endpoint_url, CognitiveServicesCredentials(subscription_key))
После этого я также могу создать список (с именем 123
) пользовательских терминов (используя методы client.list_management_term_lists.create
и client.list_management_term.add_term
)
client.list_management_term_lists.create(
content_type="application/json",
body={
"name": "My custom list",
"description": "Monty Python related terms",
}
)
client.list_management_term.add_term(
list_id=123,
term="eggs",
language="eng"
)
и я могу убедиться, что это работает так, как задумано
terms_data = client.list_management_term.get_all_terms(list_id=123, language="eng").data
terms_data.as_dict()
выходы
{'language': 'eng', 'rules': [{{term ':' eggs '}, {' term ':' spam '}],
'status': {'code': 3000, 'description': 'OK'}, 'tracking_id':
'Some_id'}
Однако, если я попытаюсь обнаружить с помощью
import io
TEXT = "Do you like spam and eggs ?"
text_screen = client.text_moderation.screen_text(
text_content_type="text/plain",
text_content=io.StringIO(TEXT),
language="eng",
list_id=123,
classify=True
)
text_screen.as_dict()
нет 'Terms'
сущность появляется, поскольку то, что я получаю из вышесказанного, просто:
{'original_text': 'Do you like spam and eggs ?',
'normalized_text': ' you like spam eggs ?',
'classification': {'category1': {'score': 0.028309470042586327},
'category2': {'score': 0.14004242420196533},
'category3': {'score': 0.12679287791252136},
'review_recommended': False},
'status': {'code': 3000, 'description': 'OK'},
'language': 'eng'}
Что я делаю не так и как я должен делать это правильно?
Также (не уверен, если это уместно), стрельба
client.list_management_term_lists.refresh_index_method(list_id=123, language="eng")
дает мне APIErrorException: Operation returned an invalid status code 'Not Found'