nltk中的TaggedCorpusReader和UnigramTagger (python)

0 投票
1 回答
1480 浏览
提问于 2025-04-17 09:10

我正在尝试使用nltk这个工具来自动给新闻文章分类,方法比较简单。我创建了一个自定义的词汇和标签的组合,跟我的分类相关(比如,老师/教育,电脑/科技等等)。我查阅了一些资料,发现这个问题对我帮助很大,但我还是遇到了一些困难。

根据我目前的代码,我该如何使用我的标记器给句子加标签呢?

import nltk

# Loads my custom word/tag corpus
from nltk.corpus.reader import TaggedCorpusReader
reader = TaggedCorpusReader('taggers','.*')

#Sets up the UnigramTagger
default_tagger = nltk.data.load(nltk.tag._POS_TAGGER)
tagger = nltk.tag.UnigramTagger(model=reader.tagged_words(), backoff=default_tagger)

#Sample content
sent = 'The students went to school to ask their teacher what the homework for the day was but she told them to check their email.'
tokens = nltk.tokenize.word_tokenize(sent)

# Sad Panda
tagged = tagger.tag(tokens) 
# ^ produces AttributeError: 'ConcatenatedCorpusView' object has no attribute 'get'

也有可能我这样做并不是最好的方法,但对于第一次尝试来说,似乎还不错。提前谢谢大家的帮助。

1 个回答

2

标注器是用来进行词性标注的,而不是用来做文本分类的。你可以看看路透社的语料库,它是通过一个分类文件把新闻文章分成多个类别的。然后再看看nltk.classify模块,了解一下怎么训练文本分类器。

撰写回答