Токенизация юникода с использованием nltk

У меня есть текстовые файлы в кодировке utf-8, содержащие символы типа «ö», «ü» и т. Д. Я хотел бы проанализировать текст из этих файлов, но я не могу получить токенизатор должен работать правильно. Если я использую стандартный токенизатор nltk:

f = open('C:\Python26\text.txt', 'r') # text = 'müsli pöök rääk'
text = f.read()
f.close
items = text.decode('utf8')
a = nltk.word_tokenize(items)

Вывод: [u '\ ufeff', u'm ', u' \ xfc ', u'sli', u'p ', u' \ xf6 ', u '\ xf6', u'k ', u'r', u '\ xe4', u '\ xe4', u'k ']

Токенизатор пунктов, кажется, работает лучше:

f = open('C:\Python26\text.txt', 'r') # text = 'müsli pöök rääk'
text = f.read()
f.close
items = text.decode('utf8')
a = PunktWordTokenizer().tokenize(items)

вывод: [u '\ ufeffm \ xfcsli', u'p \ xf6 \ xf6k ', u'r \ xe4 \ xe4k']

Перед первым токеном все еще стоит '\ ufeff', который я не могу вычислить (не что я не могу его удалить). Что я делаю неправильно? Помощь очень ценится.

18
задан Shawn Chin 10 February 2012 в 13:33
поделиться