Викисловарь:Технические вопросы/Ботозаливка информации о словоизменениях
Идея коротко[править]
Из викисловаря берется некоторый шаблон словоизменения по Зализняку. Зная шаблон, бот проходит по словарю Зализняка (который доступен в развернутом виде), и составляет список слов, которые попадают под этот шаблон. Затем, эта информация добавляется в статьи, для которых соответствующий шаблон еще не прописан. Необходима помощь администраторов. (Похожие мысли также ранее высказывались тут: Обсуждение_участника: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)
Ударения[править]
- Как там с ударениями? Ценность системы Зализняка ведь как раз в описании поведения ударений в сочетании с флексиями. Хотя, наверное, и без простановки ударений определенная польза была бы. Надо попробовать в отладочном медленном режиме с плотным мониторингом ;) --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)
- Да, и еще: надо понимать, что это всё - только для имен; с глаголами не выйдет, там нет однозначного соответствия между индексом по Зализняку и именем шаблона. --Al Silonov 10:18, 17 мая 2009 (UTC)
Подготовка списка слов[править]
Тут Участник:TrudoBot/сущ_ru_m_ina_1a выложены слова, распознанные как сущ_ru_m_ina_1a, и для которых в словаре не было ударений. Neurocod 13:45, 17 мая 2009 (UTC)
Заливка[править]
Когда все будет готово и проверено, кто-то может внести информацию о шаблонах в статьи? Я могу и сам, но если у кого-то уже есть соответствующий код/навык, то так быстрее и проще. Могу дать списки слов в другом формате. Neurocod 14:12, 17 мая 2009 (UTC)