Python 如何使用nltk标记器标记句子的一部分(多个单词)
我正在使用nltk标记器,并基于两个德语句子建立了标记器层次结构:Python 如何使用nltk标记器标记句子的一部分(多个单词),python,nltk,pos-tagger,Python,Nltk,Pos Tagger,我正在使用nltk标记器,并基于两个德语句子建立了标记器层次结构: traindata = [ [('ich bin dabei', 'PV')], [('ich', 'test'), ('bin', 'None'), ('nicht', 'NV'), ('dabei', 'None')], ] t0 = nltk.DefaultTagger('None') t1 = nltk.UnigramTagger(traindata, backoff=t0) t2 = nltk.Big
traindata = [
[('ich bin dabei', 'PV')],
[('ich', 'test'), ('bin', 'None'), ('nicht', 'NV'), ('dabei', 'None')],
]
t0 = nltk.DefaultTagger('None')
t1 = nltk.UnigramTagger(traindata, backoff=t0)
t2 = nltk.BigramTagger(traindata, backoff=t1)
t3 = nltk.TrigramTagger(traindata, backoff=t2)
输入:ich bin dabei
预期:[('ich bin dabei','PV')]
结果:[('ich','test'),('bin','None'),('dabei','None')]
单词ich
是根据traindata中的第二个元素标记的,尽管我希望所有三个单词ich bin dabei
都标记为PV
如何使用nltk标记器标记多个单词?也与句子的一部分相同:
ich bin dabei,hoffe ich
应该导致
[('ich bin dabei','PV'),('hoffe','None'),('ich','None')]
POS标记器使用代币,而不是字符串。除非输入ich bin dabei
被解析为单个令牌,否则无法按照您想象的方式进行处理。你需要的是一个chunker,而不是POS-tagger。你的意思是我需要一个解决方案来首先识别ich bin dabei
作为一个chunk,对吗?之后,我可以标记该块?不。即使是块也可以一次识别一个标记。您需要改变您的方法,为此,您需要了解nltk与令牌序列一起工作。什么是PV
,您有多少此类培训数据?你的问题现在无法回答。PV,NV,test。。。。这些不是真正的标签。训练数据并不比你看到的多。写这个问题是为了理解标记句和标记者,希望能找到更好的方法来实现我的目标。我希望我能弄清楚目标是什么。我只想给句子加上标签。我们可以假设我有很酷的标签和大量此类培训数据。关于组块,请阅读第6章和第7章。我不确定你对这里的答案有什么期望,因为你没有明确的任务要执行或问题要解决。