Word2Vec работает с последовательностями текстов, где каждый текст представляет собой список строк-токенов.Вы предоставляете один документ, поэтому он будет видеть текст ['h', 'e', 'l', 'l', 'o']
, текст ['t', 'h', 'i', 's']
и т. Д.
. В результате единственные слова, которые он выучит,отдельные буквы.(Посмотрите на model.wv.index2entities
, чтобы увидеть это.)
Поместите ваш сингл doc
в список документов, это было бы быстрым решением.Например:
docs = [doc]
model = Word2Vec(doc, min_count=1)
Однако обратите внимание, что Word2Vec плохо работает на примерах размером с игрушку.Для создания полезных векторов требуются большие, разнообразные учебные тексты.Например, чтобы просто поддерживать векторы 100-мерного размера по умолчанию для Word2Vec
, принадлежащего Генсиму, у вас должен быть учебный материал с 10 000+ уникальных слов и более 5 различных вариантов использования каждого слова.
Таким образом, вы можете запустить крошечный пример, как вы пытаетесь здесь, просто чтобы убедиться, что у вас есть код, который работает и понимает интерфейсы, но не ожидайте, что результаты будут полезны.
Взгляните на учебную тетрадь, входящую в каталог gensim docs/notebooks
, для примера обучения чуть более реалистичного размера.Он также доступен для просмотра онлайн по адресу:
https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/word2vec.ipynb