3

我有一组句子,我想从中提取表达以下语义的句子:

我喜欢意大利菜。

这样一个句子的结构和措辞有很多变化。一些例子:

  • 我喜欢意大利、中国和印度菜。
  • 我喜欢的菜是中国菜、意大利菜和印度菜。
  • 我喜欢的一些菜系包括印度菜、意大利菜和中国菜。
  • 我喜欢世界各地的各种美食,比如意大利菜、中国菜和印度菜。

解决这个问题的好方法是什么?

我不是 NLP 方面的专家。这只是我能想到的:

  • 查找“like”和“cuisine”的同义词
  • 使用解析器(Stanford 或 Parsey McParseface)为句子构建依赖树
  • 修剪依赖树以仅包括主语(例如“I”)、动词关键字(例如“like”)、名词关键字(例如“food”)和名词修饰语(例如“Italian”)。这可以通过找到覆盖树中所有这些节点的路径来完成。
  • 存储训练句子的依赖树集合。
  • 检查训练中是否存在测试语句的依赖树

任何想法、建议和/或意见将不胜感激!

4

1 回答 1

2

我认为你在正确的轨道上。我的想法首先需要您确定的同义词(例如,“enjoy”=“like”=“love”“food”=“cuisine”)。如果你查看你的语料库,你会发现所有的句子都有一些相同的模式,即

------喜欢/喜欢/爱---意大利语---

“-”表示句子中的所有其他标记。您可以使用模式挖掘算法(即 PrefixSpan)首先发现此模式。如果你完成了这一步,那么你就非常接近答案了。关于如何在模式末尾添加单词“cuisine”,您可能需要使用 Stanford Dependency Parser 来获取依赖项并提取由单词“Italian”和“Cuisine”组成的对。最后你可以结合这两个结果并得到你的答案。要测试一个句子,只需查看它是否具有模式。

如果这种模式不存在或句子的语法太复杂而无法找到模式,这种方法确实有局限性。而且它也不在语义层面上。因此,我对其他人关于如何解决这种情况的回答非常感兴趣。如果我对如何在真实语义级别解决它有一些想法,我会更新。

希望能帮助到你。

于 2016-12-30T05:29:09.343 回答