word2ve c, используя тело документа или ключевые слова в качестве учебного корпуса - PullRequest
0 голосов
/ 27 апреля 2020

Я хотел бы обучить модель word2vec, используя неупорядоченный список ключевых слов и категорий для каждого документа. Поэтому мой словарный запас довольно мал - около 2,5 тыс. Токенов.

Повысится ли производительность, если на этапе обучения я использую реальные предложения из документа?

Из примера:

doc_keywords = ['beach', 'holiday', 'warm']
doc_body = 'Going on a beach holiday it can be very warm'

Если есть какая-то польза от использования полных документов, может ли кто-нибудь также объяснить, почему это так?

Поскольку модель предсказывает следующее слово в документе, какая польза для его изучения? very -> warm как два слова, которые часто встречаются вместе, учитывая, что very нет в моем словаре.

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Ваш набор данных кажется очень маленьким - возможно, слишком маленьким, чтобы ожидать хороших векторов word2ve c. Но, по крайней мере, небольшой набор данных означает, что не нужно слишком много времени, чтобы попробовать разные вещи.

Итак, лучший ответ (и единственный, который действительно учитывает уникальность ваших данных и целей проекта): получите ли вы лучшие конечные векторы слов для вашего проекта c нуждается в обучении только по ключевым словам или более длинным документам?

Два потенциальных источника преимуществ от использования полных текстов:

  • Те Менее интересные слова могут все еще помочь выявить тонкости смысла в полном векторном пространстве. Например, контраст между 'warm' и 'hot' может стать более четким, когда эти слова вынуждены предсказывать другие связанные слова, которые встречаются с каждым в разных пропорциях. (Но такие качества векторов word2ve c требуют большого количества едва различимых примеров реального использования - поэтому такое преимущество может быть невозможным в небольшом наборе данных.)

  • Использование реального тексты сохраняют изначальные влияния близости - слова ближе друг к другу имеют большее влияние. Подход, основанный только на ключевых словах, может привести к скремблированию этих исходных приближений в зависимости от того, как вы превращаете необработанные полные тексты в сокращенные ключевые слова. (В частности, вы определенно не хотите всегда сообщать о ключевых словах в некотором порядке сортировки базы данных - так как это может создать ложное влияние между ключевыми словами, которые сортируются рядом друг с другом, в отличие от появляются рядом друг с другом на естественном языке.)

С другой стороны, добавление большего количества слов делает модель больше, а обучение медленнее, что может ограничить объем обучения или экспериментов, которые вы могу бегать. И сохранение очень редких слов - у которых недостаточно разнообразных примеров использования, чтобы самим получить хорошие векторы слов - имеет тенденцию действовать как «шум», который снижает качество других векторов слов. (Вот почему отбрасывание редких слов с min_count по умолчанию равным 5 - или больше в больших корпусах - почти всегда хорошая идея.)

Итак, нет точного ответа на который будет быть лучше: разные факторы и другие данные / параметры / цели будут тянуть по-разному. Вы хотите попробовать это несколькими способами.

1 голос
/ 27 апреля 2020

Мои заметки можно суммировать по следующим пунктам:

  • Прежде всего, я не думаю, что передача списка ключевых слов помогла бы модели gensim.models.Word2Vec. Как вы сказали, причина использования word2ve c заключается в том, чтобы каким-то образом почувствовать окружающие слова; Как он может выполнять эту работу со случайным списком ключевых слов?

  • Во-вторых, в словаре должны быть одни и те же слова в документах. Таким образом, ваш словарный запас должен содержать very.

  • Чем больше данных вы используете, тем более полезной становится модель. Итак, 2500 токенов недостаточно велики. Например, первой версией word2ve c была модель Skipgram , опубликованная в 2014/2015 году Google. Словарный запас, который использовал Google, составлял около 692 000 слов.

  • Существует две версии word2ve c, которые можно использовать: «Skipgram» и «Continuous Bag of Words (CBOW)». Оба зависят от окружающих слов. Вы можете проверить мой ответ здесь для получения дополнительной информации о том, как работает каждый из них.

...