Искусственный интеллект

индекс
244,28

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

(Начало: 1, 2) Что ж, подходим к самому интересному — разбору предложений. Тема эта многогранна и многоуровнева, так что подступиться к ней не очень просто. Но ведь трудности лишь закаляют :) Да и выходные, текст пишется легко…

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

Наверно, прежде всего надо разделить способы построения графа (обычно — дерева) зависимостей на phrase structure-based parsing и dependency parsing.

Представители первой школы разделяют предложение на «составляющие», далее каждая составляющая разбивается на свои составляющие — и так до тех пор, пока не дойдём до слов. Эту идею хорошо иллюстрирует рисунок из Википедии:


Представители второй школы соединяют зависящие друг от друга слова между собой непосредственно, без каких-либо вспомогательных узлов:


Сразу скажу, что мои симпатии на стороне второго подхода (dependency parsing), но оба они заслуживают более детального обсуждения.

Школа Хомского

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

S -> aS | bA | 'empty'
A -> bA | 'empty'

Начав с символа S, можно сгенерировать любую строку вида a...ab...b. Существует также универсальный алгоритм разбора такой грамматики. Скормив ему входную строку и набор правил грамматики, можно получить ответ — является ли строка корректной строкой в рамках данного языка или нет. Можно получить и дерево разбора, показывающее, каким образом строка выводится из начального символа S.

Допустим, строке aabb соответствует вот такое дерево:


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

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

Хороший пример синтаксического анализатора, строящего подобные деревья — Stanford parser (есть онлайн-демо).

Модель отношений между словами


Вообще этот подход тоже трудно назвать особо свежим. Все ссылаются на работы Люсьена Теньера (Lucien Tesniere) пятидесятых годов как на первоисточник. Упоминают и более ранние мысли (но из той же оперы, что называть отцом ООП Платона, т.к. он ввёл в оборот понятие «мира идей», то есть абстрактных классов). Однако в компьютерной лингвистике dependency parsing долгое время был на втором плане, в то время как грамматики Хомского активно применялись. Вероятно, ограничения подхода Хомского особенно больно ударили по языкам с более свободным (чем в английском) порядком слов, поэтому самые интересные работы в области dependency parsing до сих пор выполняются «снаружи» англоязычного мира.

Основная идея dependency parsing — соединять между собой зависимые слова. Центром практически любой фразы является глагол (явный или подразумеваемый). Далее от глагола (действия) можно задавать вопросы: кто делает, что делает, где делает и так далее. Для присоединённых сущностей тоже можно задать вопросы (в первую очередь, вопрос «какой»). Например, для приведённого выше дерева «я купил кофе в большом магазине» можно воспроизвести такую цепочку вопросов. Корень — купил (действие фразы). Кто купил? — Я. Что купил? — Кофе. Где купил? — В магазине. В каком магазине? — В большом.

Здесь тоже есть множество технических тонкостей и неоднозначностей. Можно по-разному обрабатывать отсутствие глагола. Обычно всё равно подразумевается глагол «to be»: «Я [есть] студент». В предикативных предложениях дело обстоит сложнее: На улице сыро. Не скажешь же, что на улице есть сыро :) Не всегда понятно, что от чего зависит, и как это трактовать. Например, «я не пойду сегодня на работу». Как соотносится с прочими словами частица «не»? Как вариант, можно считать, что здесь используется глагол «недеяния» «не_пойду» (пусть в русском такого нет, но по смыслу подходит). Не совсем понятно, как лепить однородные члены, соединённые союзом. «Я купил кофе и булочку». Например, можно лепить к «купил» слово «и», а к «и» присоединять уже «кофе» и «булочку». Но есть и другие подходы. Довольно тонкий момент возникает при взаимодействии слов, образующих некое единство: «я буду ходить на работу». Понятно, что «буду ходить» — это по сути один-единственный глагол (то есть действие) будущего времени, просто создан он двумя словами.

Если хочется посмотреть на такой анализатор в действии — могу посоветовать сайт фирмы Connexor.

Чем dependency parsing притягателен? Приводят разные аргументы. Например, говорится, что соединяя между собой слова, мы не создаём дополнительных сущностей, и, стало быть, упрощаем дальнейший анализ. В конце концов, синтаксический анализ — это лишь очередной этап обработки текста, и дальше надо представлять, что с полученным деревом делать. В каком-то смысле дерево зависимостей «чище», ибо показывает явные семантические связи между элементами предложения. Далее, нередко утверждают, что dependency parsing больше подходит для языков со свободным порядком слов. У Хомского все зависимые блоки так или иначе действительно оказываются рядом друг с другом. Здесь же в теории можно иметь связи между словами на разных концах предложения (хотя и здесь технически не так всё просто, но об этом позже). В принципе, уже этих аргументов для меня достаточно, чтобы примкнуть к лагерю Теньера :)

Надо сказать, что существуют формальные доказательства близости получающихся деревьев. Где-то проскакивала теорема о том, что дерево одного вида можно сконвертировать в дерево другого вида и наоборот. Но на практике это не работает. По крайней мере, на моей памяти никто не пытался получить дерево зависимостей путём преобразования выходных данных Stanford parser'а. Видимо, не всё так просто, да и ошибки множатся… сначала стэнфордский парсер ошибётся, потом алгоритм конвертации ошибётся… и что получится в конце? Ошибка на ошибке.

(UPD: упомянутые ребята из Стэнфорда всё же протестировали метод конвертации выходных данных своего парсера в dependency-структуры. Однако должен заметить, что при такой конвертации получаются только проективные деревья, речь о которых идёт в пятой части).
Наверно, на сегодня хватит. Продолжим в следующей части.
+40
1 января 2010, 18:26
38

комментарии (52)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Значение предложения «Мальчик пошёл в школу» выводится из синтаксической модели предложения плюс семантики составляющих это предложение слов: некий мальчик начал осуществлять перемещение в пространстве, и конечным пунктом этого перемещения является школа. А вот смысл этого предложения (то есть знание, которое мы этим предложением передаём собседнику) может быть совсем иным. Например, сказать «Мальчик пошёл в школу» — распространённый способ дать понять, что соответствующий ребёнок достиг школьного возраста и приступил к получению среднего образования (ср.: «он у меня в прошлом году в школу пошёл»).
0
buriy #
а кто-нибудь может прокомментировать проект 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.
0
rg_software #
«Texai is an knowledge-based, open source project to create artificial intelligence.» — звучит, конечно, круто :)

Честно говоря, попытался понять, но сходу не дошло. Видно, что они ориентируются в большей степени на анализ сущностей (т.е. создания «портретов» объектов), создании контекста. При этом не совсем ясно, как конкретно может происходить анализ зависимостей в предложениях как таковых.
0
buriy #
да, извиняюсь, что ссылку не дал.
вот презенташка, где на страницах 6-8 достаточно подробно разбирается подход.
texai.org/papers/agi-09-poster1.PPT
0
rg_software #
В принципе, я до этой презенташки дошёл, но всё равно не совсем понял механику. Т.е. я вижу, что они пытаются выдвинуться за счёт раннего обрубания альтернатив, но не совсем понятны принципы, по которым строится дерево.

Т.е. предположим, что альтернатив нет вообще. «Я купил диван». Как он будет клеить эти слова между собой и на каком основании?..
0
buriy #
>Как он будет клеить эти слова между собой и на каком основании?..
на основании значений слов и их связей из common-sense онтологии, лежащей в основе.
т.е., не важно, как называются грамматические категории этих слов, важен смысл, который можно из этих слов получить.
0
qmax #
опа.
тоесть они строят дерево исключительно на семантике, игнорируя синтаксис?
0
buriy #
Семантика эксплуатируется, насколько это вообще возможно. цитата: «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, там они будут гораздо более в тему.
0
rg_software #
(технически я не могу перенести ветку куда бы то ни было, откомментируйтесь тогда в пятой части или позже...)
Я пока сочиняю следующие части, может, после этого смогу ознакомиться с данными теориями.

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

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

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

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

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

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

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

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

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

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


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

nlp.stanford.edu/pubs/LREC06_dependencies.pdf
0
rg_software #
Ну что ж, я за них рад :)
0
vgrichina #
Если еще статью поправите — я тоже буду рад :)
0
rg_software #
Поправил, хотя и с оговоркой :D
0
excoder #
Максим, спасибо за Ваш цикл статей по NLP!
Имхо, в этой части уместно было бы упомянуть отечественный аналог анализатора от Connexor — это синтаксический анализатор естественного языка DictaScope. Версия двухлетней давности сейчас доступна в виде демонстрации на сайте www.dictum.ru — посмотрите!
0
excoder #
DictaScope строит деревья зависимостей. Как пример анализатора, строящего дерево составляющих для русских предложений, можно привести такую ссылку: aot.ru/cgi-bin/synan.cgi. Но, насколько мне известно, этот проект сейчас прекратил развитие.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.