Русскоязычное программирование

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Пролог (Prolog)

Сообщений 1 страница 7 из 7

1

Если Лису нужен разбор языков, то для произвольного уровня сложности, включая естественные, давно существует какой-нибудь Пролог, синтаксис которого проще даже несамосрабатывающего мертвотекственного БНФ.

Отредактировано MihalNik (2017-11-07 12:18:37)

0

2

"The first program written in the (Prolog) language was a large natural-language processing system."

[html]<a href="https://en.wikipedia.org/wiki/Definite_clause_grammar">definite clause grammar (DCG)</a>
<br />
<br />
"notation for DCGs that is used in Prolog today", "a natural extension of context-free grammars":
<br />
Fernando C. N. Pereira, David H. D. Warren, <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.458.3226&rep=rep1&type=pdf">Definite Clause Grammars for Language Analysis--A Survey of the Formalism and a Comparison with Augmented Transition Networks</a> (<a href="http://web.archive.org/web/20171107120143/http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.458.3226&rep=rep1&type=pdf">web.archive.org</a>)[/html]

"DCGs are a special case of Colmeraur's metamorphosis grammars"
"DCG can be viewed as a grammar consisting of an infinite number of context-free rules."

[html]1983, <a href="https://www.sri.com/sites/default/files/uploads/publications/pdf/652.pdf">Parsing as Deduction</a> (<a href="http://web.archive.org/web/20171107123640/https://www.sri.com/sites/default/files/uploads/publications/pdf/652.pdf">web.archive.org</a>)[/html]

Отредактировано Лис (2017-11-07 15:51:58)

0

3

Я вот думаю, зачем нам пролог? Есть же современные theorem provers (coq например). В них что-нибудь парсят, интересно?

0

4

не нравится мне эта идея. Слишком сложно (перебор быстрым не бывает. А если бывает - то упаришься доказывать, что он быстрый).
чтобы доказать, прийдётся:
1) объяснить как происходит перебор
2) объяснить как описывать грамматику
3) объяснить почему перебор на таком описании грамматики будет эффективным.

А потом открываем русскую википедию и там написано - всё что вы делали, было зря:

Считается, что в силу произвольного порядка слов в русском языке, использование Расширенных сетей переходов для обработки русско-язычных текстов малоэффективно


Конечно есть работы с таким подходом (две штуки нашел):
2012, В. В. Гаршина, Ю. А. Богоявленская,  РАЗРАБОТКА ЛИНГВИСТИЧЕСКОГО ПАРСЕРА РУССКОГО ЯЗЫКА
   они использовали связку C# + swi=prolog
на гитхабе есть реализация пролога специально на C# для парсинга от парня, которые занимается склонянениями и  спряжениями:
   https://github.com/bzaar/prolog

Однако, мне что-то таким путем идти категорически не хочется...

0

5

Есть же современные

Так нужно выбирать современные или подходящие для решения задачи?
Зачем тогда  использовать арабские цифры? А топор так вообще с каменного века.

1) объяснить как происходит перебор

Обход дерева в глубину.

2) объяснить как описывать грамматику

Непосредственно исполняемым кодом - правилами.

3) объяснить почему перебор на таком описании грамматики будет эффективным.

Почему перебор должен быть эффективным? Это зависит целиком от того, как его прописать и что перебирать.

РАЗРАБОТКА ЛИНГВИСТИЧЕСКОГО ПАРСЕРА РУССКОГО ЯЗЫКА

Эта задача решаема словарём и словари, где описаны чуть менее чем все употребительные слова, составлены.

0

6

MihalNik написал(а):

Эта задача


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

Какую "эту" задачу ты тут имел в виду? Лингвистический анализ не сводится к морфологическому.

0

7

Лис написал(а):

Лингвистический анализ не сводится к морфологическому.

Лис ещё помнит упражнения по русскому языку, где нужно было подставлять слова/сочетания в нужной форме? Как бы программирование с поддержкой падежей сводится именно к таким.

Отредактировано MihalNik (2017-11-14 09:05:55)

0