你只需要改變一些東西了這個工作。
你所得到的錯誤是因爲你不能在類UnigramTagger
迭代。我不確定你是否有其他想法,但只需要刪除for
循環。此外,您需要通過UnigramTagger
a list
的標記語句表示爲list
s(單詞,標記)tuple
s - 不僅僅是單詞列表。否則,它不知道如何訓練。這部分可能看起來像:
[[('@Sakshi', 'NN'), ('Hi', 'NN'),...],...[('Another', 'NN'), ('sentence', 'NN')]]
注意在這裏,每個句子本身就是一個list
。此外,你可以使用NTLK標記的語料庫(我建議)。
編輯:
閱讀你的文章後,在我看來,你倆都搞不清楚什麼樣的輸入/輸出從某些功能期望和缺乏在NLP意義培訓的理解。我想你會從reading the NLTK book, starting at the beginning大大受益。
我很高興向你展示如何解決這個問題,但我不認爲你有潛在機制的完整理解沒有一些更多的研究。
tag_util.py(根據您的代碼)
from nltk.tag import RegexpTagger, UnigramTagger
from nltk.corpus import brown
patterns = [
(r'^@\w+', 'NNP'),
(r'^\d+$', 'CD'),
(r'.*ing$', 'VBG'),
(r'.*ment$', 'NN'),
(r'.*ful$', 'JJ'),
(r'.*', 'NN')
]
re_tagger = RegexpTagger(patterns)
tagger = UnigramTagger(brown.tagged_sents(), backoff=re_tagger) # train tagger
在Python解釋器
>>> import tag_util
>>> tag_util.brown.tagged_sents()[:2]
[[('The', 'AT'), ('Fulton', 'NP-TL'), ('County', 'NN-TL'), ('Grand', 'JJ-TL'), ('Jury', 'NN-TL'), ('said', 'VBD'), ('Friday', 'NR'), ('an', 'AT'), ('investigation', 'NN'), ('of', 'IN'), ("Atlanta's", 'NP$'), ('recent', 'JJ'), ('primary', 'NN'), ('election', 'NN'), ('produced', 'VBD'), ('``', '``'), ('no', 'AT'), ('evidence', 'NN'), ("''", "''"), ('that', 'CS'), ('any', 'DTI'), ('irregularities', 'NNS'), ('took', 'VBD'), ('place', 'NN'), ('.', '.')], [('The', 'AT'), ('jury', 'NN'), ('further', 'RBR'), ('said', 'VBD'), ('in', 'IN'), ('term-end', 'NN'), ('presentments', 'NNS'), ('that', 'CS'), ('the', 'AT'), ('City', 'NN-TL'), ('Executive', 'JJ-TL'), ('Committee', 'NN-TL'), (',', ','), ('which', 'WDT'), ('had', 'HVD'), ('over-all', 'JJ'), ('charge', 'NN'), ('of', 'IN'), ('the', 'AT'), ('election', 'NN'), (',', ','), ('``', '``'), ('deserves', 'VBZ'), ('the', 'AT'), ('praise', 'NN'), ('and', 'CC'), ('thanks', 'NNS'), ('of', 'IN'), ('the', 'AT'), ('City', 'NN-TL'), ('of', 'IN-TL'), ('Atlanta', 'NP-TL'), ("''", "''"), ('for', 'IN'), ('the', 'AT'), ('manner', 'NN'), ('in', 'IN'), ('which', 'WDT'), ('the', 'AT'), ('election', 'NN'), ('was', 'BEDZ'), ('conducted', 'VBN'), ('.', '.')]]
公告輸出這裏。我從標記句子的布朗語料庫中得到前兩句。這是您需要傳遞給標記器的數據類型(如UnigramTagger)來進行訓練。現在讓我們使用我們在tag_util.py
中訓練的標註器。
回到Python解釋器
>>> tag_util.tagger.tag(['I', 'just', 'drank', 'some', 'coffee', '.'])
[('I', 'PPSS'), ('just', 'RB'), ('drank', 'VBD'), ('some', 'DTI'), ('coffee', 'NN'), ('.', '.')]
有你有它,POS標籤的使用方法句子的單詞。
請看我更新的答案。 – Jared 2013-03-23 17:43:55