前提・実現したいこと
MeCabで文章を分かち書きして,Word2Vecを用いることである単語と最も類似度の高い単語を置換したい.
置換したい単語を難解語として変数selに入れます.その変数selと,Word2Vecの結果であるresultの中で最も類似度の高い単語を置換したいです.
(例)僕はダイエット中だ → 僕は減量中だ
具体的には,Word2Vecを用いて類似語を抽出した後にその中で最も類似度の高い語を抽出する方法(図1の"減量"を抽出する方法)と単語の置換方法が分からないです.
該当のソースコード
Python
1from gensim.models import word2vec 2import csv 3import MeCab 4 5model = word2vec.Word2Vec.load("./wiki.model") 6 7dictB = {} 8 9m = MeCab.Tagger("-Owakati") 10print("分かち書きしたい文章") 11x = input() 12print("入力文:" ,x) 13word = m.parse(x).split() 14 15print("結果:" ,m.parse(x)) 16 17with open('test.csv', mode="w") as f: 18 writer = csv.writer(f) 19 writer.writerow(word) 20 21with open('test2.csv') as fileB: 22 reader = csv.reader(fileB,delimiter=',') 23 for row in reader: 24 for sel in row: 25 dictB[sel] = True 26 27with open('test.csv') as fileA: 28 with open('word.csv', mode="w") as r: //testとtest2を比べて, 29 reader = csv.reader(fileA,delimiter=',') //testにしかない単語(難解語)をword.csvに出力 30 writer = csv.writer(r) 31 for row in reader: 32 for sel in row: 33 if sel not in dictB: 34 print("難解語:" ,sel) 35 writer.writerow([sel]) 36 results = model.wv.most_similar(positive=[sel]) 37 for result in results: 38 print(result) 39 40
補足情報(FW/ツールのバージョンなど)
Python3.7.1
回答1件
あなたの回答
tips
プレビュー