前提・実現したいこと
日本語のテキストを使ってLDAを実施しています。
sklearnのldaでfitを実行したときにUnicodeEncodeErrorが発生しました。
インターネットで原因を調べ、
sys.setdefaultencoding('utf-8')
などの解決策を試してみましたが、うまくいきませんでした。
使用OSはwindows10
anaconda3で環境を構築しました。
2時間以上検索、修正、再実施を繰り返しましたが、解決しないため、ご教示いただけますと幸いです。
発生している問題・エラーメッセージ
UnicodeEncodeError Traceback (most recent call last) <ipython-input-360-8048e9f036b2> in <module> 1 from sklearn.decomposition import LatentDirichletAllocation as LDA 2 lda = LDA(n_components=5, max_iter=30, n_jobs=-1, verbose=1, evaluate_every=1) ----> 3 lda.fit(X_tfidf.toarray()) C:\Users\Public\anaconda3\envs\py37\lib\site-packages\sklearn\decomposition\_lda.py in fit(self, X, y) 556 last_bound = None 557 n_jobs = effective_n_jobs(self.n_jobs) --> 558 with Parallel(n_jobs=n_jobs, 559 verbose=max(0, self.verbose - 1)) as parallel: 560 for i in range(max_iter): (中略) UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-19: ordinal not in range(128)
該当のソースコード
python3
1from sklearn.decomposition import LatentDirichletAllocation as LDA 2lda = LDA(n_components=5, max_iter=30, n_jobs=-1, verbose=1, evaluate_every=1) 3lda.fit(X_tfidf)
試したこと
https://teratail.com/questions/181578
http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
https://qiita.com/butada/items/33db39ced989c2ebf644
https://hodalog.com/about-unicodeencodeerror-using-japanese-in-python-code/
このあたりのHPをしらべ、実施しました。
補足情報(FW/ツールのバージョンなど)
X_tfidfは以下のコードで作成しました。
from sklearn.feature_extraction.text import TfidfVectorizer
tokens = []
for doc in docs:
tokens.append(" ".join([token.lemma_ for token in doc if token.pos_ in POS or len(POS) ==0]))
tv = TfidfVectorizer(stop_words=stop_words, ngram_range=(1,NGRAM), max_df=MAX_DF, min_df=MIN_DF, max_features=NUM_VOCAB)
X_tfidf = tv.fit_transform(tokens)
vocab = tv.vocabulary_
reverse_vocab = { vocab[k]:k for k in vocab.keys() }
vocab_size = len(vocab)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。