nlp - 임베딩이란 - 한글 임베딩



왜 유사점이 gensim.word2vec에있는 두 개의 bag-of-word를 이렇게 계산 했는가? (1)

def n_similarity(self, ws1, ws2):
    v1 = [self[word] for word in ws1]
    v2 = [self[word] for word in ws2]
    return dot(matutils.unitvec(array(v1).mean(axis=0)), matutils.unitvec(array(v2).mean(axis=0)))

이것은 gensim.word2Vec에서 발췌 한 코드입니다. 두 개의 단일 단어의 유사성을 코사인 거리로 계산할 수 있지만 두 단어 집합은 무엇인지 알고 있습니까? 코드는 각 wordvec의 평균을 사용한 다음 두 평균 벡터의 코사인 거리를 계산합니다. Word2vec에서 몇 가지를 알고 있습니다. 그런 프로세스의 기초가 있습니까?


모든 단어 벡터의 평균을 취하는 것은 그것들을 단일 벡터로 줄이는 가장 간단한 방법이므로 코사인 유사성을 사용할 수 있습니다. 직관은 모든 단어 벡터를 합하면 결과에 의미 (의미)가 조금씩 생기는 것입니다. 그런 다음 벡터의 수를 나누어 더 큰 단어 모음이 더 긴 벡터로 끝나지 않도록합니다 (어쨌든 코사인 유사성에 중요하지 않음).

전체 문장을 단일 벡터로 축소하는 다른 방법은 복잡합니다. 나는 SO에 관한 관련 질문 에 그것에 대해 조금 썼다. 그 이후로 많은 새로운 알고리즘이 제안되었습니다. 더 쉽게 접근 할 수있는 word2vec 중 하나는 단락 벡터 입니다.이 단락 벡터word2vec 익숙하다면 이해하지 않아도됩니다.