2017-04-20 7 views
0

spacys 기본 어휘를 업데이트 할 수 있는지 궁금합니다. nlp.vocab.load_vectors_from_bin_loc(\path) spaCy 어휘 업데이트

과 함께하지만 내 신체의 단어를 많이 이후 내 모델로 벡터 '그런가 gensim

  • 로드 내 자신의 신체에

    • 실행 word2vec : 내가 일을 시도하고 이것이다 spacys 기본 어휘에서 가져온 벡터를 사용할 수 없습니다. 누락 된 유형을 추가하는 (쉬운) 방법이 있습니까?

      편집 :
      혼합 벡터는 문제가 될 수 있습니다. 그래서 내 질문은 :
      사용자 정의 어휘를 spacy로 가져올 수 있습니까?

  • 답변

    0

    이것은 다음 버전에서 훨씬 쉽습니다. 이번 주에야 나올 것입니다. 그냥 테스트를 마친 것입니다. 지금은 기본적 적응으로

    는 "데이터"디렉토리가 spacy.en 모듈 디렉토리 내에있는 데이터/Vocab의/vec.bin 파일을로드 BZ2 파일 사용 spacy.vocab에서 vec.bin 파일을 만듭니다 .write_binary_vectors spaCy의 vec.bin 파일을 바꾸거나 실행시 nlp.vocab.load_rep_vectors를 바이너리 파일의 경로로 호출하십시오. 위의 내용은 처음에는 약간 불편했지만 바이너리 파일 형식은 훨씬 작고로드가 빠르고 벡터 파일은 상당히 큽니다. GloVe는 bzip이 아닌 gzip 형식으로 배포됩니다.

    관심 있으신 분 : GloVe 벡터를 사용하고 계시거나, 자신의 데이터로 훈련 한 것이 있습니까? 자신의 데이터라면 Gensim을 사용 했습니까? 이 작업을 훨씬 더 쉽게하고 싶습니다. 그래서 당신이보고 싶은 작업 흐름에 대한 제안을 고맙게 생각합니다. 당신의 벡터는 기본적으로로드 할 수 있도록 런타임에서

    로드 새로운 경로를 선택적으로

    from spacy.vocab import write_binary_vectors 
        import spacy.en 
    
        from os import path 
    
        def main(bz2_loc): 
         bin_loc = path.join(path.dirname(spacy.en.__file__), 'data', 'vocab', 'vec.bin') 
         write_binary_vectors(bz2_loc, bin_loc) 
    
    if __name__ == '__main__': 
        plac.call(main) 
    
    +0

    그것은 멋진 것의 vec.bin를 교체 그들에게

    import spacy.vocab def set_spacy_vectors(nlp, binary_loc, bz2_loc=None): if bz2_loc is not None: spacy.vocab.write_binary_vectors(bz2_loc, binary_loc) write_binary_vectors(bz2_input_loc, binary_loc) nlp.vocab.load_rep_vectors(binary_loc) 

    변환 spacy.vocab 벡터를 gensim으로 사용 가능한 형식으로 쉽게 덤프하고, 새로운 코퍼스에서 gensim으로 재 훈련 한 다음 Spacy에서 다시로드하십시오. 이것은 현재 직관적입니까? – geoffn91