Моделируем высказывания

Oct 21, 2015 18:52


Технический пост для структурирования моих мыслей.
Попробуем посмотреть на типичные подходы к моделированию высказываний ЕЯ.
(Я смело пользуюсь в этом посте терминами: "фраза" = "мысль" = "высказывание" = "предложение")
Текстовая модель
Идея: Мысль представляем как последовательность слов.
T = [снег упал с крыши , но никто не пострадал]
Преимущества модели:
  • сохраняется порядок слов
  • 100%-ная точность воспроизведения
  • компактность хранения
Недостатки модели:
  • модель непригодна для переиспользования
  • модель не самодостаточна (нужна "карта мира" и семантический парсер для преобразования)
Известные литературные отсылки: "паковщики" в Programmer's Stone.
Древовидная модель
Идея: Для каждой пары слов можно установить, какое слово "главнее"
T = [[[снег упал] [с крыши]] , [но [никто [не пострадал]]]
Преимущества те же, что и у текстовой модели.
Недостатки модели:
  • модель не самодостаточна
  • "главность" слов неоднозначна
  • существуют не древовидные предложения
  • требуется вводить другой тип связи для представления сложных понятий (MWU)
Известные литературные отсылки: "модель "Constituency parser (aka "Грамматика составляющих")
Сетевая (объектная) модель
Идея: Мысль представляем как иерархию слов, снабжённую ссылками на модель мира и друг на друга, пометим также номер слова в предложении.
T = но1(что? снег_упал_с_крыши, но? никто_не_пострадал)
снег_упал_с_крыши = упал#падать1(что? снег, откуда? с_крыши)
итд.
Преимущества модели:
  • 100%-ная точность воспроизведения
  • возможен поиск по ключевым словам
Недостатки модели:
  • не определяется однозначно -- зависит от модели мира и от парсера
  • не компактная
  • нет поиска по синонимам
  • зависит от модели мира (хотя и отделима)
  • можно добавить номер слова в предложении
  • трудность получения без качественный модели мира и качественного парсера
  • линейный поиск затруднён, используются поисковые индексы
  • неудобство для использования совместно с нейросетевыми моделями
  • не имеет метрики близости между мыслями.
Известные литературные отсылки: синтаксическая структура в языках программирования (AST - Abstract Syntax Tree) представляется подобным способом.
Для описания зависимости от модели мира используется "runtime semantics" ,
для зависимости от парсера -- "language syntax model".

Векторная модель
Идея: Мысль представляем как вектор в многомерном пространстве. Данный вектор называем "смыслом". Для получения этого вектора объединяем вектора более простых мыслей с помощью специально обученной нейросети.
Преимущества модели:
  • не 100%-ная точность обратного воспроизведения
  • возможность введения естественной метрики "близости" между мыслями
  • отсутствие иерархии
  • естественное представление для нейросетей
  • не требует построения строгой формальной однозначной модели для парсера
  • не требует построения строгой формальной модели реального мира
  • позволяет естественным образом моделировать неоднозначность парсера и реального мира
  • позволяет моделировать неизвестные слова и окончания слов
  • позволяет легко моделировать темы и синтактико-семантические группы слов ("съедобное", "глаголы", "летает", "транспорт").
Недостатки модели:
  • низкая точность
  • "вектора" определяются нейросетевой моделью мира
  • неоднозначно определяется -- с точностью до формирующей модели
  • зависит от модели мира (хотя и отделима)
  • можно добавить номер слова в предложении
  • трудность получения без качественный модели мира и качественного парсера
  • линейный поиск затруднён, используются поисковые индексы
  • неоднозначность кодирования для длинных предложений (отсюда неоднозначность "близости")
  • теряет детали для длинных предложений
Известные литературные отсылки: работы по word2vec, GloVe , модель MemNN, работы по изучению ассоциативной памяти человека

В общем, как видно, векторная модель и объектная модель дополняют друг друга.
Интересно было бы попробовать их объединить.
Как может выглядеть их объединение?
Продолжение следует.
Previous post Next post
Up