从python中的标记句子中提取阶段

时间:2015-09-02 03:25:18

标签: python regex nltk

给出中文标记的句子

令#VV 客户#NN 印象#NN 深刻#VA 的#DEC 事情#NN 就是#AD 感觉#VV 经销店#NN 整体#NN 的#DEG 员工#NN 对#P 客户#NN 都#AD 不错#VA

我需要提取像

这样的阶段
客户#NN 印象#NN 深刻#VA
客户#NN 都#AD 不错#VA

规则是阶段必须以一个或多个#NN开头,然后是零或多个#AD,并以#VA结尾。如果给定句子中有多个匹配的阶段,我需要返回所有最短阶段。

任何人都可以建议使用正则表达式或一段代码,如果它不可能在一个语句中执行此操作。感谢。

1 个答案:

答案 0 :(得分:1)

sentence = [('令', 'VV'), ('客户', 'NN'), ('印象', 'NN'), ('深刻', 'VA'), ('的', 'DEC'), ('事情', 'NN'), ('就是', 'AD'), ('感觉', 'VV'), ('经销店', 'NN'), ('整体', 'NN'), ('的', 'DEG'), ('员工', 'NN'), ('对', 'P'), ('客户', 'NN'), ('都', 'AD'), ('不错', 'VA')]
grammer = 'NP: {<NN>+<AD>*<VA>}'
cp = nltk.RegexpParser(grammer)
result = cp.parse(sentence)
result.draw()

enter image description here