Как стать автором
Обновить

Заметки об NLP (часть 2)

Искусственный интеллект Natural Language Processing *
Хотя в первой части я и говорил, что не собираюсь останавливаться на морфологии, видимо, совсем без неё не получится. Всё-таки обработка предложений сильно завязана на предшествующий морфологический анализ.

Лирическое отступление. Наш с вами родной русский язык очень хорош (для нас) и труден (для иностранцев) богатой фонетикой и разнообразием грамматических средств. Поэтому нам, в принципе, должно быть не очень сложно изучать иностранные языки. Во-первых, в них не так много незнакомых нам фонем. Окей, надо потратить некоторое время на тренировку «th», «w» и «r» в английском, но представьте себе изучающего русский иностранца, в родном языке которого нет различия между «б» и «п» или, скажем, между «р» и «л»! Ещё многих страшат сочетания согласных («Кржижановский»), которые мы практически без труда щёлкаем. Во-вторых, обилие грамматических явлений редко сталкивает нас с чем-либо непонятным. А для американца, например, само понятие рода или падежа совершенно неочевидно. Есть языки без личных форм глаголов, есть языки без предлогов.

И всё же морфология

Теперь о морфологии. В принципе, на первый взгляд тут говорить особо не о чем. Автоматические морфологические анализаторы работают хорошо. Разумеется, они не могут самостоятельно определить контекст, и выдают все возможные варианты трактовок (например, слово «русский» может быть как существительным, так и прилагательным). Если кому интересно посмотреть, как работает автоматический анализатор — можно поэкспериментировать на сайте С.А. Старостина. Смею предположить, что едва ли не все морфологические анализаторы русского так или иначе опираются на Грамматический словарь Зализняка. Кроме того, модуль так или иначе должен принимать во внимание регулярность структуры языка, и «угадывать» (по возможности) новые слова. В регулярности русского нетрудно убедиться с помощью известной фразы «глокая куздра штеко будланула бокра и кудрячит бокрёнка». В ней без труда угадываются части речи и словоформы, хотя понятно, что ни одного слова данной фразы в словарях не найти. В общем, не дудонь бутявку.

Существуют и загружаемые модули. Сам я пользуюсь разработками Алексея Сокирко, «обёрнутыми» в удобный интерфейс на сайте Lemmatizer. Хочу обратить внимание на то, что здесь доступен не только анализатор форм, но и синтезатор, позволяющий автоматически сгенерировать требуемую форму слова. Есть, конечно, и некоторые огрехи. Например, меня слегка раздражает нелюбовь анализатора к букве «ё», а также некоторые технические особенности генерации атрибутов. Анализатор умеет и угадывать неизвестные слова, хотя иногда смешно ошибается. Например, он считает, что слово «крокодилица» есть словоформа начальной формы «крокодилицо» :)

Уже говорилось, что морфологический анализатор сам по себе лишь модуль в составе проекта, но мне кажется, что для изучающих язык он может быть интересен и сам по себе. Я на досуге написал GUI для модулей анализатора, но пока нет времени разослать куда-нибудь, разрекламировать :) Выложил только небольшое описание здесь, но этого явно недостаточно.

Впрочем, я, наверно, нарисовал слишком радужную картину морфологического анализа :) Есть и трудности. Первая — техническая. Далеко не все языки одинаково легко анализируются. Судите сами: упомянутый русский морфологический анализатор Алексея Сокирко оперирует базой данных в 18,5 мегабайт. Его же версия для английского требует лишь 1,6 мегабайт.

Вторая проблема связана с терминологией. Как ни странно звучит (все ведь в школе учились) в морфологии слов не всё так однозначно. Да, все мы знаем, что «стол» — это существительное, «красный» — прилагательное, в русском языке шесть падежей и так далее. Но существует и масса тонкостей, в которых «среди товарищей согласья нет». Например, всё тот же анализатор считает, что «о лесе» и «в лесу» — формы предложного падежа. Хотя многие лингвисты будут настаивать, что вторая форма — это локатив, практически вымерший в русском языке падеж. Есть и другие «реликтовые формы». Например, звательный падеж («Гриш! А Гриш!») Насколько знаю, он достаточно активен в украинском. Есть и частичный падеж, он же партитив: «официант, ещё чаю!» (вместо «чая»). Партитив буйным цветом цветёт в финском, доставляя изучающим массу радостных моментов.

Нет единства по поводу отнесения некоторых слов к той или иной части речи. Например, что такое «нельзя», «пора», «жаль»? На Грамоте предлагают относить их к «предикативам», но общепринятого подхода нет.

Можно спросить, а какая, собственно, разница. Ну разбирает анализатор и разбирает. Считает предикативом — отлично, наречием — замечательно. Видит разницу между «лесу» и «лесе», не видит — это всё игры филологов. К сожалению, с выбранным анализатором вам ещё жить и жить. Если в дальнейшем, допустим, вы будете считать, что в данном контексте предложения может появиться только предложный падеж, сработает ваше утверждение или нет — зависит и от морфологического анализатора. Обзовёт он «локативом» сочетание «в лесу», и плакал ваш предложный падеж :)

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

Всё, если по морфологии не будет изобилия вопросов, перейдём в следующей части к предложениям.
Теги:
Хабы:
Всего голосов 58: ↑47 и ↓11 +36
Просмотры 3K
Комментарии Комментарии 43