我正在尝试为 Voise 助手构建一个 POS 标记器。但是,nltk 的 pos 标记器 nltk.pos_tag 对我来说效果不佳。例如:
sent = 'open Youtube'
tokens = nltk.word_tokenize(sent)
nltk.pos_tag(tokens, tagset='universal')
>>[('open', 'ADJ'), ('Youtube', 'NOUN')]
在上述情况下,我希望 open 这个词是动词而不是形容词。类似地,它将单词“close”标记为副词而不是动词。
我也尝试过使用n-gram tagger
train_sents = brown_tagged_sents[:size]
test_sents = brown_tagged_sents[size:]
default_tagger = nltk.DefaultTagger('NOUN')
unigram_tagger = nltk.UnigramTagger(train_sents, backoff = default_tagger)
bigram_tagger = nltk.BigramTagger(train_sents, backoff = unigram_tagger)
trigram_tagger = nltk.TrigramTagger(train_sents, backoff = bigram_tagger)
我使用了来自nltk
. 但它仍然给出相同的结果。
所以我想知道:
- 是否有更好的标记语料库来训练标记器以制作语音/虚拟助手?
- 是否有比 trigram 更高的 n-gram,即一起查看 4 个或更多单词,例如 trigram 和 bigram 分别查看 3 个和 2 个单词。它会提高性能吗?
- 我怎样才能解决这个问题?