2

こんにちは、Python の情報検索プログラムでクエリと返すドキュメントの間のコサイン類似度を計算しようとしています。

コサインの類似性のために、私はこの実装を使用します:

import math
def cosine_similarity(v1,v2):

    sumxx, sumxy, sumyy = 0, 0, 0
    for i in range(len(v1)):
        x = v1[i]; y = v2[i]
        sumxx += x*x
        sumyy += y*y
        sumxy += x*y
    return sumxy/math.sqrt(sumxx*sumyy)

このWebサイトでこの解決策を見つけましたが、いくつか問題があります。各ドキュメントの重みとベクトルを tf*idf します。これは、ドキュメント ベクトルとクエリ ベクトルの例です。

D: [0.028239449664633154, 0.05559373180364792, 0.02798439181455718]
Q: [0.3746433655507998, 0.526816791853616, 0.618765996788542] 

わかりましたので、問題は、コサイン類似度を実行すると、結果が 1 よりも大きくなることです。これはどのように可能ですか? コサインは 1 より大きくなりませんか? 私の推論は正しいですか?この場合、コサイン類似度を計算するのは正しいですか? 助けてください、ありがとう

4

1 に答える 1