NLP:确定是否在句子中传达特定的语义

时间:2016-05-31 15:49:45

标签: nlp information-extraction dependency-parsing

我有一系列句子,我想从中提取那些表达以下语义含义的句子:

我喜欢意大利菜。

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

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

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

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

  • 查找' like'的同义词和'烹饪'
  • 使用解析器(Stanford或Parsey McParseface)为句子构建依赖关系树
  • 修剪依赖关系树只包括主题(例如' I'),动词关键字(例如'喜欢'),名词关键字(例如' food&# 39;)和名词修饰语(例如'意大利语')。这可以通过查找覆盖树中所有这些节点的路径来完成。
  • 存储训练句子的依赖树集合。
  • 检查测试句的依赖树是否存在于培训中

非常感谢任何想法,建议和/或评论!

1 个答案:

答案 0 :(得分:2)

我认为你走在正确的轨道上。我的想法需要您识别的同义词(例如,"享受" ="喜欢" ="爱" & #34;食物" ="美食" )首先。如果你看一下你的语料库,你会发现所有的句子都有一些相同的模式,即

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

" - "表示句子中的所有其他标记。您可以使用模式挖掘算法(即PrefixSpan)来首先发现此模式。如果你已完成这一步,那么你几乎接近答案。关于如何添加单词" cuisine"在模式结束时,您可能需要使用Stanford Dependency Parser来获取依赖关系,并提取包含单词" Italian"和"美食"。最后,您可以将这两个结果结合起来并得到答案。要测试一个句子,只要看看它是否有模式即可。

如果不存在这样的模式或者句子的语法太复杂而无法找到模式,则该方法确实存在限制。而且它不在语义层面。因此,我对其他人如何解决这种情况非常感兴趣。如果我得到一些关于如何在真实语义层面解决它的想法,我会更新。

希望它有所帮助。