给出中文标记的句子
令#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
结尾。如果给定句子中有多个匹配的阶段,我需要返回所有最短阶段。
任何人都可以建议使用正则表达式或一段代码,如果它不可能在一个语句中执行此操作。感谢。
答案 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()