从句子

时间:2016-11-02 08:28:57

标签: python nlp chatbot question-answering

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

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

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

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

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

我有什么技巧可以用来解决这个问题?

4 个答案:

答案 0 :(得分:1)

首先,我认为完整的名称检测确实非常重要。如果您希望机器人能够在99%的情况下检测到名称,那么您就可以完成一些工作。而且我认为名称检测只是你计划的开始......

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

  • 从语法上讲,名字是名词。因此,如果可以对句子进行语法分析,则可以找到名称的一些候选人。
  • 名字应该以一个上限开头,虽然在聊天中这很可能不会得到尊重,所以它可能没什么用处......但是,如果有人发现一个以限额开头的单词,很可能成为某人的名字(虽然它可能是一个地方的名字......)。
  • 你在介绍自己时可以合理地想到的模式并不多,所以你可以“硬编码”它们,当然对写字错误有点容忍。
  • 如果您希望获得实际名称,可以使用包含大量名称的数据库,但可以使用夏威夷语或中文名称。尽管如此,在欧洲名称的情况下,这似乎是一个可行的解决方案。

但是,我不是AI专家,我期待看到其他提案。

答案 1 :(得分:1)

我建议使用NER:

enter image description here

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

答案 2 :(得分:0)

有很多替代品,只有2'模型':

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

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

这不是当前选项的广泛列表

答案 3 :(得分:0)

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

以下是Self中的公共域脚本,它试图解析一个名称,你可能能够将它改编为python,它也会做一些疯狂的事情,比如查找维基词典上的单词,看看它们是否被归类为名称,

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