Я относительно новичок в НЛП и пытаюсь создать свои собственные вложения слов, обученные в моем личном корпусе документов.
Я пытаюсь реализовать следующий код для создания своих собственных настроек:
model = gensim.models.Word2Vec(sentences)
с предложениями, являющимися списком предложений.
Поскольку я не могу пропустить тысячи и тысячи предложений, мне нужен итератор
# with mini batch_dir a directory with the text files
# MySentences is a class iterating over sentences.
sentences = MySentences(minibatch_dir) # a memory-friendly iterator
Я нашел это решение от создателя gensim:
class MySentences(object):
def __init__(self, dirname):
self.dirname = dirname
def __iter__(self):
for fname in os.listdir(self.dirname):
for line in open(os.path.join(self.dirname, fname)):
yield line.split()
Это не работает для меня.
Как я могу создать итератор, если я знаю, как получить список предложений из каждого документа?
И второй очень связанный вопрос:
Если я стремлюсь сравнивать сходство документов в определенном корпусе, всегда лучше создавать с нуля вложения слов со всеми документами этого конкретного корпуса, чем использовать GloVec или word2vec?
Количество документов составляет около 40000.
ура
Больше предварительно