2015-12-28 75 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

相關問題