Размер словаря - это количество уникальных жетонов, которые можно увидеть в тренировочном корпусе.
У него не будет необходимой связи с длиной, количеством текстов, в корпусе (len(words_list_no_dupes)
) - потому что у каждого текста должно быть много слов, включая много слов, повторенных из других текстов.
Если ваш корпус не такой - если каждый текст представляет собой всего одно или два слова, например, название автомобиля, и нет слов, повторяющихся из текста в текст, - ваш корпус не подходит для word2ve c подготовка. Word2ve c требует много примеров использования каждого слова в контексте различных сочетаний окружающих слов.
Тем не менее, ваш показанный вывод немного странный: len(model1.wv.vocab)
должен быть того же размера, что и model.wv.vectors.shape[0]
- но ваш вывод показывает 58, а затем 31,752. Вы уверены, что это значения из вашего прогона?
Кроме того, ваш «полный код, который я использовал для извлечения дубликатов из списка», немного сбивает с толку намерения и следствия. Вы можете показать в своем вопросе несколько примеров того, что находится в списке в начале и в конце, чтобы, возможно, показать, почему это неправильный ввод для Word2Vec
. Например, какие первые элементы в words_flat_list
?
print(words_flat_list[0:3])
Тогда, какие первые несколько предметов в words_list_no_dupes
?
print(words_list_no_dupes[0:3])
Это то, что вы ожидали?
Это words_list_no_dupes
, который вы передаете в Word2Vec
, что он ожидает - это последовательность Python, где каждый элемент является списком строковых токенов? (Если что-то еще, вы должны ожидать странные результаты.)