2016-12-19 2 views
0

Я учусь Doc2Vec модель из gensim библиотеки и использовать его следующим образом:Gensim Doc2Vec Исключение AttributeError: «ул» объект имеет не имеет атрибута «слова»

class MyTaggedDocument(object): 
    def __init__(self, dirname): 
     self.dirname = dirname 

    def __iter__(self): 
     for fname in os.listdir(self.dirname): 
      with open(os.path.join(self.dirname, fname),encoding='utf-8') as fin: 
       print(fname) 
       for item_no, sentence in enumerate(fin): 
        yield LabeledSentence([w for w in sentence.lower().split() if w in stopwords.words('english')], [fname.split('.')[0].strip() + '_%s' % item_no]) 
sentences = MyTaggedDocument(dirname) 
model = Doc2Vec(sentences,min_count=2, window=10, size=300, sample=1e-4, negative=5, workers=7) 

вход dirname является путь к каталогу, который имеет, для простоты всего 2 файла, расположенных с каждым файлом, содержащим более 100 строк. Я получаю следующее исключение.

Output

Кроме того, с print заявлением я мог видеть, что итератор итерации Адресной книги 6 раз. Почему это так?

Любая помощь будет оценена по достоинству.

+0

Одна вещь, разве вы не хотите, если бы не в секундах? Прямо сейчас ваши предложения содержат только стоп-слова – datawrestler

+0

Да, это ошибка, я исправил ее, но по-прежнему сохраняется та же проблема. –

ответ

0

Это выглядит как один из текстовых примеров объектов, которые должны быть в форме, как TaggedDocumentwords и tags свойств, ранее называвшихся LabeledSentence), это как-то простая строка вместо этого. Вы на 100% уверены, что ошибка в вашем скриншоте была сгенерирована именно с помощью итеративного кода, который вы включили? (Код выглядит так, как будто он может испускать приемлемые LabeledSentece объектов.)

Ваш поставляемый корпус Iterable читается один раз, чтобы выполнить начальное сканирование, которое обнаружило все слова/метки, а затем несколько раз для обучения. Сколько раз контролируется параметром iter со значением по умолчанию (в последних версиях gensim) из 5. Таким образом, начальное сканирование плюс 5 тренировок проходят равными 6 полными итерациями. (10 или более итераций распространено с Doc2Vec.)

Смежные вопросы