Практические подходы к извлечению структурированных данных из простого текста: поиск идей и отзывов - PullRequest
0 голосов
/ 03 апреля 2020

Я являюсь членом группы Facebook для местных акций. Группа указана c для двух городов и всего, что находится между ними, поэтому пост (в основном) таков:

  • «Я собираюсь ехать из города А в город Z завтра днем ​​"
  • " Кто-нибудь хочет присоединиться к городу Z -> город A сегодня вечером "
  • " Завтра в 16:00 мне нужно ехать из города D в город Z "

Так что я думал о возможных способах создания простой поисковой системы, где люди могли бы выбирать дату / время и направление, в котором им нужно go. Я думаю, что в конце я хотел бы иметь структурированный кортеж, такой как {start: 'city A', end: 'city Z', time: '15/04/2020 14:00'}. (Вероятно, я получу дату из метаданных поста.)

Я не настолько продвинут в технике НЛП / интеллектуального анализа текста, которая могла бы сделать это в производстве, поэтому я ищу некоторый вклад в мои идеи здесь:

Вариант a): подход на основе правил

  • Использование общей библиотеки NLP, такой как StanfordNLP
  • Сборка конвейера classi c с предварительной обработкой (остановка) удаление слов, ...), POS-теги и др. c.
  • Аннотируйте все города, о которых мы знаем, и определяем синонимы для сокращений
  • Создайте достаточно специфических c правил, чтобы охватить большинство случаев.
  • Вероятно, solid базовый уровень, но, как всегда: крайние случаи, скорее всего, будут утомительными

Вариант b): контролируемое обучение

  • Включите его в классификационную задачу с классами «Город A -> Z» и «Город Z -> A»
  • Задача 1: Необходим набор данных с ручной маркировкой
  • Задача 2: Подгруппа маршруты между городами А и Z становятся сложными
  • Не совсем мой любимый вариант * 10 45 *

Опция c): обучение без учителя

  • Использование автоэнкодера для извлечения полезной информации из сообщений
  • Нет необходимости в данных для ручной маркировки
  • В идеале представление о скрытом пространстве должно содержать всю необходимую мне информацию

Опция c) - моя любимая, а также технически наиболее интересная опция, но я только начал читать об этом топи c. Некоторые мысли, которые у меня есть по этому поводу:

  • Как бы я указал автоэнкодеру на информацию, которая меня особенно интересует?
  • Я прочитал, что с помощью вариационных автоэнкодеров вы можете вручную установить Узкое место «достаточно тонкое», так что сжатый код содержит то, что вы ищете. Это метод проб и ошибок или за ним стоит какая-то интуиция?
  • Является ли автоэнкодер правильным выбором для извлечения структурированных данных из текста?
  • Видите ли вы какие-либо альтернативные подходы? что я мог пропустить?

Буду очень признателен за некоторые мысли, комментарии и рекомендации в виде бумаги или книги. Учитывая все текущее время простоя, я надеюсь выполнить некоторую практическую работу над этим и получить дополнительный опыт в обучении без учителя.

1 Ответ

0 голосов
/ 03 апреля 2020

Идея супер крутая! Я думаю, что вариант A, вероятно, будет работать довольно хорошо, если сообщения будут очень формульными c, но это действительно не так уж и интересно.

Опция B, как вы указали, потребует данных обучения.

Опция C, на самом деле не является правильным вариантом использования автоэнкодера, чтобы попытаться извлечь скрытую информацию и каким-то образом получить от неструктурированные данные в структурированные классификации.

Я хотел бы бросить свою шляпу в кольцо с опцией D, она объединяет некоторые из всех 3 (или, по крайней мере, B и C). Я предлагаю использовать BERT (или его разновидность, например, RoBERTa), который использует некоторую опцию C, а затем добавить простой классификатор для прогнозирования. Поскольку мы используем BERT, мы можем обойтись очень маленьким набором данных. Предложение для классификации, я бы замаскировал названия мест (найденных с использованием NER), а затем делал прогнозы. Например, «Я еду из Лос-Анджелеса в Сан-Франциско» (Спейси воспринимает оба как GPE, я провел несколько тестов и на удивление хорошо справляется с аббревиатурами) станет «Я еду из А в В», а затем предсказание будет от A до B или от B до A. Это уменьшит классы и позволит использовать несколько местоположений, если бы у нас было «от A до B до C», было бы несколько проблем классификации: от A до B, затем от B до C. Затем вы могли бы снова выполнить вычисление, просто изменив маски (технически это требует n выбора 4 вычислений, выбора двух самых высоких активаций, возможно, выбрасывания реверсов)

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

Что касается рекомендаций на бумаге, я просто влюблен в BERT в последнее время https://arxiv.org/pdf/1810.04805.pdf. Я действительно в политических приложениях, поэтому я думал, что TD Parse был потрясающим https://www.aclweb.org/anthology/E17-1046.pdf. Расскажите, как проходит этот проект!

...