2014-02-19 32 views
0

這一定很簡單,但我很想念它。我的代碼:過濾器的具體部分NLTK

import nltk 

f=open('...\\t.txt','rU') 
raw=f.read() 
tokens = nltk.word_tokenize(raw) 
print nltk.pos_tag(tokens) 

它返回例如:

「[( '進程', 'NNS'),( '一個', 'DT'),( '序列',「NN '),('of','IN'),('words','NNS')]

我想知道如何只收集所有'NN'或者全部'DT'和'IN '而不是每個成員的字符串

在此先感謝

回答

1

您可以提取僅t他標記你想用一個列表理解,如:

>>> tags = nltk.pos_tag(tokens) 
>>> dt_tags = [t for t in tags if t[1] == "DT"] 
>>> dt_tags 
[('a', 'DT')] 
+0

完美的,只是重複的,如果我想找到DTS和NNS tags2 = [T在nltk.pos_tag(標記)筆若T [1] ==「NNS」] tags2 –

+0

是的,你甚至可以爲每種類型製作一個帶有標籤的字典:'all_tags = {tag:[t代表t中的標籤如果t [1] == tag]代表標籤中的[「DT 「,」NNS「,...]}' – jonrsharpe