Estoy tratando de usar el módulo gensim
la biblioteca de procesamiento de lenguaje natural gensim
en Python.
Los documentos dicen para inicializar el modelo:
from gensim.models import word2vec model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)
¿Qué formato espera el gensim
para las oraciones de entrada? Tengo texto crudo
"the quick brown fox jumps over the lazy dogs" "Then a cop quizzed Mick Jagger's ex-wives briefly." etc.
¿Qué procesamiento adicional necesito para publicar en word2fec
?
ACTUALIZACIÓN: Aquí es lo que he intentado. Cuando carga las frases, no consigo nada.
>>> sentences = ['the quick brown fox jumps over the lazy dogs', "Then a cop quizzed Mick Jagger's ex-wives briefly."] >>> x = word2vec.Word2Vec() >>> x.build_vocab([s.encode('utf-8').split( ) for s in sentences]) >>> x.vocab {}
Una lista de frases utf-8
. También puede transmitir los datos desde el disco.
Asegúrese de que sea utf-8
, y divídalo:
sentences = [ "the quick brown fox jumps over the lazy dogs", "Then a cop quizzed Mick Jagger's ex-wives briefly." ] word2vec.Word2Vec([s.encode('utf-8').split() for s in sentences], size=100, window=5, min_count=5, workers=4)
Como alKid
señaló alKid
, alKid
utf-8
.
Hablando de dos cosas adicionales de las que podría tener que preocuparse.
En lugar de cargar una gran lista en la memoria, puedes hacer algo como:
import nltk, gensim class FileToSent(object): def __init__(self, filename): self.filename = filename self.stop = set(nltk.corpus.stopwords.words('english')) def __iter__(self): for line in open(self.filename, 'r'): ll = [i for i in unicode(line, 'utf-8').lower().split() if i not in self.stop] yield ll
Y entonces,
sentences = FileToSent('sentence_file.txt') model = gensim.models.Word2Vec(sentences=sentences, window=5, min_count=5, workers=4, hs=1)