You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:13:16