我希望您能用文本文件作为输入来评估NLTK中不同的POS标签。
例如,我将使用Unigram标记器作为示例。我已经发现如何使用brown语料库评估Unigram标记。
它会产生以下输出结果。
我想要的是像 default_tagger.evaluate() 这样的分数,这样我就可以使用相同的输入文件比较不同的POS标注器,并确定适合给定文件的最合适的POS标注器。
非常感谢您的帮助。
例如,我将使用Unigram标记器作为示例。我已经发现如何使用brown语料库评估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() 这样的分数,这样我就可以使用相同的输入文件比较不同的POS标注器,并确定适合给定文件的最合适的POS标注器。
非常感谢您的帮助。