簡(jiǎn)書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處掠哥。
? ? ? ?將一個(gè)句子或者一個(gè)段落輸入到 NLTK 相應(yīng)的模塊裹刮,該模塊可以將這個(gè)句子或段落中的每個(gè)單詞標(biāo)注上其相應(yīng)的詞性奢讨,如動(dòng)詞世舰、名詞动雹、形容詞、副詞等跟压。
? ? ? ?使用 NLTK 進(jìn)行詞性標(biāo)注的代碼如下:
import nltk
document = 'Whether you\'re new to programming or an experienced developer, it\'s easy to learn and use Python.'
sentences = nltk.sent_tokenize(document)
for sent in sentences:
print(nltk.pos_tag(nltk.word_tokenize(sent)))
? ? ? ?輸出結(jié)果為:
[('Whether', 'IN'), ('you', 'PRP'), ("'re", 'VBP'), ('new', 'JJ'), ('to', 'TO'), ('programming', 'VBG'), ('or', 'CC'), ('an', 'DT'), ('experienced', 'JJ'), ('developer', 'NN'), (',', ','), ('it', 'PRP'), ("'s", 'VBZ'), ('easy', 'JJ'), ('to', 'TO'), ('learn', 'VB'), ('and', 'CC'), ('use', 'VB'), ('Python', 'NNP'), ('.', '.')]
? ? ? ?大家可能不熟悉這里詞性的表示方式胰蝠,現(xiàn)將相應(yīng)的詞性表示方式列舉如下:
CC 并列連詞 NNS 名詞復(fù)數(shù) UH 感嘆詞
CD 基數(shù)詞 NNP 專有名詞 VB 動(dòng)詞原型
DT 限定符 NNP 專有名詞復(fù)數(shù) VBD 動(dòng)詞過去式
EX 存在詞 PDT 前置限定詞 VBG 動(dòng)名詞或現(xiàn)在分詞
FW 外來詞 POS 所有格結(jié)尾 VBN 動(dòng)詞過去分詞
IN 介詞或從屬連詞 PRP 人稱代詞 VBP 非第三人稱單數(shù)的現(xiàn)在時(shí)
JJ 形容詞 PRP$ 所有格代詞 VBZ 第三人稱單數(shù)的現(xiàn)在時(shí)
JJR 比較級(jí)的形容詞 RB 副詞 WDT 以wh開頭的限定詞
JJS 最高級(jí)的形容詞 RBR 副詞比較級(jí) WP 以wh開頭的代詞
LS 列表項(xiàng)標(biāo)記 RBS 副詞最高級(jí) WP$ 以wh開頭的所有格代詞
MD 情態(tài)動(dòng)詞 RP 小品詞 WRB 以wh開頭的副詞
NN 名詞單數(shù) SYM 符號(hào) TO to
? ? ? ?詞性標(biāo)注過后,我們可以通過單詞的詞性來過濾出相應(yīng)的數(shù)據(jù)裆馒,如我們要過濾出詞性為 NNP 的單詞姊氓,代碼如下:
import nltk
document = 'Today the Netherlands celebrates King\'s Day. To honor this tradition, the Dutch embassy in San Francisco invited me to'
sentences = nltk.sent_tokenize(document)
data = []
for sent in sentences:
data = data + nltk.pos_tag(nltk.word_tokenize(sent))
for word in data:
if 'NNP' == word[1]:
print(word)
? ? ? ?執(zhí)行結(jié)果如下:
('Netherlands', 'NNP')
('King', 'NNP')
('Day', 'NNP')
('San', 'NNP')
('Francisco', 'NNP')
? ? ? ?多說一點(diǎn):
? ? ? ?有了詞性標(biāo)注之后,在后續(xù)的文本處理過程中會(huì)有更多的線索供我們使用喷好。