前提・実現したいこと
int foundというエラーをなくしたいです。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-55-b3b1a98eecac> in <module> ----> 1 vec = dictionary.doc2bow(words) TypeError: decoding to str: need a bytes-like object, int found
該当のソースコード
python
1import MeCab 2from gensim.corpora.dictionary import Dictionary 3from gensim.models import LdaModel 4from gensim.models import HdpModel 5from collections import defaultdict 6 7# MeCabオブジェクトの生成 8mt = MeCab.Tagger('') 9 10mt.parse('') 11 12# トピック数の設定 13NUM_TOPICS = 3 14hdp_num_topics = 10 15 16if __name__ == "__main__": 17 # トレーニングデータの読み込み 18 # train_texts は二次元のリスト 19 # テキストデータを一件ずつ分かち書き(名詞、動詞、形容詞に限定)して train_texts に格納するだけ 20 train_texts = [] 21 with open('train.txt', 'r',encoding='utf-8') as f: 22 for line in f: 23 text = [] 24 node = mt.parseToNode(line.strip()) 25 while node: 26 fields = node.feature.split(",") 27 if fields[0] == '名詞': 28 text.append(node.surface) 29 node = node.next 30 train_texts.append(text) 31 words = Dictionary(train_texts) 32print(words) 33 34from gensim import corpora 35 36# words はさっきの単語リスト 37dictionary = corpora.Dictionary(train_texts) 38print(dictionary.token2id) 39 40# no_above: 使われてる文章の割合がno_above以上の場合無視 41dictionary.filter_extremes(no_below=20, no_above=0.3) 42 43dictionary.save_as_text('train.txt') 44words = bytes('words', 'UTF-8') 45dictionary = corpora.Dictionary.load_from_text('train.txt') 46type(words) 47 48vec = dictionary.doc2bow(words) 49print(vec)
試したこと
エラーでbyteのオブジェクトが必要とのことだったので、1行目でwordsをbyteに変換しましたが治りませんでした。
回答2件
あなたの回答
tips
プレビュー