Псевдолемматизация, композиты и прочие странные словечки

    Содержание цикла статей про морфологию

    Не все задачи успели мы с вами обозреть в предыдущем посте, поэтому продолжать будем в этом.

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

    Мы сразу находим пустое окончание. Можно предположить, что «затроллить» – это существительное, которое оканчивается пустым окончанием. Далее мы видим мягкий знак, а на мягкий знак просто так ничего не оканчивается. А вот «-ть» – это типичное окончание для глаголов. Таким образом, мы можем предположить, что у слова «затроллить» основа «затролли-», окончание «-ть». Теперь мы можем получить другие формы. Если отбросить «-ть» и подставить флексию прошедшего времени мужского рода «л», мы получим слово «затроллил».

    Кроме того, мы понимаем, что «затроллить» » это инфинитив глагола, а значит, когда мы будем преобразовывать предложение, в котором нам встретилось слово «затроллить», на другой язык, мы поймём, что это слово выражало какое-то действие в инфинитиве. Таким образом, мы можем его перевести транслитерацией, например, «затроллинг» или «to troll», а за- ещё как-нибудь выразить. Именно в этом и состоит задача псевдолемматизации: разбирать неизвестные слова, пусть и не понимая семантику.

    Верхушка айсберга

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

    Композиты

    Возьмем слово «паротепловозостроительный». Что такое пар-, тепло-, воз-, строительный – по отдельности понятно. Проблемы начинаются тогда, когда мы начинаем эти корни сочетать, а сочетать их можно практически бесконечно.

    Композитные правила вредны и опасны композитными взрывами. Когда мы анализируем слово, которое необходимо разбирать по композитному правилу, априори мы должны делить его после каждой буквы, и только там, где обнаруживаются существующие в словарях формы, мы должны предполагать действительно разделение. Это первое место, где теоретически может быть взрыв, потому что в языке часто встречаются слова из одной буквы: союзы, предлоги. Из-за этого количество точек деления может возрасти многократно.

    Кроме того, не все слова можно склеить друг с другом. Например, рассмотрим слово тепло-возо-строительный можно сперва восстановить первую связь тепловозо-строительный (смысл слова «строить тепловозы»). А можно вторую: тепло-возостроительный (смысл «обогревать возостроение»). Но слова возостроительный не существует. В то же время слово «тепловоз» – вполне словарное. Получается, что важен порядок склеивания кусков композита. Носитель языка быстро понимает, как правильно восстановить смысл слова. Но алгоритм анализа композитов обязан перебрать факториал разных вариантов последовательностей.

    Словосочетания

    Допустим, мы пытаемся проанализировать авиабилет, на котором написано: «Los Angeles-San Francisco».
    Если поделить по пробелам, то мы получим слово «Angeles-San» и два отдельные слова «Los» и «Francisco». Что такое “Angeles-San”? Уважительное обращение к японцу по имени Анджелес? Наша система должна понимать, что “Los Angeles” – это одно словосочетание, “San Francisco”– другое, и что нет таких словосочетаний как “Los Francisco” и “San Angeles”.

    Алгоритмы исправления ошибок ввода

    Здесь перед нами стоит сразу две задачи. Прежде чем что-либо предпринимать, важно определить, ошибся ли пользователь, когда вводил слово, или это было преднамеренно? Во-вторых, если он все же ошибся, необходимо понять, в каком слове ошибка, и что он на самом деле хотел написать.

    Статистическая обработка

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

    Discuss!

    Мы подробно рассмотрели основные задачи, которые обработка естественного языка взваливает на компьютерную морфологию. Разумеется, еще не все проблемы решены, но мы работаем над этим. Если эта тема вас заинтересовала, вы хотите узнать что-то еще или, может быть, поделиться своими идеями, я буду рад пообщаться с вами в комментариях
    • +55
    • 11.1k
    • 7
    ABBYY
    112.52
    Решения для интеллектуальной обработки информации
    Share post

    Comments 7

      +1
      Композиты кажется нужны для довольно узкого круга задач.

      Можно, как в АОТ, отрезать приставки. т.е. «паротепловозостроительный» разобрать по аналогии с «строительный». И лемма в этом случае тоже корректно строится.

      Ну или брать композитные части максимальной длины, ну и ограничить формы, которые могут участвовать в словобразовании. Собственно, так сделано в ЭТАПе.
        +1
        Узкий круг задач называется немецкий язык. :)
        +1
        А как решаются задачи с отнесением к той или иной части речи (ну или схожие, как в статье, выделение окончания) со словами типа «батарея» (можно принять за деепричастие), «крокодил» (за глагол прошедшего времени) или «финифть» — (за инфинитив глагола, если будем как в статье искать окончание «ть»)?
        Только по словарю? Чтобы потом система не считала нормой фразы «Ты что, совсем обатарел?»)
          0
          Обычно, если слово есть в словаре, то оно анализируется только по словарю.
          Если его там нет, то практически во всех системах есть в том или ином виде предиктивный анализ, который пробует разборать разными способами:
          • Разобрать слово по композитам.
          • Возможно, отрезать некий префикс, так, чтобы усеченное слово было в словаре. Обычно есть настройки на длину оставшегося слова, чтобы слова типа «а» не попадали в разбор
          • Предсказание по окончаниям. Например, предсказание по: 2м буквам основы, суффиксу(если есть) и окончанию.


          Ну и возможны вариации вроде фильтрации по частям речи (например маловероятно, что неизвестное слово — частица или предлог), по статистике — отбрасываем редкие и исключительные варианты (вряд ли неизвестный глагол будет изменяться так же как «быть»).

          Но все это обычно не отменяет следующий шаг — выбор одного варианта из нескольких. (Например, разбор слова «мыла» как глагола в «мама мыла раму»).
            0
            В АОТ эта проблема решается так
            Если слово не было предсказано как существительное, тогда в список возможных интерпретации добавляется вариант интерпретации как неизменяемого существительного во всех родах и числах (поскольку ненайденные слова чаще всего существительные).
            0
            При переводе фразы «У меня палец в ухе» (то ли «я ощущаю в ухе палец», то ли «я засунул палец в ухо») — тоже используются результаты статистической обработки?
              +4
              То ли «я окунул палец в уху»

            Only users with full accounts can post comments. Log in, please.