Викисловарь:Технические вопросы/Ботозаливка информации о словоизменениях

Материал из Викисловаря

Идея коротко[править]

Из викисловаря берется некоторый шаблон словоизменения по Зализняку. Зная шаблон, бот проходит по словарю Зализняка (который доступен в развернутом виде), и составляет список слов, которые попадают под этот шаблон. Затем, эта информация добавляется в статьи, для которых соответствующий шаблон еще не прописан. Необходима помощь администраторов. (Похожие мысли также ранее высказывались тут: Обсуждение_участника:Sokirko )

Более развернуто[править]

Параметры шаблонов словоформ - именованные. Каждому именованному параметру шаблона в соответствие ставиться что-то типа «{{{основа1}}}а», «{{{основа1}}}ы» и т. д. По имени параметра, задается информация о характеристиках слова – одушевленность, время, число и т. д. Боту остается просканировать словарные статьи, и смотреть, можно ли подобрать основы, чтобы слова с соответствующими характеристиками подходили под значение, соответствующее параметру шаблона. Бот будет уметь работать с шаблонами, в которых присутствует несколько основ. При поиске подходящих шаблонов, предположительно, знаки ударений будут игнорироваться.

Еще более подробно[править]

Исходные данные. Для дальнейшей работы, может понадобиться загрузить словарь Зализняка в том формате, который будет использован ботом: http://www.aot.ru/download/aot_rus_lex_2008.tar.gz Размер файла – 26 Мб, после распаковки – около 300 Мб. Для помощи в этой работе, нужно лишь уметь читать файл. Для чтения больших текстовых файлов под Windows, рекомендую использовать бесплатную программу Total Commander: http://wincmd.ru/plugring/totalcmd.html.

Работать с Total Commander можно и без регистрации – при запуске придется дополнительно нажимать всего одну кнопку. Смена жесткого диска производится через Alt+F1 (Alt+F2). Просмотр файла – по F3, работает очень быстро. При просмотре, доступен поиск. Формат обозначений параметров слов внутри словаря – в основном, двухбуквенный, для небольшого размера.

Расшифровка значений кодов из словаря находится тут: http://www.aot.ru/docs/rusmorph.html. Также, словарь можно просматривать интерактивно, при помощи программ с сайта aot.ru , но они часто лишь в демо-версии. Если будет необходимо, могу написать просмотрщик к этому словарю.

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

Еще одно упрощение – вначале будут обрабатываться только те словарные карточки, в которых основное слово только «одно». В том смысле, что нету, например, дополнительных словоформ, как в карточке со словами "борону'ющий" и "боронова'вший".

В русском языке я полный ноль – не учили в украинской школе, не учил и самостоятельно. Даже названия склонений мало о чем говорят. Выучить могу, но даже самые простые решения буду переспрашивать и перепроверять здесь. Например, для различных частей речи нужно будет знать ключевые параметры "эталонной" формы. Например, «настоящее время, единственное число, мужской род», и что там еще для других частей речи.

Если технология будет отработана на русском языке, то ее можно будет применить, как минимум, для английского и немецкого языков, для которых также доступны словари на сайте aot.ru.

Итого, для начала прошу помочь подобрать шаблон. Для шаблона, особенно с английскими параметрами, может понадобиться расшифровка смысла параметров и свойств соответствующего параметру слова. Типа an=animated=одушевленный. И списка дополнительных свойств слова, если имя параметра их не отображает. Так как имена параметров унифицированы в большинстве шаблонов, эту работу придется сделать только раз. Если и тут будет какая-то рутина, попытаюсь автоматизировать.Neurocod 22:37, 13 мая 2009 (UTC)[ответить]

Мне надо смотреть на конкретный пример, на уровне конкретных статей (что было, что делает бот, какие форматы и т.п.). Пока у меня отношение скептическое. --Al Silonov 23:07, 13 мая 2009 (UTC)[ответить]

Пример[править]

В словаре есть карточка следующего вида:

$type_grm = но,
принтер                                 С мр,им,ед,
принтера                                С мр,рд,ед,
принтеру                                С мр,дт,ед,
принтер                                 С мр,вн,ед,
принтером                               С мр,тв,ед,
принтере                                С мр,пр,ед,
принтеры                                С мр,им,мн,
принтеров                               С мр,рд,мн,
принтерам                               С мр,дт,мн,
принтеры                                С мр,вн,мн,
принтерами                              С мр,тв,мн,
принтерах                               С мр,пр,мн,

И есть Шаблон:сущ_ru_m_ina_1a

 {{Сущ-блок<noinclude>|шаблон-кат=1</noinclude>
|nom-sg={{{основа}}}
|nom-pl={{{основа}}}ы
|gen-sg={{{основа}}}а
|gen-pl={{{основа}}}ов
|dat-sg={{{основа}}}у
|dat-pl={{{основа}}}ам
|acc-sg={{{основа}}}
|acc-pl={{{основа}}}ы
|ins-sg={{{основа}}}ом
|ins-pl={{{основа}}}ами
|prp-sg={{{основа}}}е
|prp-pl={{{основа}}}ах
|loc-sg={{{М|}}} 
|voc-sg={{{З|}}} 
|prt-sg={{{Р|}}}
|П={{{П|}}}
|show-text={{{show-text|}}}
|слоги={{{слоги|}}}
|кат=неодуш
|род=муж
|скл=2
|зализняк=1a
}}

Бот также владеет информацией, что «nom-sg=единственное число, именительный падеж». Вместе с другими данными из шаблона это «nom-sg» превращается в соответствие строке «С мр,им,ед,», «nom-pl» в соответствие «С мр,им,мн,», и т. д. После этого, бот видит, что можно взять {{{основа}}}=принтер, и тогда шаблон подходит для всех параметров. Тогда бот сохраняет характеристику «принтер = сущ ru m ina 1a». Позже эта информация будет добавляться в статьи. В частности, бот увидит, что для слова «принтер» классификация уже проставлена, и пропустит его. Боту все равно, в каком порядке перечислены характеристики в словаре – «С мр,дт,ед,» или «С ед,мр,дт,». В идеале – бот получает адрес или текст шаблона, анализирует шаблон, проходит по словарю, и находит все слова, которые соответствуют шаблону.

Вот, шаблон нашелся - достаточно простой и уже переведенный на новый формат. :) Neurocod 00:23, 14 мая 2009 (UTC)[ответить]

Таблицы соответствия[править]

Часть параметра шаблона Раскрытие сокращения Русский перевод Сокращение в aot.ru
sg singular единственное ед,
pl plural множественное мн,
nom nominative именительный им,
gen genitive родительный рд,
dat dative дательный дт,
acc accusative винительный вн,
ins instrumental творительный тв,
prp prepositional предложный пр,

Xml для бота:

<param name="nom-sg" aot="им,ед," />
<param name="nom-pl" aot="им,мн," />
<param name="gen-sg" aot="рд,ед," />
<param name="gen-pl" aot="рд,мн," />
<param name="dat-sg" aot="дт,ед," />
<param name="dat-pl" aot="дт,мн," />
<param name="acc-sg" aot="вн,ед," />
<param name="acc-pl" aot="вн,мн," />
<param name="ins-sg" aot="тв,ед," />
<param name="ins-pl" aot="тв,мн," />
<param name="prp-sg" aot="ед,пр," />
<param name="prp-pl" aot="мн,пр," />

Ликбез[править]

Я, прочитав обсуждение, так и не понял — предполагается заливать словоформы (принтера, принтеру и т. д.), на основе уже созданных статей, или что-то ещё? --Grenadine 12:28, 14 мая 2009 (UTC)[ответить]

Первый этап - классифицировать слова по шаблонам, на основе словаря с сайта aot.ru. На втором этапе, эту информацию можно вносить в уже существующие статьи, а можно и при создании новых. Так как сейчас более актуально заполнение уже существующих статей, чем дозаливка отсутствующих, то вначале будет прорабатываться вариант с редактированием шаблона в уже существующих статьях. Neurocod 13:08, 14 мая 2009 (UTC)[ответить]
То есть, я так понял, будет добавляться шаблон по Зализняку, там, где его нет? Или нет? --Grenadine 22:04, 14 мая 2009 (UTC)[ответить]
Да Neurocod 22:54, 14 мая 2009 (UTC)[ответить]

Ударения[править]

Как там с ударениями? Ценность системы Зализняка ведь как раз в описании поведения ударений в сочетании с флексиями. Хотя, наверное, и без простановки ударений определенная польза была бы. Надо попробовать в отладочном медленном режиме с плотным мониторингом ;) --Al Silonov 15:15, 14 мая 2009 (UTC)[ответить]

Можно ли в сети найти примеры описания ударений в системе Зализняка? Задача двоякая: распознать шаблон с учетом ударений, и отобразить информацию о ударениях в викисловаре. Распознать бот всегда сумеет - дело техники. Можно распознавать на основе шаблонов без информации о ударениях, а добавлять эту информацию уже исходя из ударений в словаре. Или наоборот - в шаблонах ударения отображены, нужно учесть при распознавании. Теперь про отображение информации пользователю. Мы знаем, где нужно проставить ударение, как это сделать через шаблон? В шаблонах викисловаря, ударения могут показываться только в части слова, не относящейся к основе? (Так как основа - внешний параметр, в котором ударение будет прошито на одной и той же позиции, что не всегда подходит)? Есть ли другие способы, нужны ли они? Например, через шаблон: {{шаблон_ударения|слово|позиция_ударения=3}}. Если последний вариант сейчас невозможен, то это уже технический + организационный вопрос - придется немного модифицировать викидвижок, для автоматического проставления ударения, где надо - на уровне php или через javascript. Тогда можно было бы в шаблоне указывать: nom-pl={{ударение|4|{{основа}}ы}}... Впрочем, на javascript такую функциональность можно было бы сделать и самостоятельно, при помощи шаблона.

Легче всего - распознать шаблон, вывести информацию типа "3а", и прописать таблицу напрямую:

...
|acc-sg=насле'дование
|ins-sg=насле'дованием

Тут простановка ударений будет производиться ботом, а не вики-движком. Может, наговорил чего-то не того, так как плохо представляю суть правил с ударениями в системе Зализняка. Neurocod 16:35, 14 мая 2009 (UTC)[ответить]

Вариант с javascript подробнее. А именно, создается javascript, который каждое слово будет помещать в отдельный тег - например, span. Идентификатор тега может быть содержать имя параметра словоформы, + уникальный счетчик, для сучаев с несколькими таблицами в одной статье. Типа,

<span id="nom-pl-0">принтер</span>

. После создания таблицы, jasascript проставляет ударения в нужных позициях. Позиции ударений в таком случае можно передавать отдельно, даже через отдельный шаблон, вызываемый из основной статьи. Например, отдельно упоминается шаблон сущ_ru_m_ina_1a, а ниже - вызов шаблона для ударений. Тогда, ударения можно было бы проставлять значительно позже. Neurocod 16:47, 14 мая 2009 (UTC)[ответить]

По Зализняку у нас тут страничка есть — Викисловарь:Использование словаря Зализняка, там и про ударение :) --Grenadine 22:01, 14 мая 2009 (UTC)[ответить]

Сначала будут обрабатываться только те карточки, в которых ударения нету в словаре - тут уж без вариантов.

Количество карточек: 174627
количество карточек с ударениями во всех словах: 102020
количество карточек со всеми словами без ударения: 70160
количество карточек с несколькими внутренними карточками, одна из которых содержит ударения во всех словах, в отличии от другой: 2447

Пример последнего случая – кусок карточки:

абстра'ктнее                         П сравн,но,од,
абстра'ктней                         П сравн,но,од,
по|абстра'ктнее                    П 2,сравн,но,од,
по|абстра'ктней                    П 2,сравн,но,од,
абстрактнейший               П прев,но,од,мр,им,ед,
абстрактнейшего              П прев,но,од,мр,рд,ед,

Neurocod 13:38, 16 мая 2009 (UTC)[ответить]

Ладно, только надо не забыть сменить апостроф на наш знак ударения ́ . --Al Silonov 14:28, 16 мая 2009 (UTC)[ответить]
Ребята, никаких джаваскриптов! Словарь должен нормально работать и для тех, у кого джавсксрипта нет или он отключен. -- Wesha 19:01, 16 мая 2009 (UTC)[ответить]
Хорошо Neurocod 21:07, 16 мая 2009 (UTC)[ответить]
Да, и еще: надо понимать, что это всё - только для имен; с глаголами не выйдет, там нет однозначного соответствия между индексом по Зализняку и именем шаблона. --Al Silonov 10:18, 17 мая 2009 (UTC)[ответить]
Для бота значение имеет только шаблон, вроде, проблемы это не составит, по крайней мере, для слов без ударений. Neurocod 13:47, 17 мая 2009 (UTC)[ответить]

Подготовка списка слов[править]

Тут Участник:TrudoBot/сущ_ru_m_ina_1a выложены слова, распознанные как сущ_ru_m_ina_1a, и для которых в словаре не было ударений. Neurocod 13:45, 17 мая 2009 (UTC)[ответить]

Заливка[править]

Когда все будет готово и проверено, кто-то может внести информацию о шаблонах в статьи? Я могу и сам, но если у кого-то уже есть соответствующий код/навык, то так быстрее и проще. Могу дать списки слов в другом формате. Neurocod 14:12, 17 мая 2009 (UTC)[ответить]