2017-02-22 10 views
8

例えば、我々はgensimを使用してword2vec鉄道模型:gensimから否定的なWord2Vec類似性を解釈する

from gensim import corpora, models, similarities 
from gensim.models.word2vec import Word2Vec 

documents = ["Human machine interface for lab abc computer applications", 
       "A survey of user opinion of computer system response time", 
       "The EPS user interface management system", 
       "System and human system engineering testing of EPS", 
       "Relation of user perceived response time to error measurement", 
       "The generation of random binary unordered trees", 
       "The intersection graph of paths in trees", 
       "Graph minors IV Widths of trees and well quasi ordering", 
       "Graph minors A survey"] 

texts = [[word for word in document.lower().split()] for document in documents] 
w2v_model = Word2Vec(texts, size=500, window=5, min_count=1) 

をそして、我々は、単語間の類似度を照会するとき、我々は負の類似性スコアを見つける:

>>> w2v_model.similarity('graph', 'computer') 
0.046929569156789336 
>>> w2v_model.similarity('graph', 'system') 
0.063683518562347399 
>>> w2v_model.similarity('survey', 'generation') 
-0.040026775040430063 
>>> w2v_model.similarity('graph', 'trees') 
-0.0072684112978664561 

はどのようにして、負のスコアを解釈するのですか?

コサインの類似性の場合、範囲は[0,1]ではありませんか?

Word2Vec.similarity(x,y)関数の上限と下限は何ですか?そこはあまりドキュメントに書かれていません。https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec.similarity =(

はPythonラッパーのコードを見てみると、あまりにもありません。https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py#L1165

(可能な場合は、の.pyxコードに私を指すようにしてください類似の機能が実現される。)

+2

コサイン類似性を使用している場合、範囲は[-1、1]です。ウィキペディアの記事から: "向きの判断であり大きさではなく、同じ向きの2つのベクトルが1の余弦類似度を持ち、90度の2つのベクトルが0の類似度を持ち、正反対の2つのベクトルが-1、その大きさとは無関係です。 –

+0

コサイン類似度は内積として解釈できます。したがって、2つの単語が0の余弦類似性を有する場合、それらは完全に直交している。すなわち、それらは2つの異なる「意味」を有し、完全に無関係である。一方、否定的な類似性は、2つの単語が成分において関連しているが、反対の(または否定的な)様式であることを意味する。 –

答えて

4

コサイン類似度は、通常の余弦波と同様、-1から1の範囲である。

Cosine Wave

ソースとしては:などのよう

https://github.com/RaRe-Technologies/gensim/blob/ba1ce894a5192fc493a865c535202695bb3c0424/gensim/models/word2vec.py#L1511

def similarity(self, w1, w2): 
    """ 
    Compute cosine similarity between two words. 
    Example:: 
     >>> trained_model.similarity('woman', 'man') 
     0.73723527 
     >>> trained_model.similarity('woman', 'woman') 
     1.0 
    """ 
    return dot(matutils.unitvec(self[w1]), matutils.unitvec(self[w2]) 
-1

コサイン類似度は、比較される2つのベクトル間の角度に基づいて、-1から1の範囲とすることができる、と述べています。 gensimでの正確な実装は、正規化されたベクトルの単純な内積です。解釈の面では

https://github.com/RaRe-Technologies/gensim/blob/4f0e2ae0531d67cee8d3e06636e82298cb554b04/gensim/models/keyedvectors.py#L581

def similarity(self, w1, w2): 
     """ 
     Compute cosine similarity between two words. 
     Example:: 
      >>> trained_model.similarity('woman', 'man') 
      0.73723527 
      >>> trained_model.similarity('woman', 'woman') 
      1.0 
     """ 
     return dot(matutils.unitvec(self[w1]), matutils.unitvec(self[w2])) 

あなたは相関係数を考えるかもしれないように、あなたはこれらの値を考えることができます。値1は単語ベクトル間の完全な関係(例えば、「女性」と「女性」との比較)であり、値0は単語間の関係を表し、値-1は単語間の完全な反対の関係を表す。

関連する問題