Python 从句子中提取信息

Python 从句子中提取信息,python,nlp,chatbot,question-answering,Python,Nlp,Chatbot,Question Answering,我正在创建一个简单的聊天机器人。我想从用户响应中获取信息。一个示例场景: Bot : Hi, what is your name? User: My name is Edwin. 我想从句子中摘录埃德温这个名字。但是,用户可以通过不同的方式进行响应,例如 User: Edwin is my name. User: I am Edwin. User: Edwin. 我试图依赖单词之间的依赖关系,但结果并不理想 你知道我可以用什么方法来解决这个问题吗? 首先,我认为完整的名称检测设置起来非常繁

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

Bot : Hi, what is your name?
User: My name is Edwin.
我想从句子中摘录埃德温这个名字。但是,用户可以通过不同的方式进行响应,例如

User: Edwin is my name.
User: I am Edwin.
User: Edwin. 
我试图依赖单词之间的依赖关系,但结果并不理想

你知道我可以用什么方法来解决这个问题吗?

首先,我认为完整的名称检测设置起来非常繁重。如果你想让你的机器人能够在99%的情况下检测到一个名字,你需要做一些工作。我想名字检测只是你计划的开始。。。

也就是说,我首先想到的是:

  • 从语法上讲,名字是名词。因此,如果你能对句子进行语法分析,就可以找到这个名字的候选词
  • 名字应该以帽子开头,虽然在聊天中这可能不被尊重,所以它可能没有什么用处。。。然而,如果你遇到一个以帽子开头的单词,它很可能是某人的名字(尽管它可能是一个地方的名字…)
  • 在介绍自己时,您可以合理地想到的模式并不是那么多,因此您可以“硬编码”它们,当然对拼写有一点宽容。
  • 如果你想知道一个真实的名字,你可以使用一个包含大量名字的数据库,但是可以用夏威夷或中国的名字。不过,对于欧洲名字来说,这似乎是一个可行的解决方案。
然而,我不是人工智能专家,我期待着看到其他建议。

首先,我认为完整的名称检测设置起来非常繁重。如果你想让你的机器人能够在99%的情况下检测到一个名字,你需要做一些工作。我想名字检测只是你计划的开始。。。

也就是说,我首先想到的是:

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

然而,我不是人工智能专家,我期待着看到其他的建议。

有很多替代方案,只有两种“模型”:

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

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

    • -提供Python解释器
    • 需要一个C++桥/互操作< /LI>
    • -提供Python解释器

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

只有两种“型号”可供选择:

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

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

    • -提供Python解释器
    • 需要一个C++桥/互操作< /LI>
    • -提供Python解释器

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

< P>如果你考虑“我的名字不重要”、“我的名字很长”等

,检测名字会很复杂。 这是Self中的公共域脚本,它试图解析一个名称,你可以将它改编成python,它还可以做一些疯狂的事情,比如在Wiktionary上查找单词,看看它们是否被归类为名称


如果你考虑诸如“我的名字不重要”、“我的名字很长”等,

这是Self中的公共域脚本,它试图解析一个名称,你可以将它改编成python,它还可以做一些疯狂的事情,比如在Wiktionary上查找单词,看看它们是否被归类为名称


我建议使用NER:


您可以自己玩:

我建议使用NER:


你可以自己玩:

这太宽了。你想走多远?你要找的是有各种方法的。这里可能有类似的图书馆。捕捉以大写字母开头的单词。大多数人会用大写字母写自己的名字。@juanpa.arrivillaga我也用命名实体识别测试过。但是,如果单词中没有cap,命名实体识别就不能很好地工作。无案例判决很可能发生在聊天中。这太宽泛了。你想走多远?你要找的是有各种方法的。这里可能有类似的图书馆。捕捉以大写字母开头的单词。大多数人会用大写字母写自己的名字。@juanpa.arrivillaga我也用命名实体识别测试过。但是,如果单词中没有cap,命名实体识别就不能很好地工作。聊天时很可能会发生无案例判决。我不仅想知道名字。它应该能够处理其他问题,如“你的电话号码是多少?”,“你多大了?”等等。所以我想最小化这个数量