2015-04-01 77 views
3

我嘗試標記與NLTK POS惡搞就是一個字:標記一個字與NLTK POS惡搞標籤每個字母代替的話

word = "going" 
pos = nltk.pos_tag(word) 
print pos 

但輸出是這樣的:

[('g', 'NN'), ('o', 'VBD'), ('i', 'PRP'), ('n', 'VBP'), ('g', 'JJ')] 

它標記每個字母而不是僅僅一個字。

我能做些什麼來標記這個詞?

+0

注意,標註一個字是不會給你滿意的結果。想一想:如果看單詞足夠了,我們就不需要標籤了 - 我們只需在字典中查找POS。 – alexis 2015-04-02 21:53:58

回答

6

nltk.tag.pos_tag接受令牌列表,分離並標記其元素。因此,你需要把你的話在一個迭代像列表:

>>> nltk.tag.pos_tag(['going']) 
[('going', 'VBG')] 
+0

請注意,這標籤**整個**(我知道OP問約1個單詞,但這可能會令人困惑) – 2018-01-08 23:13:56

+0

@AlaaM。把一個句子作爲一個整體來標記你是什麼意思? 'pos'標記旨在根據他們的初始字符和他們在句子中的位置來標記單詞。這就是標籤由多個字符組成的原因。 – Kasramvd 2018-01-09 06:35:42

+0

我只是說如果你有多個單詞,那麼'nltk.tag.pos_tag('sentence'.split())',而不是'nltk.tag.pos_tag(['一個句子'])'' ,因爲後者會生產一個標籤 – 2018-01-09 07:23:27

0

標記器在單詞列表上工作。要打開串入一個列表只是使用類似

word_list = [word] 

然後使用上word_list的POS惡搞。請注意,如果您有多個單詞,則應首先在字符串上運行nltk.word_tokenize

至於只標記一個單詞是否成功,您應該查看4.3節中提到的查找標記器here。 nltk使用的pos_tag比單個單詞查找標記器更加複雜,但它確實使用了一個作爲過程的一部分,所以您應該看到好的結果。

+0

我知道這是爲了在列表上工作,但它可以在單個單詞上工作嗎? – jksnw 2015-04-01 18:11:10

2
>>> word = 'going' 
>>> word = nltk.word_tokenize(word) 
>>> l1 = nltk.pos_tag(word) 
>>> l1 
[('going', 'VBG')]