модель не изучает некоторые слова - PullRequest
0 голосов
/ 13 мая 2019

В настоящее время я изучаю gensim doc2model в Python3.6, чтобы увидеть сходство между предложениями.Я создал модель, но она возвращает KeyError: "word 'WORD' not in vocabulary", когда я ввожу слово, которое, очевидно, существует в наборе обучающих данных, чтобы найти аналогичное слово / предложение.Это автоматически пропускает некоторые слова, не очень важные для определения предложений?или это просто ошибка или что-то?Очень признателен, если бы у меня был какой-то выход, чтобы покрыть все появляющиеся слова в наборе данных.спасибо.

1 Ответ

0 голосов
/ 13 мая 2019

Если слово, которое вы ожидали выучить в модели, отсутствует в модели, наиболее вероятные причины:

  • его на самом деле не было, в версииМодель увидела, возможно, потому что ваш токенизация / предварительная обработка сломана.Включите ведение журнала на уровне INFO и изучите ваш корпус, как представлено в модели, чтобы убедиться, что он маркирован как задуманокорпус.По умолчанию min_count=5 отбрасывает слова с менее чем 5 вхождениями, так как такие слова не могут получить хорошие векторы для себя и эффективно служат «шумом», мешающим улучшению других векторов.

Вы можете установить min_count=1, чтобы сохранить все слова, но это скорее повредит, чем поможет вашему общему качеству вектора.Word2Vec и Doc2Vec требуют больших, разнообразных корпусов - если вам нужен хороший вектор для слова, найдите более разнообразные примеры его использования в расширенном корпусе.

(Также обратите внимание: один из простых и быстрых режимов Doc2Vec, который также часто является самым эффективным, особенно для коротких текстов, является простым режимом PV-DBOW: dm=0. Этот режим будет выделять /инициализировать случайным образом векторы слов, но затем игнорировать их для обучения, только для обучения векторов документов. Если вы используете этот режим, вы все равно можете запросить векторы слов из модели в конце - но они 'Буду просто чепухой.)

...