Как правильно пометить список документов Gensim TaggedDocument()

Я хотел бы пометить список документов Gensim TaggedDocument(), а затем передать эти документы, как при вводе Doc2Vec().

Я прочитал документацию о TaggedDocument здесь, но Я не понял, что такое параметры words и tags.

Я пытался:

texts = [[word for word in document.lower().split()]
          for document in X.values]

texts = [[token for token in text]
          for text in texts]

model = gensim.models.Doc2Vec(texts, vector_size=200)
model.train(texts, total_examples=len(texts), epochs=10)

Но я получаю ошибку 'list' object has no attribute 'words'.


person Simone    schedule 03.04.2018    source источник


Ответы (1)


Doc2Vec ожидает итерируемую коллекцию текстов, каждый из которых (по форме похож на) пример класса TaggedDocument со свойствами words и tags.

words может быть вашим токенизированным текстом (в виде списка), но tags должен быть списком тегов документов, которые должны получать изученные векторы с помощью алгоритма Doc2Vec. Чаще всего это уникальные идентификаторы, по одному на документ. (Вы можете просто использовать простые индексы int, если это работает как способ ссылаться на ваши документы в другом месте, или строковые идентификаторы.) Обратите внимание, что tags должен быть списком тегов, даже если вы предоставляете только один для каждого документа.

Вы просто предоставляете список списков слов, тем самым вызывая ошибку.

Попробуйте вместо этого только одну строку для инициализации texts:

texts = [TaggedDocument(
             words=[word for word in document.lower().split()],
             tags=[i]
         ) for i, document in enumerate(X.values)]

Кроме того, вам не нужно вызывать train(), если вы указали texts при создании Doc2Vec. (Предоставив корпус при инициализации, Doc2Vec автоматически выполнит как первоначальное сканирование словарного запаса, так и указанное вами количество обучающих проходов.)

Для вдохновения вам следует взглянуть на рабочие примеры, такие как doc2vec-lee.ipynb работающий блокнот Jupyter, входящий в состав gensim. Это будет ваш установочный каталог, если вы сможете его найти, но вы также можете просмотреть (статическую, не запускаемую) версию в репозитории исходного кода gensim по адресу:

https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb

person gojomo    schedule 03.04.2018