random.shuffle(someLazyMap)

时间:2017-12-03 07:40:47

标签: python nltk pos-tagger

我正在尝试训练我的Python NLTK词性标注器以正确标记德语文本。为了做到这一点,我使用的是ClassifiedBasedGermanTagger,来自:

https://github.com/ptnplanet/NLTK-Contributions/tree/master/ClassifierBasedGermanTagger

以及来自该网站的培训语料库:

http://www.ims.uni-stuttgart.de/forschung/ressourcen/korpora/TIGERCorpus/download/start.html (TIGER Corpus 2.2版(2012年7月))

我发现有一个很好的书面教程如何解决这个问题。所以我现在要做的就是重新创建代码:

https://datascience.blog.wzb.eu/2016/07/13/accurate-part-of-speech-tagging-of-german-texts-with-nltk/

对我不起作用的部分是:

File "C:\somedude\lib\random.py", line 274, in shuffle
    x[i], x[j] = x[j], x[i]
TypeError: 'LazyMap' object does not support item assignment

我得到的错误如下:

ng-switch

你有没有解决这个问题的方法,甚至可以解释为什么它对于编写该教程的绅士有用,以及为什么它会给我显示错误?目前我正在使用Python 3。

非常感谢你们。

2 个答案:

答案 0 :(得分:3)

有点晚了,但也许它可以帮助别人。

教程的作者忘记了NLTK书中所述的“列表”: http://www.nltk.org/book/ch06.html#evaluation

所以而不是

tagged_sents = corp.tagged_sents()

必须是:

tagged_sents = list(corp.tagged_sents())

答案 1 :(得分:0)

tagged_sents = list(range(<some number>,<some number>))  # make sure some_nums is a list/mutable sequence
random.shuffle(tagged_sents)

你可以在这里找到解决方案

https://teamtreehouse.com/community/randomshuffle-crashes-when-passed-a-range-somenums-randomshufflerange5250