2015-12-28 40 views
1

比方说,我记号化的字符串,并把它变成一个列表:在python中,如何在标记字符串中找到短语?

>>> s = "This is a test" 
>>> l = nltk.word_tokenize(s) 
>>> l 
['This', 'is', 'a', 'test'] 

怎样然后在列表中找到类似短语的出现“是”,即“是” directely其次是“一个“?

+1

能否请你详细说明你有什么高层次的目标,你想在句子找到什么模式?谢谢。 – alecxe

+1

你是否试图实施带状疱疹(https://en.wikipedia.org/wiki/W-shingling)? – vittore

+0

其实我有一个标记化和POS标记的列表,我想查找像“NN2 NN2”这样的结构并将其转换为NN2-NN1。我可以将POS标记为OK,但是然后在列表中搜索序列很棘手,看起来像。 – Jono

回答

4

如果要检查两个项目在列表中,并依次是:

l = ['This', 'is', 'a', 'test'] 
any(['is', 'a'] == l[i:i+2] for i in xrange(len(l) - 1)) 
0

您可以使用正则表达式来第一次提取所需pharases如is a再算上在该列表中元素的个数结果。这样,如果这是一个desirre属性,则您不必标记字符串。

这对你的作品:

import re 
dummyList = re.findall(r'\bis a\b', ' This is a test. A regular expression is a necessity to catch all is a(s)') 
print len(dummyList) 

这将打印出3

相关问题