Я следую за тюрториальным на LDA и сталкиваюсь с проблемой, так как turtorial сделан в python 3, и я работаю в 2.7 (тюрториальные требования работать в обоих). Насколько я понимаю, мне нужно превратить строки в unicode в python 2.x, прежде чем я смогу применить token.isnumeric()
. Из-за моего отсутствия опыта и знаний я не уверен, как это сделать в следующем сценарии. у кого-нибудь есть решение?Эффективное превращение строк в unicode для python 2.7
data_dir = 'nipstxt/'
yrs = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']
dirs = ['nips' + yr for yr in yrs]
docs = []
for yr_dir in dirs:
files = os.listdir(data_dir + yr_dir)
for filen in files:
# Note: ignoring characters that cause encoding errors.
with open(data_dir + yr_dir + '/' + filen) as fid:
txt = fid.read()
docs.append(txt)
tokenizer = RegexpTokenizer(r'\w+')
for idx in range(len(docs)):
docs[idx] = docs[idx].lower() # Convert to lowercase.
docs[idx] = tokenizer.tokenize(docs[idx]) # Split into words.
docs = [[token for token in doc if not token.isnumeric()] for doc in docs]
docs = [[token for token in doc if len(token) > 1] for doc in docs]
Спасибо, это, кажется, на правильном пути, так как он дал мне новую ошибку: UnicodeDecodeError: «ASCII» кодек не может декодировать байт 0xf8 в положении 0: порядковый не в диапазоне (128). Я предполагаю, что это означает, что некоторые символы 'ascii'. Могу ли я установить параметр, чтобы справиться с этим? – WiggyStardust
@WiggyStardust Я уже ожидал этой проблемы, см. Мое редактирование. –
Отлично, спасибо! – WiggyStardust