ブログ一覧に戻る

文章を比較できる!Word Mover's Distanceとは?

gensimPythonNaturalLanguageProcessing

みなさんこんにちは!
イザナギです!

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」に比べると処理時間が長くなってしまいます。
どちらを使うべきかは、実現したいことに合わせて決める方がいいのかもしれませんね。
それでは今回はここで筆を置かせていただきます。
最後まで記事をご覧いただきありがとうございました!

関連記事

この記事に関連するおすすめです。