使用 Amazon Comprehend 实现自然语言处理 - 情感分析与实体提取的活用
详解 Comprehend 的情感分析、实体提取以及自定义分类模型的构建。
Comprehend 概述
Comprehend 是提供支持 25 种以上语言的自然语言处理(NLP)API 的服务。输入文本后,返回情感分析、实体提取、关键短语提取、语言检测和句法分析的结果。无需机器学习专业知识即可将 NLP 功能集成到应用程序中。通过自定义分类模型和自定义实体识别,还可应对行业特定的文本分类。内部使用基于迁移学习的预训练模型,即使使用少量标注数据也能构建自定义模型,与从零构建 ML 管道相比具有显著优势。
情感分析与自定义模型
情感分析 API 将文本情感判定为 Positive、Negative、Neutral、Mixed 四个类别,并返回各类别的置信度分数。可用于电商网站的评论分析和呼叫中心的通话文本分析。自定义分类通过准备带标签的训练数据,构建按行业特定类别对文本进行分类的模型。支持多类分类(每文档一个标签)和多标签分类(每文档多个标签),接受 CSV 或增强清单格式的训练数据。自定义模型训练推荐每类最少 50 个文档,1000 个以上文档可有效提升精度。PII 检测用于 GDPR 和个人信息保护法的合规,自动检测文本中的个人信息并进行脱敏处理。
PII 检测与实时分析
Comprehend 的 PII 检测 API 自动检测文本中的个人信息(姓名、地址、电话号码、电子邮件地址、信用卡号、社会保障号),返回位置信息和置信度分数。ContainsPiiEntities API 判断是否包含 PII,DetectPiiEntities API 确定具体位置。创建实时分析端点后,可使自定义分类模型或自定义实体识别模型持续运行,通过 API 调用即时获取推理结果。异步批处理作业可批量处理 S3 上的大量文档,将结果输出到 S3。Comprehend Medical 专门针对医疗文本,提取药品名、疾病名和手术名。 要深入理解 Comprehend 的理论和实现,可参考专业书籍 (Amazon)。
设计最佳实践与陷阱
将 Comprehend 集成到生产环境时,需注意几个设计要点。首先,关于 API 限流,同步 API 默认每账户每秒 10-20 个请求的限制,处理高流量需要切换到批处理或通过 Service Quotas 申请配额提升。其次,同步 API 每请求文本大小限制为最大 5000 字节(UTF-8),长文档必须进行分块处理。在句子边界处分割可防止情感分数精度下降。自定义模型运维建议使用 Flywheel 实现持续重训练。Flywheel 自动监控模型性能,在精度下降时使用新数据执行重新学习。此外,由于实时端点按推理单元持续计费,请求频率较低时使用 Lambda 调用同步 API 的架构更具成本效益。
与其他服务的比较
除 Comprehend 外,NLP 实现方式还包括使用 SageMaker 构建自定义模型和通过 Bedrock 使用大语言模型(LLM)。Comprehend 作为预构建的 NLP API 可立即使用,最适合情感分析和实体提取等标准任务。SageMaker 具有微调 Hugging Face Transformers 模型等高自由度,但需要管理训练基础设施和模型托管。Bedrock 的 LLM 仅通过提示即可实现零样本分类,但每 token 成本高于 Comprehend 的每字符单价,不适合大量文本的批量分析。决策指南:需要高吞吐量的标准 NLP 任务选择 Comprehend,需要自定义损失函数或架构选择 SageMaker,少量灵活分类任务选择 Bedrock。与 Google Cloud Natural Language API 和 Azure Text Analytics 相比,Comprehend 与 AWS 生态系统(S3、Lambda、Kinesis)的集成最为无缝,通过 IAM 实现细粒度访问控制是其关键差异化优势。
Comprehend 的费用体系
Comprehend 按 API 调用的字符数计费。情感分析、实体提取、关键短语提取分别按 100 字符为单位(最低 300 字符),每 10 万单位约 1 美元。自定义模型训练每小时约 3 美元,实时端点每推理单元约 0.50 美元/小时。批处理的单价低于实时 API,适合大量文档的分析。实时端点持续计费,因此在流量较少的时段可删除端点,切换为异步作业以降低成本。Comprehend Flywheel 可自动化模型的持续改进,减轻重新训练的运维负担。
总结
Comprehend 是通过 API 提供情感分析、实体提取、PII 检测等 NLP 功能的服务。通过自定义分类模型应对行业特定的文本分类,通过批处理和实时端点处理多样的分析工作负载。Comprehend Medical 还支持医疗文本中药品名和疾病名的提取。