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

#python #nlp #prediction #word2vec #language-model

#python #нлп #предсказание #word2vec #языковая модель

Вопрос:

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

Я попытался сделать это с помощью модели word2vec и удалил косинусное сходство или расстояние WMD двух предложений, но это дает сходство только на основе сходства векторов слов, а не последовательности слов.

Итак, если мы введем входные данные в виде 2 предложений:

Предложение 1 — «Я иду в магазин»

Предложение 2 — «собираюсь в магазин»

вывод должен указывать, что предложение неверно или имеет сходство 20% или менее

В то время как модель word2vec показывает 100% сходство, поскольку введенные слова одинаковы независимо от порядка. Поэтому я думаю, что его нельзя использовать для сравнения порядка слов. Любые другие предложения также могут быть очень полезными.

Ответ №1:

Я думаю, вы не до конца поняли, как работает word2vec. Он обучается как языковая модель, но это не так. Это способ кодирования слов естественного языка в непрерывные пространственные векторы, которые можно использовать позже для моделирования языка, включая и другие задачи.

В вашем примере выше вы получаете 100% сходство, потому что word2vec, который вы использовали, скорее всего, был обучен с помощью метода «мешок слов». Он не заботится о порядке появления слов, только о контексте.

Если вам нужно что-то для работы из коробки, я бы предложил вам проверить, есть ли доступные инструменты в StanfordNLP (https://stanfordnlp.github.io/stanfordnlp/installation_download.html ).

Комментарии:

1. Да, я тоже это понял. Я просто излагал то, что пытался сделать. Но это не сработало, поскольку модель word2vec содержит только векторы слов, которые можно использовать для сравнения контекста, а не порядка слов в предложении. Есть ли у вас какое-либо решение, которое я мог бы попробовать для порядка слов? Спасибо за ответ.

2. @RahulHalappanavar это целая область изучения: языковое моделирование. существует множество возможных моделей

3. Как упоминалось @c2huc2hu языковое моделирование — это целая область изучения. Зависит от того, что вы хотите сделать и т.д. Я бы посоветовал вам взглянуть на векторы пропуска мыслей arxiv.org/abs/1506.06726 . Также есть хорошая реализация tensorflow github.com/tensorflow/models/tree/master/research/skip_thoughts . Эта модель дает вам сходство между предложениями, но на уровне настроения. Только для «проверки грамматики» я уверен, что StanfordNLP, который я вставил в свой ответ, должен содержать инструмент. Удачи!