2017-04-24 2 views
1

나는 word2vec 튜토리얼을 살펴보고 Text8Corpus의 주어진 예제 데이터로 학습 할 수있었습니다. Tutorial link하지만 사용자 지정 데이터를 테스트하려고 시도했지만 모델은 교육이 아닙니다. 입력은 파이썬리스트에서 유니 코드 문자열 형식입니다. 그리고 min_count도 1로 설정되어 있습니다. 위의 입력 형식에서 학습이 아니기 때문에 주어진 튜토리얼에서 입력 유형을 확인하려고했지만 class 'gensim.models.word2vec.Text8Corpus'형식을 수신합니다. 따라서 유니 코드 문자열 문장의 내 사용자 지정 데이터를 목록으로 작성하는 방법을 모릅니다. 누구든지 올바른 방향으로 나를 인도 해 주실 수 있습니까? 입력의Word2Vec 모델은 트레이닝이 아니며 입력 문장이 문장의 시퀀스와 토큰 화 된 단어 모두 목록에서 시도했습니다

예 : 'u'dont'u'let 'u'him'u'treat [u'SENTENCE_START 'u'you'u'like 'U' 쓰레기 ', u'SENTENCE_END']] 내가 튜토리얼 예에서 이해 word2vec하는 훈련이 전부

sentences_clean = [] 
data = pandas.read_excel('from my folder/3_captions.xlsx', parse_cols = "A") 
sentences = data.iloc[:, 0].tolist() 

for line in sentences: 
    line = re.sub(r"""["?,$!]|'(?!(?<! ')[ts])""", "", line) 
    line = re.sub(r"\.", "", line) 
    line = line.lower().replace("'", "") 
    sentences_clean.append(line) 

tokenized_sentences = [nltk.word_tokenize(sent) for sent in sentences_clean] 

import gensim, logging 
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) 
model_word2vec = gensim.models.Word2Vec(sentences_clean, min_count=1, size=300, workers=4) 
model_word2vec.save('/Users/rajesh/Documents/word2vec') 
print (model_word2vec.similarity('freudian','slip')) 

? 그러나이 자습서는 아래에서 작동합니다.

sentences = word2vec.Text8Corpus('/Users/rajesh/Downloads/text8') 
model_word2vec = gensim.models.Word2Vec(sentences, min_count=1, size=20) 
print (model_word2vec.similarity('queen','woman')) 
>>> 0.659536897647 
+1

오류가 발생합니까 아니면 올바른 출력을 제공하지 않는 문제입니까? 그럼에도 불구하고 나는 당신이 먼저 문장을 토큰화할 필요가 있다고 생각한다. – umutto

+0

오류를주지 않았다. 나 또한 nltk로 문장을 토큰 화하려고 노력했다. 토큰 화 된 입력은 다음과 같습니다 : [u'SENTENCE_START ', u'i', u'guess ', u'i', u'just ', u'dont', u'understand ', u'why', u'i ' , u''ways ', u'have', u'to ', u'be', u'the ', u'fall', u'guy ', u'SENTENCE_END'] –

+0

나는 어떤 오류라도 내지 않았다. 또한 내가 단어 유사성을 검사하려고 할 때, 나는 단어가 vocab 오류가 아니라는 것을 받았습니다. 그러나 나는 그 모델이 심지어 처음부터 훈련을 받았다고 생각하지 않는다. –

답변

0

"교육이 필요 없음"을 어떻게 알 수 있습니까?

표시된 코드에서와 같이 tokenized_sentences 목록 대신 Word2Vec에 sentences_clean을 제공 하시겠습니까?

(sentences_clean 인 경우 목록 - 중 - 문자열, Word2Vec에 주어진 각각의 문자열 목록 -의 - 문자 모양을하고 Word2Vec 모델에 의해 배운 유일한 '말'은 단일 문자 될 것입니다.)