Разве суммирование векторов вложения слов в ML разрушает их значение? - PullRequest
2 голосов
/ 08 января 2020

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

Одна вещь, которую я сделал, взяла каждое слово в абзаце, векторизовала его, используя GloVe word2ve c, а затем суммировала все векторы, чтобы создать вектор «абзаца», который я затем кормил в качестве входа для моей модели. При этом я уничтожил какой-либо смысл, которым могли обладать слова? Учитывая, что у этих двух предложений будет один и тот же вектор: «Моя собака укусила Дейва» и «Дейв укусил мою собаку», как мне обойти это? Я подхожу к этому неправильно?

Как еще можно тренировать мою модель? Если я возьму каждое слово и добавлю его в свою модель, как я узнаю, сколько слов мне нужно взять? Как мне ввести эти слова? В форме двумерного массива, где каждое слово-вектор является столбцом?

Я хочу иметь возможность обучать модель, которая может точно классифицировать текст. Удивительно, но я получаю высокий (> 90%) для относительно простой модели, такой как RandomForestClassifier, просто используя этот метод суммирования. Есть идеи?

Редактировать: Одно из предложений, которое я получил, - вместо этого описать мои данные в виде двумерного массива, где каждое слово является столбцом, над которым мог бы работать CNN. Еще одно предложение, которое я получил, заключалось в том, чтобы использовать трансферное обучение через преобразователь обнимающего лица, чтобы получить вектор для всего абзаца. Какой из них более осуществим?

1 Ответ

0 голосов
/ 08 января 2020

Я хочу обучить модели, которая может точно классифицировать текст. Удивительно, но я получаю высокий (> 90%) для относительно простой модели, такой как RandomForestClassifier, просто используя этот метод суммирования. Есть идеи?

Если вы посмотрите документы по агрегированию встраиваний слов, вы обнаружите, что это действительно иногда случается, особенно если тексты короче.

Что В противном случае я могу тренировать свою модель? Если я возьму каждое слово и добавлю его в свою модель, как я узнаю, сколько слов мне нужно взять? Как мне ввести эти слова? В виде двумерного массива, где каждое слово-вектор является столбцом?

Вы пробовали извлечение ключевых слов? Это может облегчить некоторые проблемы с усреднением

При этом я уничтожил какой-либо смысл, которым могли обладать слова?

Как вы заметили, вы выбрасываете информацию по порядку слов. Но это даже не самое худшее: в большинстве случаев для более длинных документов, если вы встраиваете все, в значении будут преобладать общие слова («как», «нравится», «делать» и т. Д. c). Кстати, см. Мой ответ на этот вопрос

Кроме этого, я видел один трюк - усреднить векторы слов, но вычел первый основной компонент PCA в матрице встраивания слов. Для подробностей вы можете увидеть, например, этот репо , который также ссылается на статью (кстати, в этой статье предлагается, что вы можете игнорировать материал «Smooth Inverse Frequency», так как сокращение основного компонента делает полезную часть) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...