После вашего from gensim.models import word2vec
, word2vec
- это модуль Python - , а не функция, которую вы можете вызвать как word2vec(words1[0])
или word2vec(w)
.
Так что ваш код даже близко не подходит к этому правильно, и вы должны просмотреть документы / руководства, которые демонстрируют правильное использование класса gensim
Word2Vec
и поддерживающих методов, а затем имитировать их.
Как упоминает @ david-dale, в документах gensim
есть базовое введение для Word2Vec
:
https://radimrehurek.com/gensim/models/word2vec.html
Библиотека gensim
также объединяет в своем каталоге docs/notebooks
ряд ноутбуков Jupyter, демонстрирующих различные алгоритмы и методы. Блокнот word2vec.ipynb
показывает базовое использование Word2Vec
; Вы также можете просмотреть его через репозиторий исходного кода проекта по адресу ...
https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/word2vec.ipynb
... однако, действительно, лучше всего работать как локальная записная книжка, так что вы можете шаг за шагом проходить выполнение ячейки и пробовать разные варианты самостоятельно, возможно, даже адаптируя его для использования ваших данных.
Когда вы достигнете этого уровня, обратите внимание, что:
эти модели требуют гораздо большего, чем просто несколько предложений для обучения - поэтому в идеале вы должны иметь (а) много предложений из той же области, что и сравниваемые вами, чтобы модель могла выучить слова в эти контексты; (б) модель, подготовленную из совместимого корпуса, которую вы затем применяете к своим предложениям вне корпуса.
использование среднего значения всех слов-векторов в предложении является лишь одним относительно простым способом сделать вектор для более длинного текста; Есть много других более сложных способов. Одной альтернативой, очень похожей на Word2Vec
, является алгоритм «Вектор абзаца», также доступный в gensim
как класс Doc2Vec
.