Создать новую модель word2vec из существующей - PullRequest
0 голосов
/ 07 мая 2019

Вот модель word2vec = gensim.models.KeyedVectors.load_word2vec_format ('GoogleNews-vectors-positive300.bin.gz', двоичный = True), и она содержит слова в верхнем регистре. Как я могу создать новую модель из этой со всеми словами из нее, и эти слова в нижнем регистре? Все слова будут иметь те же векторы, что и в исходной модели.

1 Ответ

2 голосов
/ 08 мая 2019

Когда вы используете набор предварительно обученных векторов, таких как GoogleNews-vectors-negative300.bin.gz, создатель этих векторов определил, какие слова и с какой обработкой включаются.

После загрузки поиск в такой модели осуществляется путем точного сравнения строк с учетом регистра.

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

Например, что если векторный набор включает в себя отдельные векторы для «США», "США" и "США", но вы хотите, чтобы регистр "США" не зависел от регистра.Должен ли быть сохранен только один из векторов, отбрасывая остальные?Должен ли возвращаемый вектор быть средним из трех?Что, если есть какой-то странный смешанный регистр, скажем «usA», который опаздывает в списке всех векторов (и, следовательно, был относительно редким в данных обучения).Если этот вектор не имеет веса, меньшего веса или веса, равного тому, который используется в наиболее частом случае обсадной колонны?

Если вы знаете, как вы хотите разрешать такие случаи, вы, безусловно, можете изменить саму модель для измененияего отображения.Например, вы можете просмотреть список w2v_model.index2entity, который показывает слово в каждом «слоте» модели, и изменить как последний, так и словарь w2v_model.vocab, чтобы он включал только те отображения, которые вы предпочитаете.

...