Уменьшение размера FastText Word2Vec от Facebook

Я создаю модель машинного обучения, которая будет обрабатывать документы и извлекать из них ключевую информацию. Для этого мне нужно использовать встраивание слов для вывода OCRed. У меня есть несколько разных вариантов встраивания (Google word2vec, Stanford, Facebook FastText), но меня больше всего беспокоят слова OOV, так как на выходе OCR будет много слов с ошибками. Например, я хочу, чтобы встраивание было таким, чтобы выходные данные для встраивания и встраивания (e, пропущенные OCR) имели определенный уровень сходства. Меня не очень волнует связанная с этим контекстная информация.

Я выбрал FastText от Facebook, так как он также дает вложения для слов OOV. Меня беспокоит только размер вложений. Размер вектора модели FastText имеет длину 300. Есть ли способ уменьшить размер возвращаемого вектора слова (я думаю об использовании PCA или любого другого метода уменьшения размерности, но, учитывая размер векторов слов, это может быть трудоемкая задача)?


person ironhide012    schedule 19.11.2019    source источник
comment
Вы можете указать размер вектора меньше 300 измерений при обучении модели - и модель будет пропорционально меньше. Но почему размер вызывает беспокойство? (Вы достигли пределов системных ресурсов при использовании обычных размеров?)   -  person gojomo    schedule 20.11.2019
comment
Кроме того, хотя чувствительность FastText к фрагментам подслов (символьные н-граммы) может немного помочь с ошибками распознавания текста, одного этого может быть недостаточно. Вместо этого вы можете применить какой-то другой процесс проверки орфографии, чтобы заменить слова, которые не существуют в других корпусах без сбоев, другими наилучшими предположениями (на основе расстояния редактирования, относительной частоты слов или контекстных слов) реальными слова.   -  person gojomo    schedule 20.11.2019


Ответы (1)


Существует встроенная функциональность, но вам следует установить fasttext из github (клонировать репо и установить pip.), Поскольку в настоящее время (2020-03-04) нет доступных с pip install fasttext < / сильный>:

import fasttext
import fasttext.util

ft = fasttext.load_model('cc.en.300.bin')
print(ft.get_dimension())

fasttext.util.reduce_model(ft, 100)
print(ft.get_dimension())

Этот код должен уменьшить длину встраивания 300 векторов до 100.

Ссылка на официальную документацию: https://fasttext.cc/docs/en/crawl-vectors.html

person Pedro Muñoz    schedule 04.03.2020
comment
Вот прямая ссылка на инструкции по установке: github.com/facebookresearch/fastText/ дерево / мастер / - person Gearoid Murphy; 19.03.2020