我想使用文本文件作为输入来评估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