用于名词短语的NLTK正则表达式与介词不匹配

时间:2013-04-16 18:01:34

标签: regex parsing grammar nltk regex-negation

我正在尝试使用NLTK识别名词短语,但在正则表达式上仍然有点绿色。

我最初使用的是这样的正则表达式:

  NP: {<PP\$>?<JJ.*>*<NN.*>+}

但是我发现我一直在用介词结束表达式,所以像这样: “演示项目”,以介词“for”结尾,是匹配的,这是不可取的。 (我还没看到,即使用上面的语法 - 据我所知,这应该总是至少以一个名词结尾,对吗?)

因此,我通过将量词改为:

将量词缩减为懒惰
  NP: {<PP\$>?<JJ.*>*<NN.*>+?}

但是现在我得到像“奥尔良”而不是“新奥尔良”的比赛。似乎它根本就不匹配短语了。

最后,我尝试使用前瞻(我了解了here)来明确删除终端介词:

  NP: {((?!<IN>$)(<PP\$>?<JJ.*>*<NN.*>+))+}

这根本没有效果 - 我仍然把“示范项目”作为比赛。如何保持名词短语不受末道介词的影响?

如果有一种更简单,更优化的方式来获取名词短语,那也值得赞赏!

0 个答案:

没有答案