Как поставить максимальную частоту словарного запаса в doc2vec - PullRequest
1 голос
/ 06 июня 2019

Doc2vec при создании словаря имеет возможность поместить минимальное вхождение слова в документы для включения в словарь в качестве параметра min_count.

model = gensim.models.doc2vec.Doc2Vec(vector_size=200, min_count=3, epochs=100,workers=8)

Как можно исключить слова, которые появляются слишком далеко?часто, с каким-то параметром?

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

1 Ответ

2 голосов
/ 06 июня 2019

Нет явного параметра max_count в gensim's Word2Vec.

Если вы уверены, что некоторые токены не имеют смысла, вам следует предварительно обработать текст, чтобы устранить их.

Существует также опция trim_rule, которую можно передать как экземпляр модели, или build_vocab(), где ваша собственная функция может отбрасывать некоторые слова;см. документацию gensim по адресу:

https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec

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

Классический sample параметр Word2Vec также управляет понижающей дискретизацией высокочастотных слов, чтобы модель не тратила слишком много относительных усилий на избыточное обучение обильным словам.Чем более агрессивно (меньше) это значение, тем больше случаев высокочастотных слов будет пропущено во время обучения.Значение по умолчанию 1e-03 (0.001) очень консервативно;в очень больших корпусах естественного языка я видел хорошие результаты вплоть до 1e-07 (0.0000001) или 1e-8 (0.00000001) - так в другой области, где некоторые токены с более низким значением очень часты, аналогично агрессивныдаунсэмплинг стоит попробовать.

Более новая опция ns_exponent изменяет отрицательную выборку для корректировки относительного предпочтения менее частых слов.В оригинальной работе word2vec использовалось фиксированное значение 0,75, но некоторые исследования с тех пор показали, что другие области, такие как системы рекомендаций, могут извлечь выгоду из других значений, которые более или менее чувствительны к фактическим частотам токенов.(Соответствующий документ связан в gensim документах для параметра ns_exponent.)

...