我想使用文本文件作爲輸入來評估NLTK中的不同POS標記。評估NLTK中的POS標記器
例如,我將採用Unigram標記器。我發現如何使用棕色語料庫評估Unigram標籤。
from nltk.corpus import brown
import nltk
brown_tagged_sents = brown.tagged_sents(categories='news')
brown_sents = brown.sents(categories='news')
# We train a UnigramTagger by specifying tagged sentence data as a parameter
# when we initialize the tagger.
unigram_tagger = nltk.UnigramTagger(brown_tagged_sents)
print(unigram_tagger.tag(brown_sents[2007]))
print(unigram_tagger.evaluate(brown_tagged_sents))
它產生如下的輸出。
[('Various', 'JJ'), ('of', 'IN'), ('the', 'AT'), ('apartments', 'NNS'), ('are', 'BER'), ('of', 'IN'), ('the', 'AT'), ('terrace', 'NN'), ('type', 'NN'), (',', ','), ('being', 'BEG'), ('on', 'IN'), ('the', 'AT'), ('ground', 'NN'), ('floor', 'NN'), ('so', 'QL'), ('that', 'CS'), ('entrance', 'NN'), ('is', 'BEZ'), ('direct', 'JJ'), ('.', '.')]
0.9349006503968017
以類似的方式,我想讀從一個文本文件中的文本和評估不同的POS標註器的精確度。
我想出瞭如何讀取文本文件以及如何爲標記應用pos標記。
import nltk
from nltk.corpus import brown
from nltk.corpus import state_union
brown_tagged_sents = brown.tagged_sents(categories='news')
sample_text = state_union.raw(
r"C:\pythonprojects\tagger_nlt\new-testing.txt")
tokens = nltk.word_tokenize(sample_text)
default_tagger = nltk.UnigramTagger(brown_tagged_sents)
default_tagger.tag(tokens)
print(default_tagger.tag(tokens))
[('Honestly', None), ('last', 'AP'), ('seven', 'CD'), ('lectures', None), ('are', 'BER'), ('good', 'JJ'), ('.', '.'), ('Lectures', None), ('are', 'BER'), ('understandable', 'JJ')
我想要的東西已經是一個得分一樣default_tagger.evaluate(),這樣我就可以在NLTK使用相同的輸入文件,以確定最適合POS惡搞給定文件比較不同的POS標註器。
任何幫助將不勝感激。
你需要你的測試句子的ground-truth標籤。您可以使用一組現有的標記句子(如第一個例子中使用的布朗語料庫),或者找一些熟悉英語的語言學家,他們願意手動標記您的句子。 – lenz
@Yash你正在做的事情與你現在正在做的不同。你傳遞命令'default_tagger.tag(tokens)',它標記你的原始令牌。您應該提供手動標記的數據以便能夠評估標記器。 – Mohammed