Pull to refresh

Comments 50

UFO just landed and posted this here
Думаю, при описанном сценарии уровень дебильности пользователя всегда будет превышать способности системы этот уровень преодолевать :))
Для меня самого в Ворде вполне хватает коррекции опечаток. Опечатки у всех бывают. Впрочем, иногда и сочетаемость слов полезно проверить — бывает, написал абзац, потом заменил «я» на «мы» или наоборот, а глагол остался.

Но самое главное — это помощь тем, для кого язык сочиняемого текста — не родной. Тут любая помощь полезна.

Ещё такое соображение: дебильный пользователь сочинит дебильный текст. Даже если текст будет грамматически верен, умнее от этого сочинение не станет.
UFO just landed and posted this here
А вот если бы вы проверили свой текст перед отправкой с помощью системы проверки правописания, читать его было бы приятнее.
Насколько я понимаю, еще один вариант POS Tagging — это обучение без учителя. Т.е. скорее всего можно взять много текстов, поделить их по словоформам и выделить классы. Вероятно, что эти классы будут более-менее соответствовать частям речи.

Ну и возможны смешанные варианты, конечно(semisupervised learning).
Как это? Я ещё понимаю, в русском, например, есть окончания, а в английском? Как он догадается, что red — это прилагательное, read — глагол, а bread — существительное?
Смотреть не только на отдельные словоформы, но и на контекст, кажем ± 2 слова.
Насколько я понимаю, примерно так работает hmm-подход(конечно, в этом случае есть только левый контекст).

Кроме того, скорее всего это очень сильно зависит от количества тегов — есть же деление на fine-grained POS, и coarse-grained POS.
Жаль, что всё это для английского. Хотелось бы видеть это в применении к русскому языку. И так материалы по NLP практически все на английском, хотя бы что-то было бы на русском
Вообще-то нигде ничего на язык не завязано. Я лишь привожу примеры для разных языков. Для английского примеры просто берутся из личной практики — так удобнее. А так — все алгоритмы работают без изменений и для нашего языка.
Хорошая статья, спасибо.
На счет правил в LanguageTool. Скажите, а сколько их там? Есть ощущение, что их много, и писать их и поддреживать не так просто.
Не так много, как я думал, но все же.
Я к тому, может, как то статистически это отработать. Идей как это сделать нет, но есть ощущение, что можно. Через тот же machine learning/svm.
Ну тогда для этого нужны примеры как корректных предложений, так и ошибочных.

Вообще если был аннотированный корпус предложений с ошибками — это было бы круто. Но нет такого :(
Я находил один для английского: www.dcs.bbk.ac.uk/~jenny/Downloads/CorpusFiles.zip

Правда, там маловато ошибок.
А в целом, да хороших юзабельных корпусов ошибок на связных текстах не встречал.
А, товарищ Фостер, да, знаю её.
Но там речь идёт только об опечатках, и корпус не столь велик (около 1000 предложений по-моему?)
Например, сколько падежей в русском языке? Ответ школьника — шесть, однако я могу назвать, по крайней мере, восемь-девять.

Интересно, это какие еще есть падежи в дополнение к этим 6-ти? :)
Ну, из совсем очевидного:

1) звательный («Миш!», «Гриш!», «Господи!»);
2) локатив («о лесе» — предложный, «в лесу» — локатив);
3) партитив («кусочек сахару» — «производство сахара»; «ещё чаю!» — «нет чая»)
Я думаю, что не все из этих примеров корректны (хотя специалистом по русскому языку не могу себя назвать). От того, что Вы выбросили окончание или изменили его, падеж не должен измениться.

1) отвечает на вопрос «Кто?» (или «Что?») — именительный падеж
2) тут сложно что-то придумать :)
3) отвечает на вопрос «Кого?» (или «Чего?») — родительный падеж. Какая разница между «кусочек сахара» и «кусочек сахару»?
Мы приходим к полуфилософскому вопросу о том, что такое падеж. Если на вопрос «кто?» отвечают слова «Гриша» и «Гриш», как тогда это трактовать? Падеж чётко соответствует некоей языковой ситуации; слова «Гриш» и «Гриша» нельзя использовать наравне, так же как и «сахара-сахару».

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

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

Кусочек сахару может быть, потому что это часть целого; а производство сахару быть не может, потому что производим вещество «сахар».
Ваши познания в данной области несравненно больше моих, поэтому дискутировать дальше наверное нет смысла :)

Поскольку моим вторым родным языком является украинский, то да, соглашусь, что в нем звательный падеж используется широко. Имена в этом случае часто оканчиваются на -ко, -ку (хотя, конечно, это далеко не единственные возможные окончания).
Гулять в лесу.
Коль, подойди.
Ждать у моря погоды.
Подался в лингвисты.

Наверное, я далеко не первый, кто задаётся этим вопросом, но всё же: насколько тяжело (человеко-лет, мешко-денег) создать полную математическую модель русского (английского, удмуртского, албанского, etc.) языка? Со всеми буквами, слогами, словами, словоформами, словосочетаниями, членами предложений, частями слова и речи, падежами, склонениями, спряжениями, пунктуацией и прочими понятиями, которые я сейчас припомнить не могу.
Вопрос в том, что конкретно понимается под математической моделью языка. Что она должна уметь?

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

Прошу заметить, я не говорю об ИИ, я говорю о модели языка, которая может стать отличным инструментом для учёных и инженеров совершенно разных областей.
Ну, если совсем коротко, то машинный перевод во многом считается одной из самых сложных связанных с этим делом областей — где и обкатываются многие теории и модели. Как мы видим, успехи переменные.

Сложно назвать сходу одну сверх-проблему. Наверно, можно сказать, что идеального решения даже самой простой задачи в нашей области нужен полноценный интеллект. Вот буквально сегодня видел сравнение: «Jane and Mary are sisters; July and Ann are mothers.»

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

И так во всём — если по-русски мы говорим «брат-сестра», то японцы обычно уточняют — «старший/младший брат/сестра». Значит, нужен широкий контекст входного документа, чтобы адекватно перевести кусок… а ведь формально машинный перевод — это просто отображение одного языка в другой, трансляция данных без преобразования.
Я пока что не говорю про перевод. Для каждого языка будут совершенно разные модели языков. Вообще проблема перевода, на мой взгляд, самая сложная из всех связанных с языками, она абсолютно точно относится к интеллектуальным задачам. Вы меня поправите, если я не прав, но, наверное, только 85% всех текстов, исполненных на каком-либо языке, вообще возможно перевести на другие языки.

Я же пока что говорю о составлении модели текста (пока без ошибок, если уж упрощать задачу), следуя всем правилам из учебника русского языка. Решать проблемы по мере их поступления, как сказать.
Поясню про анализ текста и составление его модели. К примеру, я хочу подключить свободный пользовательский ввод к какой-либо программе. Пользователь пишет на свободном языке, используя термины того тезауруса, который ему доступен на данный момент. Понятное дело, что программа не поймёт всё, что хочет от ней пользователь, но тут на помощь приходит матмодель языка. Ей известно (декларативно), что понимает программа, и пытается в диалоговом режиме добиться от пользователя инструкций.

Пользовательница пишет:
— Я сохранить хочу этот документик на моей розовой флешке, пожалуйста.

Матмодель пишет:
— О_о?

Матмодель распознаёт ввод, исправляет ошибки, строит модель, отсекает ненужные программе части этой получившийся модели, у неё остаётся это:
— открыть диалоговое окно сохранения документа со стартовым местоположением на диске F:\

Пользовательница подтверждает, что именно это она и хочет, модель отдаёт команду программе, та исполняет.

P.S.: Понятно, что это всё совсем не нужно, ибо давно придумана иконка «Сохранить», но мне хотелось раскрыть смысл и привести самый простой базовый пример.
Обычно, это не мат. моделью называется.
Лингвисты выделяют отдельные ступени, и задействуют их при решении каких-то задач.

К примеру, для поиска синонимов обычно достаточно почистить текст и заюзать морфологию.
Для вытаскивания фактов точно понадобится синтаксис.
А для вашей задачи — полный набор: морфология, синтаксис, семантика, прагматика + спелл-чекер в придачу.

Да, и еще задачу сильного АИ решить, чтоб перед записью уточнил, что за розовую флешку вы имели ввиду :)

Вобщем, сложно это. Сейчас решаются только сильно ограниченные задачи, да и то с ограничениями :).

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

Можно поподробнее про семантику, синтаксис и прагматику, что вы имели в виду? Я не силён в лингвистике, я больше программист, хотелось бы разобраться в вашей мысли.

> Да, и еще задачу сильного АИ решить, чтоб перед записью уточнил, что за розовую флешку вы имели ввиду :)

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

> Вобщем, сложно это. Сейчас решаются только сильно ограниченные задачи, да и то с ограничениями :).

Прекрасно понимаю, что сложно, у меня нет даже представления о том, насколько сложно. Именно поэтому в корневом комментарии и задал вопрос, насколько сложно? У вас, кстати, есть примеры решения таких ограниченных задач, пусть даже с ограничениями? =) Только интересные какие-нибудь примеры.
Слово «мат. модель» меня вообще применительно к языку смущает. Что это — уравнение? Набор ограничений?

Если очень грубо провести параллель между человеческим языком и языком программирования, то ваш пример — это «программирование действий» на естественном языке. И тогда речь идёт об «интерпретаторе языка», где фраза задаёт действие.

Но проблема в том, что возможности естественного языка шире. На Паскале можно только командовать, а по-русски можно сказать «небо синее», вот и всё.

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

Как уверяет Wikipedia:
Математи́ческая моде́ль — это математическое представление реальности.

Таким образом, под мат. моделью я понимаю некую структуру, описывающую и хранящую все знания о естественном языке. О всех его структурных составляющих (в том числе база слов, синонимов, шуток-прибауток, etc.), о связях между ними (синий, красный — категория «цвет») и других аспектах языка.

Я привёл свой пример как одно из применений функции анализа мат. модели языка применительно к пользовательскому вводу. Команда, понятная компьютерной системе — это именно то, что я в данном случае жду как результат анализа мат. моделью.

Но «синее небо» мат. модель тоже должна описать, только уже в других условиях. Результатом будет граф текста, лексический разбор, возможные тематики, да бог знает, что ещё! Как же использовать этот результат, это уже другая задача, другой вопрос.
> Математи́ческая моде́ль — это математическое представление реальности.
Ну, очень мило, кошка — это кошка. Что такое «математическое»? Вот если так, шаг за шагом, описывать конкретику, то станет ясно, что в абсолютно любую сторону можно копать бесконечно. Стало быть, «математическая модель» превращается в очень грубое приближение, которое NLP с каждым годом пытается расширять, но довольно скудно. Прорыва пока нет.

По отдельности разные вещи существуют. Есть, например, проект Cyc, ознакомьтесь. Есть WordNet. Есть трибанки. Всё это и есть составляющие мат. модели, описывающие различные аспекты языка. Но соединить всё вместе не получается.

Ну а чем вам пример с text adventure не нравится? В принципе, эти системы восьмидесятых можно поднять при нынешних возможностях на качественно новый уровень. Просто оказалось, что тыкать мышью проще, чем набирать текст.
Хорошо, признаю свою несостоятельность в способности изложить свои мысль и идею. Забываю слова «математическая модель».

> Ну а чем вам пример с text adventure не нравится?

С чего вы взяли, что пример не нравится? =) Я его не комментировал. Эти MUD я сам делал в большом количестве, как вариации движков (простые, с триггерами, скриптами, вероятностями и прочими рюшечками), так и сам контент. Ничего хорошего не вышло, так как разрабатывать приходилось как анализ пользовательского ввода, так и возможности самих игр, а опыта было поменьше… В общем, ничего хорошего. Но не о том речь, я повторюсь: распознавание пользовательского командного ввода — лишь одно из возможных применений… системы.

Почему я вообще завёл об этом разговор — дальнейшее развитие — привязывание этого распознавания к распознаванию речи. А это всяко удобнее, чем тыкать мышью.

«Проект Сус» найти не смог. =(
Классная штука этот проект, да. Но похожие базы знаний в упрощённом виде делались ещё на LISP аж в 60-е. Жаль, что принципиально дальше не продвинулись.
Кстати, не думаю, что речевой интерфейс тоже удобнее. Мышкой перетащить десять файлов или сказать «выдели файлы в текущей папке со второго по двадцатый, кроме третьего, и удали с возможностью восстановления».
Откуда столько скептицизма? Это же магия! Волшебство!

В примере с выборочным удалением файлов — да, удобнее мышью это сделать, но ведь я и не призываю от неё отказаться. Но зато как классно было бы говорить:
— отложи страничку, потом почитаю;
— не понял, что это оно упало?;
— я дам тебе флешку, а ты спрячь куда-нибудь всё с неё и через год напомни удалить;
— запусти какую-нибудь игрушку, у меня есть 10 минут перед выходом;
— спи, моя радость, усни.

Да сколько всего можно придумать! И всё это возможно двумя способами:
— доступным на данный момент: писать каждый паттерн в каком-нибудь Горыныче;
— недоступным на данный момент: анализировать и распознавать речь, составлять модель сказанного, вычленять смысл с оглядкой на возможности ОС или её прослойки.
Я не видел реально работающих. Самому интересно.

Я видел демки систем. Одна из них — бронирование авиабилетов, другая — справочник по городу. На входе — речь. На выходе — купленный билет или справка.
Но в живую и в реальности я таких фокусов не видел. Может быть, где-то все же есть.

Если интересует как это все может работать и на сколько сложно — гляньте книжку Artificial Intelligence: A Modern Approach. Там довольно подробно обсуждаются проблемы и решения в этой теме.

ps искусственный интеллект это и есть математика )
Хорошо, посмотрю книгу, спасибо.
PDF найти не смог ни платный, ни бесплатный. На OZON книга стоит 4557 рублей. Вопрос: нет ли какого-то более доступного способа ознакомиться с книгой? =)

P.S.: Всё есть математика в силу определения слова математика. =)
Да есть, конечно. Смотрите личку.
На Амазоне второе английское издание (на основе которого сделан русский перевод) начинается с 20 долларов. Потому что уже третье вышло.
Спасибо за статьи, видимо, буду по этой теме писать диплом.
Друзья, прочитав статью, пошел искать больше информации, наткнулся на SynTagRus но нигде не могу найти ее чтобы скачать, буду очеееень благодарен за линк, если таковой существует конечно

упоминание есть вот тут: en.wikipedia.org/wiki/Treebank в разделе List of treebanks sorted by language

а возможно есть еще какие базы для русского?
Синтагрус дают скачать для noncommercial research purposes по договорённости.
Т.е. надо связаться с авторами и попросить.
получил ответ по поводу syntagrus

для поиска по корпусу синтаксически, лексико-функционально и морфологически аннотированных текстов
можно воспользоваться сайтом ruscorpora.ru, поддерживаемом компанией «Яндекс».

Сам корпус предоставляется заинтересованным академическим институтам бесплатно
после заключения лицензионного соглашения с ИППИ РАН (правообладатель).

Коммерческие организации могут приобрести лицензию на использование корпуса в своих целях.


вот такие пироги…
Есть ещё различные корпусы, упоминаемые в этой презентации:
— Национальный корпус русского языка (НКРЯ) от ИРЯ Виноградова РАН, ИЯз РАН, ИППИ РАН,… (пример)
— Уппсальский корпус (Uppsala Russian Corpus; пример)
Тюбингенский корпус
ХАНКО (хельсинский корпус)

Но вообще, я за то, чтобы всем вместе делать общий корпус под лицензией Creative Commons тут: opencorpora.org. Это возможно прямо на сайте!
Искусственный интеллект — слишком сложно. Искусственный инстинкт- более реалистично. ;))
Only those users with full accounts are able to leave comments. Log in, please.

Articles