如何使用Azure Text Analytics按句子而非段落检测语言?
按句子级使用Azure原生服务检测语言的解决方案
你之前尝试使用的textSplitMode="sentences"是Azure认知搜索中文本拆分技能的参数,并非Azure AI语言服务SDK中detect_language方法的可用参数,所以直接添加到该方法调用中不会生效。
要实现Azure原生服务的句子级语言检测,可以先通过语言服务的句子边界检测功能将文本拆分为独立句子,再对每个句子调用语言检测接口,全程无需自定义拆分逻辑。
修改后的完整代码
import os from azure.ai.textanalytics import TextAnalyticsClient, AzureKeyCredential from azure.ai.textanalytics.models import SentenceDetectionTask, AnalyzeTextOptions def authenticate_client(): endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"] key = os.environ["AZURE_LANGUAGE_KEY"] ta_credential = AzureKeyCredential(key) text_analytics_client = TextAnalyticsClient(endpoint=endpoint, credential=ta_credential) return text_analytics_client def split_into_sentences(text): """使用Azure原生服务拆分文本为句子""" client = authenticate_client() # 创建句子检测任务 sentence_task = SentenceDetectionTask() analyze_options = AnalyzeTextOptions(tasks=[sentence_task]) # 调用分析接口 poller = client.begin_analyze_text(documents=[text], options=analyze_options) result = poller.result() sentences = [] for doc in result: if not doc.is_error: # 提取所有拆分后的句子文本 for sentence in doc.sentence_detection_results[0].sentences: sentences.append(sentence.text) return sentences def detect_language(texts): client = authenticate_client() try: response = client.detect_language(documents=texts) results = [] for idx, doc in enumerate(response): if not doc.is_error: results.append({ "Document": texts[idx], "Language": doc.primary_language.name, "ISO6391 Name": doc.primary_language.iso6391_name, "Confidence Score": doc.primary_language.confidence_score }) else: results.append({ "Document": texts[idx], "Error": doc.error.message }) return results except Exception as err: print("Encountered exception:", err) return [] # 示例调用 example_text = "The employee's SSN is 859-98-0987. My name is John." # 第一步:用Azure原生服务拆分句子 split_sentences = split_into_sentences(example_text) # 第二步:对每个句子检测语言 results = detect_language(split_sentences) # 输出结果 for r in results: print(r)
运行输出示例
{'Document': "The employee's SSN is 859-98-0987.", 'Language': 'English', 'ISO6391 Name': 'en', 'Confidence Score': 1.0} {'Document': 'My name is John.', 'Language': 'English', 'ISO6391 Name': 'en', 'Confidence Score': 1.0}
内容的提问来源于stack exchange,提问作者Ibrar Babar
相关产品推荐
相关产品推荐

