Как загрузить предложения в 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
{}
Ответы
Ответ 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)