Генерация похожих именованных сущностей / составных существительных - PullRequest
0 голосов
/ 25 февраля 2019

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

При работе с составными существительными (такими как «автостоянка» или «Дональд Трамп») моя лучшая попытка состояла в том, чтобы вычислить похожие слова.для каждой части соединения и объединить их.Результаты очень интересны:

  • Автостоянка -> автостоянка |автомобильный зоопарк
  • Пожарная машина -> пламенная мощность |запущенный мотор
  • Дональд Трамп -> Ричард Джеопард |Джеффри Гэмбл
  • Барак Обама -> Обамас Маккейн |Освенцим Клинтон

К сожалению, это не очень убедительно.Особенно в случае именованных объектов, я хочу создать другие именованные объекты, которые появляются в аналогичных контекстах;Например:

  • Пожарная машина -> Пожарная машина |Пожарный
  • Дональд Трамп -> Барак Обама |Хиллари Клинтон
  • Ниагарский водопад -> Американские водопады |Водопад «Подкова»

Есть ли у кого-нибудь предложения о том, как этого достичь?Есть ли способ генерировать похожие именованные сущности / существительные куски?


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

1 Ответ

0 голосов
/ 06 марта 2019

Если вы еще не видели его, вы можете проверить sense2vec, который позволяет изучать контекстно-зависимые векторы, включая теги части речи или метки сущностей.Пример быстрого использования расширения spaCy:

s2v = Sense2VecComponent('/path/to/reddit_vectors-1.1.0')
nlp.add_pipe(s2v)
doc = nlp(u"A sentence about natural language processing.")
most_similar = doc[3]._.s2v_most_similar(3)
# [(('natural language processing', 'NOUN'), 1.0),
#  (('machine learning', 'NOUN'), 0.8986966609954834),
#  (('computer vision', 'NOUN'), 0.8636297583580017)]

Смотрите здесь для интерактивной демонстрации с использованием модели sense2vec, обученной комментариям Reddit.Используя эту модель, «парковка» возвращает такие вещи, как «парковка» и «гараж», а «Дональд Трамп» дает вам «Сару Пэйлин», «Митта Ромни» и"Барак Обама".Для неоднозначных объектов вы также можете включить метку объекта - например, «Ниагарский водопад | GPE» будет отображать термины, аналогичные геополитическим правам (GPE), например, город в отличие от реальных водопадов.,Результаты, очевидно, зависят от того, что присутствовало в данных, поэтому для еще более конкретного сходства вы также можете поэкспериментировать с тренировкой собственных векторов sense2vec.

...