word2vecで名詞のみかつリスト化された文章から分散表現取得取得したいです。
gensim のword2vecを使用します。分散表現はPC にファイルとして保存したいです。
形態素解析器 mecabでcookpadのレシピの名詞のみを抽出してみました。
python3
1from pymongo import MongoClient 2from bs4 import BeautifulSoup 3import MeCab 4mecab = MeCab.Tagger ('/usr/local/lib/mecab/dic/mecab-ipadic-neologd') 5def main(): 6 recipes = [] 7 client = MongoClient('localhost', 27017) 8 db = client.html.cookpad_html 9 collection = db.test_collection 10 htmls = list(db.find().limit(100)) 11 recipes = [] 12 for num, html in enumerate(htmls): 13 soup = BeautifulSoup(html["html"], 'lxml') 14 for steps in soup.find_all(attrs={"class": "step_text"}): 15 node = mecab.parseToNode(steps.get_text()) 16 17 while node: 18 if node.feature.split(",")[0] == '名詞': 19 recipes.append(node.feature.split(",")[6]) 20 node = node.next 21 recipes = list(set(recipes)) 22 print(recipes) 23 24if __name__ == '__main__': 25 main() 26 27text = 'main()' 28file = open('text_file_name.txt', 'w') 29file.write(text) 30file.close() 31 32from gensim.models import word2vec 33data = word2vec.Text8Corpus('text_file_name.txt') 34model = word2vec.Word2Vec(data, size=200,min_count=1) 35 36out=model.most_similar(positive=[u'チョコ']) 37for x in out: 38 print (x[0],x[1])
白玉粉', 'クッキング', 'キュート', 'もみ', '目', '皆さま', '白餡', 'ツヤ', 'リンゴ', '際', '手', '耳たぶ', '坊ちゃん', '方法', '順番', '以降', '卵焼き', '注意', '赤ワイン', 'グラス', '片栗', 'りんご', 'レーズン', 'スーパー', 'ジャム', 'ゴム', '改訂', '感', '気泡', '未満', 'cc', 'イチゴ', 'マーマレード',
こんな感じで、名詞は沢山出てきたんですけど、
エラーがKeyError: "word 'チョコ' not in vocabulary"と出ました。どうすればいいですか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/04 12:17
2019/10/07 03:04
2019/10/07 03:08
2019/10/07 03:41
2019/10/07 04:13
2019/10/07 04:28
2019/10/07 04:31
2019/10/07 04:40
2019/10/07 04:58
2019/10/07 05:12
2019/10/07 05:14
2019/10/07 05:42
2019/10/07 06:46
2019/10/07 07:29