2017-04-24 2 views
1

Je suis passé par le didacticiel word2vec et j'ai pu m'entraîner avec des exemples donnés de Text8Corpus. Tutorial link Mais quand j'ai essayé de tester sur des données personnalisées, le modèle ne s'entraîne pas. Les entrées sont au format de chaîne unicode dans la liste python. Et min_count est également fixé à 1. Comme il n'a pas été la formation au-dessus de format d'entrée, j'ai essayé de vérifier le type d'entrée du tutoriel donné, mais je reçois le format comme ceci: class « gensim.models.word2vec.Text8Corpus ». Donc, je ne sais pas comment former mes données personnalisées de phrases chaîne unicode dans une liste. Quelqu'un peut-il me guider dans la bonne direction?Le modèle Word2Vec ne s'entraîne pas, les phrases d'entrée essayées avec la séquence de phrase et les mots brisés dans la liste

Exemple de l'entrée: [[u'SENTENCE_START 'u'dont', u'let 'u'him', u'treat 'u'you', u'like 'u' ordures «u'SENTENCE_END »]]

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')) 

qui est tout ce qu'il ya de former à word2vec je comprends tutoriel et par exemple? Mais ce tutoriel ci-dessous fonctionne.

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

Y at-il des erreurs, ou le problème w2v ne vous donne pas la bonne sortie? Néanmoins, je crois que vous devez d'abord scinder vos phrases. – umutto

+0

Il n'a pas donné d'erreurs. J'ai aussi essayé de marquer les phrases avec nltk. alors entrée était tokenized: [u'SENTENCE_START 'u'i', u'guess', u'i 'u'just', u'dont 'u'understand', u'why 'u'i' , u'away ', u'have', u'to ', u'be', u'the ', u'fall', u'guy ', u'SENTENCE_END'] –

+0

Je n'ai pas fait d'erreur, aussi quand j'ai essayé de vérifier la similarité des mots, j'ai reçu le mot n'est pas en erreur de vocabulaire. Mais je ne pense pas que le modèle ait été formé même pour commencer. –

Répondre

0

Comment savez-vous que c'est "pas entrainé"?

Etes-vous sûr de vouloir fournir sentences_clean à Word2Vec, comme dans le code affiché, plutôt que dans la liste tokenized_sentences?

(Si sentences_clean est une liste de chaînes comme, chaque chaîne donnée à Word2Vec ressemblera à une liste-de-caractères, et les seuls « mots » apprises par votre modèle Word2Vec sera mono-caractères.)