使用 NLP 或机器学习从句子中提取关键词

Using NLP or machine learning to extract keywords off a sentence

我是 ML/NLP 领域的新手,所以我的问题是哪种技术最适合实现以下目标:

我们有一个简短的句子 - "Where to go for dinner?" or "What's your favorite bar?" or "What's your favorite cheap bar?"

有没有一种技术可以让我训练它提供以下数据集:

这样下次我们有一个关于未知 activity 的类似问题时,比如 "What is your favorite expensive [whatever]" 它将能够提取 "expensive" 和 [whatever]?

我们的目标是,如果我们可以用数百种(或数千种)所问问题的变体和预期的相关输出数据来训练它,以便它可以处理日常语言。

我知道即使没有 NLP/ML 如果我们有一个包含酒吧、餐厅、游泳池等预期术语的字典,我也知道如何做到这一点,但我们也希望它能处理未知术语。

我看过使用 Rake 和 Scikit-learn 进行 "things" 分类的示例,但我不确定如何将文本输入到这些示例中,并且所有这些示例都有预定义的训练输出。

我也尝试过 Google 的 NLP API、Amazon Lex 和 Wit,看看它们在提取实体方面有多好,但至少可以说结果令人失望。

阅读有关摘要技术的文章后,我的印象是它不适用于小的单句文本,因此我没有深入研究。

正如@polm23 提到的简单内容,您可以使用 POS 标记来进行提取。您提到的服务 LUIS, Dialog flow etc. , uses what is called Natural Language Understanding. They make uses of intents & entities(detailed explanation with examples you can find here). If you are concerned that your data is going online or sometimes you have to go offline, you always go for RASA.

您可以使用 RASA 做的事情:

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

您可以找到教程 here

I am having 疼痛 in my .

例如我用各种句子训练了RASA来识别body部位和症状(我只限制了2个实体,你可以添加更多),然后当一个未知的句子(如上面那个) ) 显示它将正确识别“pain”为“symptom”和“leg”为“body部分".

希望这能回答您的问题!