聊天机器人命名实体识别
Chatbot NER 是一个开源框架,专门支持文本消息中的实体识别。经过对现有NER系统的深入研究,Haptik团队感受到建设一个专为对话式AI定制,并支持印度语言的框架的强烈需求。目前,Chatbot-ner支持 英语、印地语、古吉拉特语、马拉地语、孟加拉语和泰米尔语以及它们的代码混合形式。当前该框架使用常见模式结合一些NLP技术,从数据稀疏的语言中提取必要的实体。Chatbot ner的API结构设计考虑了对话式AI应用的可用性。Haptik团队正在不断致力于将这一框架移植到所有印度语言及其各地方言中。
安装
详细的如何使用docker在您的系统上设置Chatbot NER的文档在此处。
支持的实体
实体类型 | 代码参考 | 描述 | 例子 | 支持语言 - ISO 639-1 代码 |
---|---|---|---|---|
时间 | TimeDetector | 从给定文本中检测时间 | tomorrow morning at 5, कल सुबह ५ बजे, kal subah 5 baje | 'en', 'hi', 'gu', 'bn', 'mr', 'ta' |
日期 | DateAdvancedDetector | 从给定文本中检测日期 | next Monday, अगले सोमवार, agle somvar | 'en', 'hi', 'gu', 'bn', 'mr', 'ta' |
数字 | NumberDetector | 从给定文本中检测数字和相应的单位 | 50 rs per person, ५ किलो चावल, मुझे एक लीटर ऑइल चाहिए | 'en', 'hi', 'gu', 'bn', 'mr', 'ta' |
电话号码 | PhoneDetector | 从给定文本中检测电话号码 | 9833530536, +91 9833530536, ९८३३४३०५३५ | 'en', 'hi', 'gu', 'bn', 'mr', 'ta' |
电子邮箱 | EmailDetector | 从文本中检测电子邮箱 | hello@haptik.co | 'en' |
文本 | TextDetector | 使用全文本搜索数据库或基于上下文模型的文本字符串中检测自定义实体 | Order me a pizza, मुंबई में मौसम कैसा है | 支持搜索的语言 'en', 'hi', 'gu', 'bn', 'mr', 'ta', 支持上下文模型的语言 'en' |
PNR | PNRDetector | 从给定文本中检测PNR(序列)代码 | My flight PNR is 4SGX3E | 'en' |
正则表达式 | RegexDetector | 使用自定义正则表达式模式检测实体 | My flight PNR is 4SGX3E | NA |
还有其他自定义检测器如城市, 预算, 购物尺寸等这些都是从上述主要检测器派生而来,但目前仅支持英语且仅限于印度用户。我们正计划重构它们以便跨语言和地理扩展,并且它们当前的版本可能在未来被废弃。因此,对于已在生产环境中的应用程序,我们建议您仅使用上表中提到的主要检测器。
API结构
详细的所有实体类型的API文档在此处可查看。当前的API结构是为了便于从对话式AI应用程序中访问而构建的。不过它也可以用于其他应用程序。
框架概述
在任何对话式AI应用程序中,需要识别的实体有很多识别一个实体的逻辑可能与另一个实体不同。我们按如下所示组织了这个库:
我们将实体分为四种主要类型:数字型,模式型,时间型和文本型。
-
数字型: 该类型将包含所有与数字相关的实体,例如数字检测,预算检测,尺寸检测等。
-
模式型: 该类型将包含所有可以使用模式或正则表达式进行识别的检测逻辑。例如电子邮箱,电话号码,PNR等。
-
时间型: 该类型将包含检测时间和日期的检测逻辑。
-
文本型: 该类型将通过查阅字典识别实体。此检测主要包含文本的检测(如菜肴,餐馆等),城市名称,用户的位置等。
数字型,时间型和模式型已转移到ner_v2以实现语言的可移植性,具有更灵活的检测逻辑。在ner_v1中,目前只有文本实体有语言支持。我们将把它移动到ner_v2而不会做任何主要的API更改。
贡献指南
目前,您可以通过添加训练数据或通过贡献正则表达式形式的检测模式来贡献Chatbot NER中的ner_v2。 我们将致力于消除一些架构限制,以便将来方便添加机器学习模型和新实体。
-
添加训练数据:您可以通过简单地在csv文件中添加数据来显著改善Chatbot NER的检测能力。例如,印地语和Hinglish中的日期检测可以通过在以下图片中提到的csv文件中添加数据来改进。如果您想贡献,可以参考日期,时间和数字的文档。
-
添加检测模式: 您可以通过添加简单的函数为不同的语言增加自定义语言模式。可以参考此处的添加检测人数自定义模式的例子。
请参考此处的一般贡献步骤,审批和编码指南。