みなさんこんにちは!
イザナギです!
WMDではこの性質を利用して文書間の距離を求めます。 その考え方は大雑把に言えば、文書Aの語を類似する(=分散表現間の距離が小さい)語で置き換えて文書Bに変換できるならば、文書A, Bの類似度は大きい(=距離が小さい)というようなものです。https://yubessy.hatenablog.com/entry/2017/01/10/122737
pip3 install gensim
pip3 install pyemd
from gensim.models.word2vec import Word2vec
def main():
model = Word2vec.load("word2vecのモデル格納場所のパスを記入")
# 比較するテキストを分かち書き
text_list1 = ["私","は","犬","が","好き","です"]
text_list2 = ["私","は","猫","が","好き","です"]
# word mover's distanceを実行
sim_value = model.wv.wmdistance(text_list1, text_list2)
print(text_list1)
print(text_list2)
print(sim_value)
main()
そして、実行すると以下のような結果が出てくると思います。
まとめ
今回は「Word Mover's Distance」を試してみました。
この技術はTwitterなどのショートテキストを比較する際にいい結果が得られるそうです。
しかし、問題点として「word mover's distance」と同じく文章を比較する技術である「Doc2Vec」に比べると処理時間が長くなってしまいます。
どちらを使うべきかは、実現したいことに合わせて決める方がいいのかもしれませんね。
それでは今回はここで筆を置かせていただきます。
最後まで記事をご覧いただきありがとうございました!