2013-09-24 5 views
3

Я пытаюсь запустить учебник TextBlob в Windows (используя оболочку Git Bash) с Python 3.3.UnicodeDecodeError в учебнике textblob

Я установил textblob и nltk, а также любые зависимости.

Питон код:

from text.blob import TextBlob 

wiki = TextBlob("Python is a high-level, general-purpose programming language.") 
tags = wiki.tags 

Я получаю следующее сообщение об ошибке

Traceback (most recent call last): 
File "textblob.py", line 4, in <module> 
    tags = wiki.tags 
File "c:\Python33\lib\site-packages\text\decorators.py", line 18, in __get__ 
    value = obj.__dict__[self.func.__name__] = self.func(obj) 
File "c:\Python33\lib\site-packages\text\blob.py", line 357, in pos_tags 
    for word, t in self.pos_tagger.tag(self.raw) 
File "c:\Python33\lib\site-packages\text\taggers.py", line 40, in tag 
    return pattern_tag(sentence, tokenize) 
File "c:\Python33\lib\site-packages\text\en.py", line 115, in tag 
    for sentence in parse(s, tokenize, True, False, False, False, encoding).split(): 
File "c:\Python33\lib\site-packages\text\en.py", line 99, in parse 
    return parser.parse(unicode(s), *args, **kwargs) 
File "c:\Python33\lib\site-packages\text\text.py", line 1213, in parse 
    s[i] = self.find_tags(s[i], **kwargs) 
File "c:\Python33\lib\site-packages\text\en.py", line 49, in find_tags 
    return _Parser.find_tags(self, tokens, **kwargs) 
File "c:\Python33\lib\site-packages\text\text.py", line 1161, in find_tags 
    map = kwargs.get( "map", None)) 
File "c:\Python33\lib\site-packages\text\text.py", line 967, in find_tags 
    tagged.append([token, lexicon.get(token, i==0 and lexicon.get(token.lower()) or None)]) 
File "c:\Python33\lib\site-packages\text\text.py", line 98, in get 
    return self._lazy("get", *args) 
File "c:\Python33\lib\site-packages\text\text.py", line 79, in _lazy 
    self.load() 
File "c:\Python33\lib\site-packages\text\text.py", line 367, in load 
    dict.update(self, (x.split(" ")[:2] for x in _read(self._path) if x.strip())) 
File "c:\Python33\lib\site-packages\text\text.py", line 367, in <genexpr> 
    dict.update(self, (x.split(" ")[:2] for x in _read(self._path) if x.strip())) 
File "c:\Python33\lib\site-packages\text\text.py", line 346, in _read 
    for line in f: 
File "c:\Python33\lib\encodings\cp1252.py", line 23, in decode 
    return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 16: character maps to <undefined> 

Любая идея, что здесь не так? Добавление 'u' до того, как строка не помогла.

+0

Я быстро пробежал учебник, и он работал нормально на моей машине OS X, используя Python 3.3. Возможно, у вас есть старая версия TextBlob? Похоже, что подобная проблема была исправлена ​​и выпущена: https://github.com/sloria/TextBlob/issues/15 –

+0

Не повезло. Я использую 0.6.3, который, я считаю, является последним. Я сделал попытку - переустановить и заметил ошибку libyaml при установке pyyaml. Установка продолжалась, хотя я не уверен, что это серьезная проблема. – sgoldber

+0

Продолжая возиться с этим, я просмотрел краткий учебник с первой страницы [nltk site] (http://nltk.org/) и попал в очень похожую ошибку. Однако клонирование от мастер-репо на github решило проблему. Может быть, мне нужно попробовать что-то подобное с textblob. – sgoldber

ответ

3

Release 0.7.1 исправляет эту проблема, а это значит, что пришло время для

$ pip install -U textblob 

Проблемы заключался в том, что файл en-lexicon.txt используется для частеречной разметки открыл файл, используя кодировку платформы Windows' по умолчанию, cp1252. Файл, очевидно, имел символы, которые Python не мог декодировать из этой кодировки. Это было исправлено путем явного открытия файла в режиме utf-8.

Смежные вопросы