2017-09-19 3 views
0

나는 인덱스가 단어이고 내가 각 단어마다 100d 벡터로 포함되도록 플로트 번호가있는 100 개의 열이있는 DataFrame을 가지고 있습니다. 내 메서드를 사용할 수 있도록 gensim model object 내 DataFrame 개체를 변환하고 싶습니다; 특별히 gensim.models.keyedvectors.most_similar()을 사용하여 하위 집합 내에서 유사한 단어를 검색 할 수 있습니다.Pandas DataFrame에로드 된 삽입을 Gensim 모델로 전환하는 방법은 무엇입니까?

이렇게하는 것이 바람직한 방법은 무엇입니까?

감사

답변

1

이 일의 "선호"방법이지만, gensim가 기대하는 형식이 복제 아주 쉽게 무엇인지 확실하지 :

data = pd.DataFrame([[0.15941701, 0.84058299], 
        [0.12190033, 0.87809967], 
        [0.06293788, 0.93706212]], 
        index=["these", "be", "words"]) 

np.savetxt('test.txt', data.reset_index().values, 
      delimiter=" ", 
      header="{} {}".format(len(data), len(data.columns)), 
      comments="", 
      fmt=["%s"] + ["%.18e"]*len(data.columns)) 

헤더는 2 개 공간 분리 정수, 수 어휘의 단어와 단어 벡터의 길이. 각 행의 첫 번째 열은 단어 자체입니다. 나머지 열은 벡터라는 단어의 요소입니다. fmt 이상한 점은 첫 번째 요소를 문자열로 서식 지정하고 나머지는 float로 서식을 지정하는 것입니다.

다음 gensim이를로드 할 수있는 무엇 :

import gensim 

from gensim.models.keyedvectors import KeyedVectors 
word_vectors = KeyedVectors.load_word2vec_format('test.txt', binary=False) 

word_vectors.similarity('these', 'words')