0

我正在创建一个简单的聊天机器人。我想从用户响应中获取信息。一个示例场景:

Bot : Hi, what is your name?
User: My name is Edwin.

我希望从句子中提取 Edwin 的名字。但是,用户可以通过不同的方式做出响应,例如

User: Edwin is my name.
User: I am Edwin.
User: Edwin. 

我试图依赖单词之间的依赖关系,但结果并不好。

关于我可以使用什么技术来解决这个问题的任何想法?

4

4 回答 4

1

我建议使用NER:

在此处输入图像描述

你可以自己玩:http: //nlp.cogcomp.org/

于 2017-09-15T02:31:35.027 回答
1

首先,我认为设置一个完整的名称检测真的很繁重。如果您希望您的机器人能够在 99% 的情况下检测到名称,那么您需要做一些工作。我想名字检测只是你计划的开始......

这就是说,这是我想到的第一个想法:

  • 从语法上讲,名称是名词。因此,如果可以对句子进行语法分析,就可以找到该名称的一些候选者。
  • 名字应该以大写字母开头,虽然在聊天中这可能不被尊重,所以它可能没什么用......但是,如果一个人遇到一个以大写字母开头的单词,它很可能是某人的名称(虽然它可能是一个地方的名称......)。
  • 您在介绍自己时可以合理地想到的模式并不多,因此您可以“硬编码”它们,当然对错别字有一点宽容。
  • 如果您期待一个真实的名字,您可以使用一个包含大量名字的数据库,但可以享受夏威夷或中国名字的乐趣。尽管如此,对于欧洲名称而言,这似乎是一个可行的解决方案。

但是,我不是人工智能专家,我期待看到其他建议。

于 2016-11-02T08:50:34.427 回答
0

如果您考虑“我的名字不重要”、“我的名字很长”等问题,检测名字可能会很复杂。

这是 Self 中尝试解析名称的公共域脚本,您可以将其改编为 python,它还会做一些疯狂的事情,例如在维基词典上查找单词以查看它们是否被归类为名称,

https://www.botlibre.com/script?id=525804

于 2016-11-30T17:18:41.520 回答
0

有很多选择,只有 2 个“模型”:

  • 基于NLP训练;使用 HTTP 进行集成/交付:

  • 基于模式匹配;使用解释器(需要本机实现或其他实现的桥梁)

这不是当前选项的详尽列表

于 2016-11-08T10:11:09.400 回答