Как загрузить предложения в Python gensim? - программирование

Как загрузить предложения в Python gensim?

Я пытаюсь использовать word2vec модуль из gensim библиотеки обработки естественного языка в Python.

Документы говорят инициализировать модель:

from gensim.models import word2vec
model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)

В каком формате gensim ожидает ввода предложений? У меня есть исходный текст

"the quick brown fox jumps over the lazy dogs"
"Then a cop quizzed Mick Jagger ex-wives briefly."
etc.

Какую дополнительную обработку мне нужно отправить в word2fec?


ОБНОВЛЕНИЕ: Вот что я пробовал. Когда он загружает предложения, я ничего не получаю.

>>> sentences = ['the quick brown fox jumps over the lazy dogs',
             "Then a cop quizzed Mick Jagger ex-wives briefly."]
>>> x = word2vec.Word2Vec()
>>> x.build_vocab([s.encode('utf-8').split( ) for s in sentences])
>>> x.vocab
{}
4b9b3361

Ответ 1

Список предложений utf-8. Вы также можете передавать данные с диска.

Убедитесь, что он utf-8, и разделите его:

sentences = [ "the quick brown fox jumps over the lazy dogs",
"Then a cop quizzed Mick Jagger ex-wives briefly." ]
word2vec.Word2Vec([s.encode('utf-8').split() for s in sentences], size=100, window=5, min_count=5, workers=4)

Ответ 2

Как указано alKid, сделайте это utf-8.

Говоря о двух дополнительных вещах, о которых вам, возможно, придется беспокоиться.

  • Вход слишком велик, и вы загружаете его из файла.
  • Удаление стоп-слов из предложений.

Вместо того, чтобы загружать большой список в память, вы можете сделать что-то вроде:

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

И затем,

sentences = FileToSent('sentence_file.txt')
model = gensim.models.Word2Vec(sentences=sentences, window=5, min_count=5, workers=4, hs=1)