创建默认标记器 Python NLTK
Creating a Default Tagger Python NLTK
我正在尝试使用 NLTK 在 python 上创建默认标记器,但我一直收到错误消息。由爱沙尼亚语单词组成的语料库,重点是标记每个单词的词性。
我的代码:
from nltk.corpus.reader import TaggedCorpusReader
mypath = "/Users/mmo/Downloads/"
EC = TaggedCorpusReader(mypath,"estonianSmall_copy.txt",
encoding="latin-1")
sents = EC.tagged_sents()
from nltk import DefaultTagger
from nltk.probability import FreqDist
tags =[ [(word,tag)for word,tag in sent]\
for sent in EC.tagged_sents()]
tagF = FreqDist(tags)
错误:
tagF = FreqDist(tags)
Traceback (most recent call last):
File "<ipython-input-26-c1ca76857fce>", line 1, in <module>
tagF = FreqDist(tags)
File "/Users/mmo/anaconda/lib/python2.7/site-packages/nltk/probability.py", line 106, in __init__
Counter.__init__(self, samples)
File "/Users/mmo/anaconda/lib/python2.7/collections.py", line 477, in __init__
self.update(*args, **kwds)
File "/Users/mmo/anaconda/lib/python2.7/collections.py", line 567,
in update
self[elem] = self_get(elem, 0) + 1
TypeError: unhashable type: 'list'
您的问题出在 FreqDist
-- 您还没有开始创建默认标注器。由于您只是想对标签进行计数,因此将标签提供给 FreqDist
,如下所示:
tagF = FreqDist(tag for word, tag in EC.tagged_words())
(请注意,tagged_words()
returns 是一个平面序列,而不是列表的列表。)
然后您可以继续使用 nltk 教程来构建您的默认标记器。
我正在尝试使用 NLTK 在 python 上创建默认标记器,但我一直收到错误消息。由爱沙尼亚语单词组成的语料库,重点是标记每个单词的词性。
我的代码:
from nltk.corpus.reader import TaggedCorpusReader
mypath = "/Users/mmo/Downloads/"
EC = TaggedCorpusReader(mypath,"estonianSmall_copy.txt",
encoding="latin-1")
sents = EC.tagged_sents()
from nltk import DefaultTagger
from nltk.probability import FreqDist
tags =[ [(word,tag)for word,tag in sent]\
for sent in EC.tagged_sents()]
tagF = FreqDist(tags)
错误:
tagF = FreqDist(tags)
Traceback (most recent call last):
File "<ipython-input-26-c1ca76857fce>", line 1, in <module>
tagF = FreqDist(tags)
File "/Users/mmo/anaconda/lib/python2.7/site-packages/nltk/probability.py", line 106, in __init__
Counter.__init__(self, samples)
File "/Users/mmo/anaconda/lib/python2.7/collections.py", line 477, in __init__
self.update(*args, **kwds)
File "/Users/mmo/anaconda/lib/python2.7/collections.py", line 567,
in update
self[elem] = self_get(elem, 0) + 1
TypeError: unhashable type: 'list'
您的问题出在 FreqDist
-- 您还没有开始创建默认标注器。由于您只是想对标签进行计数,因此将标签提供给 FreqDist
,如下所示:
tagF = FreqDist(tag for word, tag in EC.tagged_words())
(请注意,tagged_words()
returns 是一个平面序列,而不是列表的列表。)
然后您可以继续使用 nltk 教程来构建您的默认标记器。