Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用nltk标记器标记句子的一部分(多个单词)_Python_Nltk_Pos Tagger - Fatal编程技术网

Python 如何使用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

我正在使用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.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章。我不确定你对这里的答案有什么期望,因为你没有明确的任务要执行或问题要解决。