Различает ли gensim Doc2Vec одно и то же предложение с положительным и отрицательным контекстом? - PullRequest
0 голосов
/ 26 апреля 2018

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

Разве gensim Doc2Vec различает одно и то же предложение с положительным и отрицательным контекстом?

Например:

Предложение A: «Я люблю машинное обучение»

Предложение B: «Я не люблю машинное обучение»

Если я тренирую предложения A и B с помощью doc2vec и нахожукосинусное сходство между их векторами:

  1. Сможет ли модель различить предложение и дать косинусное сходство очень меньше 1 или отрицательное?
  2. Или Модель будет представлять оба предложенияочень близко в векторном пространстве и дают косинусное сходство, близкое к 1, поскольку в основном все слова одинаковы, кроме отрицательного (не надо).

Кроме того, если я тренируюсь только в предложении А и пытаюсьСделайте вывод из предложения B, будут ли оба вектора близки друг к другу в векторном пространстве.?

Я бы попросил сообщество NLP и экспертов Doc2Vec помочь мне разобраться в этом.

Заранее спасибо !!

1 Ответ

0 голосов
/ 26 апреля 2018

По сути, все, что делает алгоритм «Вектор абзаца» за gensim Doc2Vec, - это найти вектор, который (вместе с нейронной сетью) хорош для предсказания слов, которые появляются в тексте. Так что да, тексты с почти одинаковыми словами будут иметь очень близкие векторы. (Нет синтаксического понимания, что определенные слова в определенных местах имеют большой обратный эффект.)

Тем не менее, даже такие векторы могут быть в порядке (хотя и не современными) при анализе настроений. Один из способов, которым оригинальная статья «Векторы параграфа» оценивала удобство использования векторов, была оценка настроения коротких обзоров фильмов. (Они были длиннее одного предложения - до сотен слов.) При обучении классификатора на векторах документов классификатор проделал довольно хорошую работу и лучше других базовых методов при оценке негативности / позитивности обзоров.

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

Так что вам придется попробовать это с реальным обучающим корпусом из десятков тысяч различных текстовых примеров (потому что этот метод не очень хорошо работает с наборами данных размером с игрушку) и шагом классификатора после векторизации.

Обратите также внимание, что в чистом Doc2Vec добавление известных меток (например, «положительный» или «отрицательный») во время обучения (рядом или вместо любых уникальных тегов на основе идентификатора документа) иногда может помочь результирующему векторному пространству быть более чувствительны к различию, которое вы хотите. И другие варианты техники, такие как «FastText» или «StarSpace», более непосредственно интегрируют известные метки в векторизацию таким образом, чтобы это могло помочь.

Однако лучшие результаты для коротких предложений, вероятно, будут учитывать относительный порядок слов и грамматический разбор. Вы можете увидеть демонстрацию такого более продвинутого метода на странице исследовательской группы НЛП Стэнфорда:

http://nlp.stanford.edu:8080/sentiment/rntnDemo.html

Хотя посмотрите в комментариях различные примеры сложных случаев, с которыми он все еще борется.

...