2016-06-14 1 views
7

gensim.models.Word2Vec 라이브러리를 사용하면 가장 유사한 단어 목록을 찾고자하는 모델과 "단어"를 제공 할 수 있습니다 :단어의 벡터 (단어 자체가 아님)가 주어진 가장 유사한 단어 얻기

model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True) 
model.most_similar(positive=[WORD], topn=N) 

내가 입력으로 모델과 "벡터를"시스템을 제공하고, 그 벡터가 주어진 벡터에 매우 근접하다 (상단 유사한 단어를 반환하는 시스템을 요청할 가능성이 있는지 궁금). 나는 2 개 모델 (영어 및 독일어)뿐만 아니라, 내가 그들의 가장 유사한 독일어 후보를 찾을 필요가있는 몇 가지 영어 단어를 가지고있는 이중 언어 설정이 기능을 필요로

model.most_similar(positive=[VECTOR], topn=N) 

: 비슷한.

model_EN = gensim.models.Word2Vec.load_word2vec_format(model_file_EN, binary=True) 
vector_w_en=model_EN[WORD_EN] 

하고이 벡터와 독일 모델을 조회 : 내가 원하는 무엇 영어 모델에서 각 영어 단어의 벡터를 얻을 수 있습니다.

model_DE = gensim.models.Word2Vec.load_word2vec_format(model_file_DE, binary=True) 
model_DE.most_similar(positive=[vector_w_en], topn=N) 

저는 이것을 word2vec 패키지의 원래 거리 함수를 사용하여 C에서 구현했습니다. 하지만 지금은 다른 스크립트와 통합 할 수 있도록 Python으로 작성해야합니다.

gensim.models.Word2Vec 라이브러리 또는 이와 유사한 다른 라이브러리에 이미 방법이 있는지 알고 있습니까? 혼자서 구현해야합니까?

+0

는'most_similar (..)'뿐만 아니라 당신에게 점수를 반환 하는가를? 나는 당신이 작성한 커스텀 함수를 그리는 중이며 벡터의 모든 단어에 대해 'most_similar'를 호출하고 ALL의 결과를 같은 목록에 추가 한 다음 점수와 리턴을 정렬합니다. – nbryans

+0

감사합니다. 이 작업을 수행하는 기존 메서드가 없으면 다음과 같이 구현해야합니다. 어휘의 각 단어에 대해 모델에서 해당 벡터를 가져옵니다. 입력 벡터와 반환 된 코사인 유사성을 계산합니다. 그리고 가장 많이 비슷한 것을 반환하십시오. 그러나, 나는 그런 방법이 존재할지도 모른다 생각했다; 그렇지 않은 것 같습니다. – amin

답변

6

벡터에 의해 상위 N과 가장 유사한 단어를 반환 similar_by_vector 방법 :

similar_by_vector(vector, topn=10, restrict_vocab=None) 
관련 문제