使用NLP或机器学习来提取关键字把句子

问题描述:

我是新来的ML/NLP领域,所以我的问题是,什么样的技术是最合适的,以实现以下目标:使用NLP或机器学习来提取关键字把句子

我们有一个简短的句子 - “去哪里吃晚饭?”或“你最喜欢的酒吧是什么?”或者“你最喜欢的便宜酒吧是什么?”

是否有这将使我训练它提供以下数据集的技术:

  • “去哪里吃饭?” - >晚餐
  • “你最喜欢的酒吧是什么?” - >酒吧
  • “你最喜欢的便宜餐厅是什么?” - >廉价,餐厅

这样下一次我们有一个类似的问题关于一个未知的活动,比如说:“你最喜欢什么昂贵的[无论]”它将能够提取“昂贵”和[无论] ?

的目标是,如果我们可以用这个问题的数百变化(或上千)训练它要求及相关的输出数据预期,因此它可以与日常用语的工作。

我知道如何使它即使没有NLP/ML,如果我们有像酒吧,餐厅,游泳池等,预计术语词典,但我们也希望它与未知项工作。

我已经看到了耙和Scikit学习为“东西”分类的例子,但我不知道我会怎么养活文本到这些,所有这些例子有培训预定义的输出。

我也试了谷歌的NLP API,亚马逊Lex和机智,看看他们在提取实体有多好,但结果令人失望,至少可以说。

阅读有关摘要技术,我留下的印象是它不适用于小型单句文本,所以我没有深入研究它。

+1

如果您的输入与您的示例一样短,只是提取所有形容词和名词似乎就足够了。有什么理由不适合你吗? – polm23

至于@ polm23简单的东西提到你可以使用POS标注做了提取。您提到的服务,如LUISDialog flow等,使用所谓的自然语言理解。他们使用intent &实体(详细的解释与例子,你可以找到here)。如果您担心自己的数据正在上线或者有时需要离线,那么您总是会使用RASA

的事情你可以做RASA:

  • 实体提取和句子分类。通过用各种句子标记单词位置,提及从句子中提取哪个特定术语。因此,如果任何不同的单词出现,而不是您在训练集中给出的单词,它将被检测到。
  • 使用规则学习和keras LSTM进行检测。
  • 与在线服务进行比较的一个缺点是,您必须手动标记JSON文件中的位置编号才能进行培训,而不是在线服务中的点击和标记功能。

你可以找到教程here

I am having疼痛in my。例如,我已经训练了RASA和各种句子用于识别身体部位和症状(我仅限于2个实体,可以添加更多),然后当出现未知句子(如上面的那个句子)时,它会正确地识别“疼痛”为“症状”和“腿部”为“身体部分”。

希望这回答你的问题!