Python: gensim: RuntimeError: vous devez d'abord construire du vocabulaire avant d'entraîner le modèle
Je sais que cette question a été posée déjà, mais je n'étais pas encore en mesure de trouver une solution pour elle.
Je voudrais utiliser gensim de word2vec
sur un custom ensemble de données, mais maintenant, je suis encore à essayer de comprendre dans quel format le jeu de données. J'ai eu un coup d'oeil à ce post où l'entrée est une liste de listes (une grande liste contenant d'autres listes qui sont sous les peines de la NLTK Brown corpus). Donc j'ai pensé que c'est le format d'entrée pour la commande word2vec.Word2Vec()
. Cependant, il ne fonctionnera pas avec mon petit jeu de test et je ne comprends pas pourquoi.
Ce que j'ai essayé:
Cela a fonctionné:
from gensim.models import word2vec
from nltk.corpus import brown
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
brown_vecs = word2vec.Word2Vec(brown.sents())
Cela n'a pas fonctionné:
sentences = [ "the quick brown fox jumps over the lazy dogs","yoyoyo you go home now to sleep"]
vocab = [s.encode('utf-8').split() for s in sentences]
voc_vec = word2vec.Word2Vec(vocab)
Je ne comprends pas pourquoi il ne fonctionne pas avec la "fantaisie" des données, même si il a la même structure de données que les phrases du Brown corpus:
vocab:
[['the', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dogs'], ['yoyoyo', 'you', 'go', 'home', 'now', 'to', 'sleep']]
brun.cents(): (le début de)
[['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', 'Friday', 'an', 'investigation', 'of', "Atlanta's", 'recent', 'primary', 'election', 'produced', '``', 'no', 'evidence', "''", 'that', 'any', 'irregularities', 'took', 'place', '.'], ['The', 'jury', 'further', 'said', 'in', 'term-end', 'presentments', 'that', 'the', 'City', 'Executive', 'Committee', ',', 'which', 'had', 'over-all', 'charge', 'of', 'the', 'election', ',', '``', 'deserves', 'the', 'praise', 'and', 'thanks', 'of', 'the', 'City', 'of', 'Atlanta', "''", 'for', 'the', 'manner', 'in', 'which', 'the', 'election', 'was', 'conducted', '.'], ...]
Quelqu'un peut s'il vous plaît dites-moi ce que je fais mal?
source d'informationauteur user56591
Vous devez vous connecter pour publier un commentaire.
Par défaut
min_count
dans gensim de Word2Vec est réglé à 5. Si il n'y a pas de mot dans votre vocabulaire avec une fréquence supérieure à 4, votre vocabulaire sera vide et d'où l'erreur. EssayezD'entrée à l'gensim de Word2Vec peut être une liste de phrases ou d'une liste de mots ou de liste de liste de phrases.
E. g.
construire le vocabulaire avant la formation
il suffit de consulter le lien pour les informations détaillées