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

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

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


Вы здесь » Русскоязычное программирование » русский язык » Что делать с морфологическими признаками?


Что делать с морфологическими признаками?

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

1

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

Создадим базу данных с тремя таблицами:
Первая таблица будет содержать словоформы
Вторая таблица будет справочником морфологических признаков
Третья таблица будет группировать морфологические признаки в варианты использования.

Ну, то есть, если словоформа имеет два варианта использования (омонимия), то у неё два комплекта морфологических признаков.
  вал в значении "длинная земляная насыпь" имеет все формы, присущие словам мужского рода (вал, -а; о вале, на валу; мн. -ы),
  вал в значении "общий объем продукции за какой-нибудь период в стоимостном выражении" не имеет форм мн.ч. и формы на -у в п.п. ед.ч.

Ну раз уж так жалко места, введём суррогатные ключи (хотя сомнительно, что это сильно поможет).

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

В части загрузки нам поможет парсер (грамматика простая, можно использовать написанный рекурсивным спуском на 1Скрипт).

Имея базу, что мы можем сделать с другим произвольным текстом? Как её использовать при разработке синтаксиса гипотетического языка программирования?

Рассуждения именно на эти темы хотелось бы видеть на этом сайте, а не эту вашу тупую политоту...

Отредактировано Лис (2018-02-18 01:23:30)

0

2

а не эту вашу тупую политоту...

Рыбку! :D

Десять терабайт сюда, десять туда, кого сейчас такие мелочи волнуют?

Дмитрий давал ссылку на словарь в ~5 лям словоформ на Access, кажется, меньше гига.

Как её использовать при разработке синтаксиса гипотетического языка программирования?

Как её не использовать, если нужны, например, падежи? Вручную прописывать все? В чём смысл умножения трудозатрат?

Отредактировано MihalNik (2018-02-18 15:16:54)

0

3

Десять терабайт сюда, десять туда, кого сейчас такие мелочи волнуют?

Интерпретаторы волнует и очень сильно.

Создадим базу данных с тремя таблицами:
Первая таблица будет содержать словоформы
Вторая таблица будет справочником морфологических признаков
Третья таблица будет группировать морфологические признаки в варианты использования.

Тупой перебор в лоб неэффективная трата ресурсов. Я вот представляю школоту - сидит она на уроке русского языка и гоняет в голове терабайты в таблицах, ага. А что  в сухом остатке? Проходит лет 5 после школы (а то и после звонка с русского) и человек потом всю оставшуюся жизнь прекрасно вообще обходится без понимания, что такое морфологические признаки. Выводы?

Как её использовать при разработке синтаксиса гипотетического языка программирования?

Да никак.

Рассуждения именно на эти темы хотелось бы видеть на этом сайте, а не эту вашу тупую политоту...

Не мы такие, жизнь такая.... :)
Чисто по мне - существуют правила образования этих морофологических признаков. Их число может быть больше чем 8 или 9, то есть навскидку сразу все не назовешь, например. Но их число конечно и правила образования там просты. Настолько просты, что когда человек идет в школу (7-8 лет) он уже примерно имеет базовый набор, с помощью которого, не понимая как это вообще работает и что такое морфологические признаки, он способен вполне себе общаться с окружающими земнолюдными. Неужели Вы думаете, что первоклассник сидит и запоминает тербабайты морфообразований? Ну очевидно же, что ничего такого не происходит. Вероятно слова образуются исходя из контекста фраз. Тут задача проанализировать все это и выработать алгоритм, а не перебирать миллионы значений. Уж если это способен сделать дошкольник, то какой-нибудь бородатый ученый тем более должен найти алгоритмы. Вопрос только - кто-нибудь пытался этим заниматься вообще?
Я, со своей чисто дилетантской стороны, в данном вопросе предложил бы следующий ход размышлений:
1. Нужно исходить из того, что наши мысли соответствуют правилам русского языка. Грубо говоря мы думаем категориями русского языка. Не того, что записан в учебниках, а того которому учили нас окружающие. Это объясняет например, почему где-то говорят так, а где-то по-другому, где-то окают, где-то подчеркивают шипящие звуки и т.д.
2. Существуют правила образования предложений в языке (а человек думает предложениями). Эти правила просты и их число конечно.
3. Согласно этим правилам образования предложений определяем порядок слов и их тип (глагол, существительное, прилагательное и т.д.).
4. В зависимости от типа слова, применяем к нему словобразовательные процессы, так чтобы из корня получился вполне приличное слово в той форме, которое соответствует месту слова в предложении. При этом данные правила также относительно просты и их число также не велико - иначе человек бы тормозил в речи, либо использовал более простые языки.
Я сильно сомневаюсь, что сумма правил образования предложений и правил образования словоформ в русском языке превышает 50-60 штук. Это исключая всякие научные глупости, типа деепричастных оборотов и прочих мудростей, на которые более 50% граждан откровенно забивают (в плане, например, оформления запятыми), но тем не менее прекрасно могут общаться между собой.

Отредактировано utkin (2018-02-19 07:37:43)

0

4

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

не перебирать миллионы значений


Это всё оптимизации. А меня интересует подход в принципе.

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

Какие классы объектов должны быть результатами такого анализа? Как они должны быть связаны между собой? Как должен движок связывать объекты этих классов на основе правил Уткина? Как записывать правила Уткина (примеры записи таких правил где?). Примеры хотелось бы в записи на языке 1Скрипт.

Отредактировано Лис (2018-02-19 23:20:43)

0

5

Это всё оптимизации. А меня интересует подход в принципе.

Это как раз не оптимизация, а использование иного алгоритма, не требующего терабайтов памяти тупого перебора в лоб.

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

Да бросьте Вы, чего там определять? Если на конце вопросительный знак, значит предложение вопросительное. Восклицательный значит побудительное. Вы опять тонете в потоке - формализируйте и все. Да, критериев много, но сами критерии в большинстве случаев возможно определять независимо и по вполне понятным правилам.

Для написания программы такой низкий уровень формализованности алгоритма как-то не придаёт вдохновения.

Строго по этому каждая отрасль деятельности в целях описания процессов использует во-первых, свою терминологию. Во-вторых, свои методики описания. Чего-то никто технические процессы не описывает просто литературным языком а-ля Толстой. Для этого внезапно используются диаграммы. Но Вы почему-то решили, что можно неточным текстом написать программу. Я думаю возможен компромисс между специализацией и естественной записью, но не возможна целиковая естественная запись программ.

Для написания программы такой низкий уровень формализованности алгоритма как-то не придаёт вдохновения.

Даже школьник читая задачу прежде всего занимается её преобразованием в формальный вид (Дано и т.д.). Иные варианты невозможны - так устроена наша знаковая система, так устроен мозг человека. Каждое улучшение неизбежно рождает специализацию - либо свои формальные знаки (как UML или язык программирования) либо свои термины (как латинский в медицине).

Какие классы объектов должны быть результатами такого анализа?

Это зависит от устройства языка. В В-2 конструкции текста переводятся во внутренне представление вида:
ID
param1
param2
param3
param4

То есть код команды и ее параметры. Почти как ассемблер (только параметры высокоуровневые). Чем не вариант? Берите за идею и пользуйтесь на здоровье. Зачем Вам строка текста? Вам нужны команды для исполнения, а сиреневый или сиреневенький это для эстетов.

Как они должны быть связаны между собой?

Как описание действия и совокупность данных, необходимых для выполнения данного действия.

Как должен движок связывать объекты этих классов на основе правил Уткина?

У Вас нет ответа только по одной причине - Вы всегда любите проводить процесс, ради процесса. Вы должны думать как добиться результата. Вам нужен результат работы, а не описание процессов. Именно попытка получить результат и должна приводить к цепочке описаний процессов. Но никак не наоборот. Зачем Вам проводить морфологический разбор? Вот зачем? Вы должны упаковать запись вида:
"Хочу в переменную А занести число 5"
в структуру
ID 0
param1 A
param2 5
param3
param4

На следующем этапе компилятор должен брать эти структуры и преобразовывать их в команды ассемблера. То есть: ID 0 значит это команда MOV, А значит найти в таблице переменных адрес ячейки. 5 - значит получить правильное представление числа из символьного представления. Вот какой маршрут должен быть.

Как записывать правила Уткина (примеры записи таких правил где?).

Да как угодно, только не мозголомно. Зачатки такой системы это файл описания синтаксиса В-2. Там есть конструкция - описание шаблона предложений и связь с ID - идентификатором конструкции. Конечно это не готовая универсальная система, это только проба пера - практический зачаток работ в данном направлении. Но просто в качестве примера, что это возможно. Нужно осмыслить, и выработать лучший результат.
Ну вот фрагмент файла:

Шаблон
Описание=Точка старта системы как самостоятельного компонента
№=4
Слово1=Пуск
Слово2=:
Слово3=1

Шаблон
Описание=Точка старта системы как самостоятельного компонента
№=4
Слово1=Пуск
Слово2=1


Он говорит нам о том, что имеется как минимум два вида предложений:

Пуск функция
Пуск: функция

Выполняют одно и тоже действие. Возможно стоит взять такой вариант за основу и немного расширить его. Это и есть та связь между предложением, анализом этого предложения и действием, которое следует исполнять в данном случае.
Кстати, если задать так:

Шаблон
Описание=Точка старта системы как самостоятельного компонента
№=4
Слово1=Пуск Старт
Слово2=:
Слово3=1

То мы получаем две конструкции вида:

Пуск: функция
Старт: функция

Это образец реализации ровно той схемы, которую Вы предлагаете - перебор инструкций в лоб. В В-1 был такой синтаксический сахар:
Создать переменную
Создаем переменную
Добавить переменную
Добавляем переменную
Или как-то так.
Рождение В-1: http://rus.24bb.ru/viewtopic.php?id=36&p=3
ЗЫ. Я так и не пойму почему Вы пытаетесь все время провести классификацию, построить типономику слов в предложении? Что это дает Вам для разбора текста?

Отредактировано utkin (2018-02-20 12:11:16)

0

6

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

по словарю морфологических признаков определили части речи (ну и дополнительные признаки, какие есть)<...>низкий уровень формализованности алгоритма

Как бы он может только вырасти.

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

И дальше надо бы делать синтаксический/грамматический анализ предложения

Смешались людилисы, кони, пони...
Зачем нужна эта гуманитарная классификация, если не мериться академическим членством?

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

как его делать - в школьных учебниках русского языка не пишут

А надо было упражнения читать :D

Отредактировано MihalNik (2018-02-20 09:24:04)

0


Вы здесь » Русскоязычное программирование » русский язык » Что делать с морфологическими признаками?