2014-05-19 9 views
14

매개 변수Gensim 기차 word2vec - 및 전처리 내가 이탈리아어 위키 피 디아 "<a href="http://dumps.wikimedia.org/itwiki/latest/itwiki-latest-pages-articles.xml.bz2">http://dumps.wikimedia.org/itwiki/latest/itwiki-latest-pages-articles.xml.bz2</a>"을 사용 gensim에서 word2vec 모델을 학습하는 것을 시도하고있다

그러나,이 신체에 가장 적합한 전처리 무엇인지 모르겠습니다.

Gensim 모델은 토큰 화 된 문장의 목록을 허용합니다. 첫 번째 시도는 Gensim의 표준 WikipediaCorpus 전 처리기를 사용하는 것입니다. 이것은 각 기사를 추출하고 구두점을 제거하고 공백에 단어를 나눕니다. 이 도구를 사용하면 각 문장이 전체 모델에 해당하므로이 사실이 모델에 미치는 영향에 대해서는 확신 할 수 없습니다.

다음은 기본 매개 변수를 사용하여 모델을 학습합니다. 불행히도 훈련을 마치면 나는 매우 의미있는 유사성을 얻지 못하는 것 같습니다.

이 작업을 위해 위키 백과 코퍼스에서 가장 적절한 전처리 도구는 무엇입니까?

from gensim.corpora import WikiCorpus 
import logging 
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) 
corpus = WikiCorpus('itwiki-latest-pages-articles.xml.bz2',dictionary=False) 
max_sentence = -1 

def generate_lines(): 
    for index, text in enumerate(corpus.get_texts()): 
     if index < max_sentence or max_sentence==-1: 
      yield text 
     else: 
      break 

from gensim.models.word2vec import BrownCorpus, Word2Vec 
model = Word2Vec() 
model.build_vocab(generate_lines()) #This strangely builds a vocab of "only" 747904 words which is << than those reported in the literature 10M words 
model.train(generate_lines(),chunksize=500) 

답변

7

귀하의 접근 방식은 괜찮 :

이 내 첫 재판의 코드 (이 질문은 너무 광범위 경우 관련 튜토리얼/문서를 가리키는 나를 도와주세요).

model.build_vocab(generate_lines()) #This strangely builds a vocab of "only" 747904 words which is << than those reported in the literature 10M words 

이 (기본값은 min_count=5이다) 때문에 가지 치기 드문 단어 수 있습니다.

는 줄에 "캐시"일반 .txt.gz 파일로 사전 처리 기사, 한 문장 (문서)를 고려할 수, 계산 속도를, 그리고 단순히 word2vec.LineSentence 코퍼스를 사용합니다. 이렇게하면 모든 반복에서 bzip 된 wiki XML을 구문 분석하는 시간을 절약 할 수 있습니다.

왜 word2vec가 이탈리아어 위키에서 "의미있는 유사점"을 만들어 내지 못하는 이유는 무엇인지 모르겠습니다. 영어 위키가 잘 작동하는 것 같습니다. here을 참조하십시오.

+0

감사합니다, 지금까지 word2vec 및 Gensim를 사용하여 좋은 초기 경험을했다. 그러나, 현재의 응용 프로그램에 대한 현재의 한계는 어휘가 훈련하는 동안 온라인으로 배울 수없는 것 같습니다. 아직 자세히 보지 못했지만 어휘를 온라인으로 확장 할 수있는 가능성을 부여하여 코드를 수정할 수 있는지 궁금합니다 ...이 점에 대해 생각하고 있습니까? 감사! –

3

나는 위키 피 디아 코퍼스를 마사지하고 벡터를 추출하는 프로젝트를 진행 해왔다. 가 곧 이탈리아 벡터를 생성 할 수 있지만, 경우에 당신이 한 번 봐 걸릴 자신에 그것을 할 : https://github.com/idio/wiki2vec