Комментарии 53
доказано, что dependency грамматики могут описывать языки, которые являются шире, чем контекстно-свободными. (это то самое «иметь связи между словами на разных концах предложения»)

в частности, легко порождаются конструкции типа
/A{N}B{N}C{N}/ (ABC, AABBCC, AAABBBCCC) которые КС грамматиками не описываются,
но являются употребимыми в шведском языке («гиппопотамовые предложения»)

а вот что интересно —
есть ли реализации метода XDG (Extensible Dependency Grammar) в недекларативных формах алгоритмов? (автор метода приводит реализацию на constraint-programming)
и были ли попытки использования XDG для русского языка?
Верно, но это лишь у меня в качестве примеров идут КС-грамматики. Поклонники хомскианского подхода могут возразить, что контекстно-зависимые грамматики никто не отменял.

По поводу XDG. Я ещё буду об этом проекте рассказывать :) По-моему, это самое лучшее, что есть на сегодня в dependency parsing. Однако «движок» куда лучше, чем грамматики, для него предлагаемые. Не только для русского, вообще ни для какого языка приличных грамматик под XDK нет, насколько мне известно. Только полуигрушечные примеры.

А по поводу constraint programming — честно сказать, мне кажется, что нынешняя реализация и есть наилучшая. Штука в том, что dependency parsing грамматик XDG в чистом виде это NP-полная задача. С помощью constraint programming автор автоматически врубает кучу оптимизаций, предусмотренных средой. Если кто захочет писать свой алгоритм, это будет, мягко говоря, нелегко.
сам я с constraint programming не знаком в принципе,
и поэтому поиграть с XDG мне так и не удалось.

остаюсь на вашей волне :)
А вы хотите сразу адаптировать XDK под себя, что-либо переписать? :)
По идее, вам должно быть всё равно, как это работает. XDK — это готовый парсер, для которого пишется XDG-грамматика (а она уже никакого отношения к constraint programming не имеет).

Грубо говоря, какая разница, на каком языке написан компилятор Паскаля, если писать вам на Паскале?..

По поводу синтеза — не знаю, но по-моему, в нынешней реализации предусмотрен только один сценарий: на входе текст и грамматика, на выходе дерево.
XDG это всёж таки формализм, котрый не обуславливает способ реализации.

и именно потому, что заморачивался синтезом, надо было «адаптировать под себя»

а как насчёт использования XDG для синтеза ЕЯ-текстов?
(тоесть трансляция семантики в синтаксис и подбор словоформ)

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

Упомянутый в статье стенфордский парсер действительно строит «хомскианское» дерево непосредственных составляющих (НС), наподобии проиллюстрированного рисунком «из Википедии». Но он также может привести это дерево к виду списка зависимостей (так называемые Stanford typed dependencies) между словами. Преобразование между этими двумя синтаксическими представлениями предложения с вычислительной и лингвистической точек зрения тривиальны, следовательно, разница только в удобстве для пользователя.

Дерево зависимостей, к сожалению, не показывает семантические связи между элементами предложения, как утверждается в статье. Оно показывает синтаксические связи.

Не совсем понятно, что такое «предикативное предложение». Предикативность — это неотъемлемое свойство предложения, всякое предложение по определению предикативно. Даже если в нём нет финитного глагола.
По поводу дерева зависимостей: в статьях обычно пишут, что dependency links «ближе» к семантическим связям, чем связи phrase structure. А какие связи вы бы назвали семантическими? Мне кажется, тут зависит от того, как строить…

По поводу идей Хомского. Как же получается, что для естественных языков идеи не работают, но остаются влиятельными?

А по поводу «предикативного предложения» — честно говоря, я просто сделал кальку с финского «predikatiivilause». В учебнике базового уровня приводится пять типов предложений, «на улице сыро» относится вот к этому типу. Надо сказать, там всё равно используется вспомогательный глагол «быть», но по-русски как-то вот не могу запихнуть «быть» в «на улице сыро»…
Хороший пример! Да, тут «быть» явно работает как вспомогательный глагол, даже не воспринимается как «быть» ;)
Я думаю, что «близость» dependency links к семантическим связям иллюзорна, так как dependency links выводятся из синтаксических связей путём формальной процедуры. В естественном языке отношения между синтаксисом и семантикой — совсем не такие, как в формальных языках. Например, в «языке» математической логики семантика (алгебра высказываний/предикатов) выводится из синтаксиса (исчисления высказываний/предикатов): доказано, что семантика полна относительно синтаксиса, а синтаксис полон относительно семантики. В естественном языке такая симметрия не сохраняется. Как бы «глубоко» мы не «залезали» в синтаксические структуры, семантику мы в них не найдём. Строго говоря, семантические связи можно устанавливать не между словами, а между понятиями. Эти связи можно, например, задать дугами семантического графа, в узлах которого находятся понятия (не слова!). Такой граф в общем случае будет неизоморфен графу синтаксическому.

Теория Хомского претендует на описание процессов, происходящих в мозгу человека при порождении и восприятии речи. Объективные данные наблюдений и экспериментов не согласуются с предсказаниями этой теории. Её влияние, думаю, связано с традицией — одно время она казалась весьма правдоподобной.

Вы говорите об учебниках русского для финов?
Мне как раз кажется, что синтаксис есть объективное выражение семантики. Было бы странно предполагать обратное — что синтаксис взят с потолка и никак не связан со смыслом фразы. По поводу связей между понятиями — согласен. Более того, понятия выходят за рамки фразы и даже всего текста; но если взять обычную банальную фразу «мальчик пошёл в школу», по-моему, можно вполне чётко провести параллель между словами «мальчик», «пойти», «школа» — и соответствующими концептами «идейного» поля.

Но в принципе, конечно, да. Впрочем, о связях семантики и dependency links мы ещё поговорим.

Про учебник… я говорю об учебнике финского языка для иностранцев. Там фразы типа «снаружи холодно» (ulkona on kylmää) названы «предикативными предложениями». Для сравнения, простейшее предложение субъект-глагол-объект названо «первичным предложением» или как-то так.
Я согласен, что синтаксис есть объективное выражение семантики. Если предложение — это языковой знак, то синтаксис — это его план выражения (означающее), а семантика — план содержания (означаемое = значение = семантика). Другое дело, что семантика и смысл в естественном языке — тоже очень разные вещи.

Значение предложения «Мальчик пошёл в школу» выводится из синтаксической модели предложения плюс семантики составляющих это предложение слов: некий мальчик начал осуществлять перемещение в пространстве, и конечным пунктом этого перемещения является школа. А вот смысл этого предложения (то есть знание, которое мы этим предложением передаём собседнику) может быть совсем иным. Например, сказать «Мальчик пошёл в школу» — распространённый способ дать понять, что соответствующий ребёнок достиг школьного возраста и приступил к получению среднего образования (ср.: «он у меня в прошлом году в школу пошёл»).
а кто-нибудь может прокомментировать проект TexAI?
в основе Fluid Construction Grammar, (...) Walter Kintsch’s Construction/Integration theory of reading comprehension, modified to operate incrementally, and cross fertilized with John Anderson’s ideas about memory retrieval through spreading activation.
«Texai is an knowledge-based, open source project to create artificial intelligence.» — звучит, конечно, круто :)

Честно говоря, попытался понять, но сходу не дошло. Видно, что они ориентируются в большей степени на анализ сущностей (т.е. создания «портретов» объектов), создании контекста. При этом не совсем ясно, как конкретно может происходить анализ зависимостей в предложениях как таковых.
В принципе, я до этой презенташки дошёл, но всё равно не совсем понял механику. Т.е. я вижу, что они пытаются выдвинуться за счёт раннего обрубания альтернатив, но не совсем понятны принципы, по которым строится дерево.

Т.е. предположим, что альтернатив нет вообще. «Я купил диван». Как он будет клеить эти слова между собой и на каком основании?..
>Как он будет клеить эти слова между собой и на каком основании?..
на основании значений слов и их связей из common-sense онтологии, лежащей в основе.
т.е., не важно, как называются грамматические категории этих слов, важен смысл, который можно из этих слов получить.
опа.
тоесть они строят дерево исключительно на семантике, игнорируя синтаксис?
Семантика эксплуатируется, насколько это вообще возможно. цитата: «I believe that the human mental lexicon caches morphological rules in the projected word forms paired with their semantics, and invokes these rules only when comprehending a new or uncommon combination.» т.е., синтаксис и словарь используются для определения типологии предложения и заполнения слотов вспомогательными словами (в русской терминологии, «валентностей»).

ссылки: www.texai.org/blog/?p=78
и www.texai.org/blog/?page_id=37

автор основывается на достаточно сложной модели типологии предложений под названием Double R Theory ( www.doublertheory.com/, www.doublertheory.com/OntologyGoldStandard.pps ), на которой базируется используемая Fluid Construction Grammar. Про длинные связи: www.doublertheory.com/LongDistanceDependencies.pps

Хотелось бы услышать мнение об этом специалиста, потому что мне не хватает общелингвистических знаний, чтобы разбираться в этих ACT-R, Double-R Theory и LSA ( lsa.colorado.edu/whatis.html ).

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

Про Дабл Р ничего не знаю, а вот про LSA — скажу. Это чисто статистический метод выявления неявных («латентных») зависимостей между словами на основе частотного анализа текстов. Если на него пытаются опираться, для меня это скорее дурной сигнал :)
Одна из проблем — построение непроективных связей. С помощью составляющих надо извращаться. Тогда как в деревья зависимостей они вписываются проще.

Однако все равно — это существенная проблема.
Упомянутый в первом посте XDG/XDK умеет строить непроективные деревья.
Проблема не в том, чтоб построить вообще. Проблема в том, чтоб построить правильно :)
Ибо они могут быть весьма далекими.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Дважды упомянутый в комментах XDK строит всё допустимое множество графов.
Дык, подлежащее по прежнему подчеркиваем одной чертой, а сказуемое двумями, или наука шагнула?
Кстати, я давно задумывался о том, что если учить школьников не подчёркивать члены предложения разными чёрточками, а уметь строить дерево парсинга, то никаких проблем ни с «не», ни с «ни» у школьников никогда не будет.
Ну дерево — то все равно строится, за счет второстепенных членов там. Я имел в виду, что бы ввести не только определение предиката, о котором здесь уже было сказано, но и субъекта, о котором как-то не говорят, но…
Тут не школа, каждый изголяется по-своему :)
Похоже, что если по Хомскому, действительно субъект в явном виде не выражен.
А в dependency parsing — пожалуйста, это непосредственный потомок глагола, выраженный именительным падежом.
Мне почему-то казалось, что субъект это состояние до события, а предикат после. При этом само событие находится немного вне нашего наблюдения, и засекается по этим двум срезам данных. Впрочем я занимаюсь Gesture Recognition, а здесь немного другое.
В лингвистике субъект — это подлежащее, объект — дополнение, предикат — сказуемое (просто латинизированные термины).
«До и после» — относится разве что к понятиям темы и ремы, так называемое «актуальное членение предложения».
а ведь есть языки где небывает подлежащего и сказуемого…
интересно, как там учат детей.
Я не знаю таких языков :)
По логике вещей, у любого действия (глагола-сказуемого) всегда есть субъект (подлежащее) и объект (дополнение).
речь шла не о валентностях глагола или грамматических ролях а об «основных частях предложения.», которые в школе подчёркивают чтобы «разобрать»

в некотрых языках основными частями предложения являются тема(topic) и рема(comment)
я не знаю китайского/японского/корейского, но когда интересовался, попадались примеры, котрые с большим трудом натягиваются на схему «подлежащее+сказуемое»
например, темой может служить всё предыдущее предложение.

в других черезмерно агглютинативных языках все «части» «предложения» могут оказаться вклеенными внутрь глагола.
я уже спрашивал про такие языки — как парсить, если субъект/объект обозначается инфиксами и флексиями глагола.
на ум приходит только единственное известное мне слово из одного из языков аборигенов астралии:
«balgayaraganirim» = «не бей себя всё время так сильно»
balga — глагол «бить», первого лица (видимо).
-yara-gani- — всё время, так сильно
-ri- — «себя» (дополнение?)
-m — отрицательная частица

>я уже спрашивал про такие языки — как парсить, если субъект/объект обозначается инфиксами и флексиями глагола.
ну, тут, как мне кажется, всё просто. многие флексии или правила разбиения заранее известны (а иначе как люди друг друга понимают?).
разбиваем по ним слово и получаем обычный нормальный язык :)
(((бить всё-время/так-сильно) себя) не)
Я бы сказал, что это вопрос скорее философский, чем технический. Потому что технически в любом языке фраза состоит из слов, связанных как-то между собой. А «субъект», «объект», «предикат» — это смысловые понятия, существующие во всех языках. Да, разные языки используют разные средства для их вычленения. В школе Австралии, наверно, такое можно было бы разбирать так же, как мы разбираем слова по частям: приставка, корень, суффикс, окончание.

Что касается японского — наверно, можно себе вообразить такие хитрые предложения, но если брать обычные «я читаю газету утром», в переводе на японский получится вполне обычная структура с субъектом, объектом и предикатом. Хотя деление на тему и рему тоже будет присутствовать.

На самом деле многие вещи приходится решать волевым усилием. Например, «я буду ходить в школу» — вот здесь «буду ходить» — это реально один глагол или всё-таки два слова, связанные между собой? Ведь по сути здесь одно действие, просто будущее время выражено двумя словами. Или «я не пойду домой». Можно сказать, что «не пойду» — это одно действие, один глагол.
В обычном инвертированном бите 0,1 (или 1,0) первое значение тема, а второе рема?
Лингвист естественно никогда не пойдет дальше, потому, что бит как единица информации это свято. Но в языках описания аппаратуры этот же бит описывается как 0,x,1 или 1,?,0, то есть учитывается переход через низкий или высокий инмпеданс. Если же описывать еще дальше аналоговую часть, надо рисовать схему затвора, затем емкости, короче самое короткое руководство по одному биту составит мегабайт в текстовом формате :)
а что называется подлежащим и сказуемым в эргативных языках?
кто там подлежащее — субъект/агенс или объект/пациенс?

Ehiztariak otsoa harrapatu du (Охотник поймал волка; дословно «Охотнику попался волк»).
Один мой товарищ по безалаберности потерял банковскую карточку (пластиковую). Звонит в поддержку (а я слышу): «здравствуйте! У меня карточка утерялась!» Вроде бы и не виноват :)

Мой научный руководитель говорил, что все эти субъекты-объекты и прочее — игры философов и лингвистов. Называйте как хотите. Если карточка «утерялась», стало быть она — субъект, хотя понятно, что сама утеряться она не могла ;)
Но все эти разговоры к синтаксическому анализу относятся косвенно. Я бы просто сказал, что глагол присоединяет к себе слова, стоящие в том или ином падеже. А как их называть — дело ваше.
ну мы же в ветке про «подлежащее» и «сказуемое».

кстати, меня в банке каждый раз спрашивали —
она сама потерялась или помог кто.
цена перевыпуска оказывается, от этого зависит, (а может и ещё что-то типа отзыва последних транзакций) :)
такчто вопрос иногда не философский :)
По крайней мере, на моей памяти никто не пытался получить дерево зависимостей путём преобразования выходных данных Stanford parser'а.


Да-да, совсем никто, особенно в Стенфорде :)

nlp.stanford.edu/pubs/LREC06_dependencies.pdf
Максим, спасибо за Ваш цикл статей по NLP!
Имхо, в этой части уместно было бы упомянуть отечественный аналог анализатора от Connexor — это синтаксический анализатор естественного языка DictaScope. Версия двухлетней давности сейчас доступна в виде демонстрации на сайте www.dictum.ru — посмотрите!
DictaScope строит деревья зависимостей. Как пример анализатора, строящего дерево составляющих для русских предложений, можно привести такую ссылку: aot.ru/cgi-bin/synan.cgi. Но, насколько мне известно, этот проект сейчас прекратил развитие.
Дерево, получающееся в результате dependency parsing, мне больше напоминает AST, чем непосредственно parse tree :)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.