-
Notifications
You must be signed in to change notification settings - Fork 7
Context labels workplan
(This page is a coordination of work devoted to an extraction of Context Labels from English Wiktionary and Russian Wiktionary.)
Цель работы - добавить в парсер информацию о всех словарных пометах Английского Викисловаря (сокращённо enwikt), Русского Викисловаря (ruwikt) и указать какие пары идентичны в этих двух викисловарях.
Первый этап. Обходим словарные пометы Английского Викисловаря (1001 ночь помета), сверяем с пометами Русского Викисловаря (359 помет) и заносим данные в код парсера.
Второй этап. Обходим словарные пометы Русского Викисловаря (359 помет), смотрим - какие из них остались не привязаны к пометам Английского Викисловаря и
- либо находим к какой помете Английского Викисловаря привязать,
- либо создаём под неё новую помету в файле
LabelEn
, к которой и привязываем эту русскую сиротинку.
-
Редактор NetBeans. Нужна версия "Java SE".
-
SVN-клиент TortoiseSVN.
-
Как пишут гугловцы здесь http://code.google.com/p/wikokit/source/checkout - выполните из svn команду, чтобы получить исходный код:
svn checkout http://wikokit.googlecode.com/svn/trunk/ wikokit-read-only
- Откройте из NetBeans скачанный проект "common_wiki" и откройте в нём файлы, с которыми будете работать:
Чтобы открыть нужный файл, нажмите в NetBeans комбинацию клавиш Ctrl+O и напишите название файла, например LabelEn. Редактор NetBeans выполнит поиск по всем файлам открытых проектов.
- Открываю файл LabelEn.java, нахожу строку со своей фамилией:
// period 15 Krizhanovsky
Это значит, мне нужно обработать 15 словарных помет категории "period" (время).
-
Открываю страницу enwikt Category:Context_labels, нахожу подкатегорию словарных помет со словом "period", это Category:Period context labels
-
Беру последовательно пометы с этой страницы и в алфавитном порядке добавляю в файл LabelEn после
// period 15 Krizhanovsky
Итак, взяли из Английского Викисловаря помету Template:neologism ("неологизм"). Добавляем код в LabelEn:
public static final Label neologism = new LabelEn("neologism", "neologism", LabelCategory.period);
Первый и второй параметры - короткое и длинное имя пометы (здесь совпадают), третий параметр - категория ("period"), к которой относится помета.
Теперь заглядываем в Викисловарь:Условные сокращения и проверяем - есть ли в Русском Викисловаре аналог?
Да, есть:
- неол. — неологизм, есть Шаблон:неол. (краткое название), полное название "неологизм". Добавляю в LabelRu.java строку (в алфавитном порядке, в раздел "period"):
public static final Label neologism = new LabelRu("неол.", "неологизм", LabelEn.neologism);
Имя переменной (neologism) совпадает с имененем соответствующей переменной в LabelEn. Первый и второй параметры - краткое и полное название пометы. Третий параметр - имя переменной в LabelEn, к которой привязывается эта переменная.
Берём следующую помету из категории "period". Шаблон Template:ru-pre-reform указывает на устаревшее значение слова. Т.е. это синоним для другой пометы: "obsolete". Поэтому добавляем в LabelEn:
public static final Label obsolete = new LabelEn("obsolete", "obsolete", LabelCategory.period);
public static final Label ru_pre_reform = LabelEn.addNonUniqueShortName(obsolete, "ru-pre-reform");
Во второй строке помета ru_pre_reform как синоним ссылается на помету в первой строке "obsolete". У функции addNonUniqueShortName второй параметр "ru-pre-reform" - это имя шаблона, который будет извлекать парсер.
Для синонимов (т.е. помета ru_pre_reform, добавленная методом addNonUniqueShortName) не нужно писать перевод в LabelRu. Для основных помет (основная т.е. нет синонимов, например помета "obsolete") в LabelRu записываем такую строку:
public static final Label obsolete = new LabelRu("устар.", "устаревшее", LabelEn.obsolete);
Нашёл пояснение - что это значит - в Английской Википедии: http://en.wikipedia.org/wiki/Ecclesiastical_Latin
В условных сокращениях Русского Викисловаря ничего похожего не вижу, поэтому в файл LabelRu ничего не пишу, пишу только в LabelEn:
public static final Label ecclesiastical_latin = new LabelEn("Ecclesiastical Latin", "Ecclesiastical Latin", LabelCategory.period);
Имя помете даю маленькими буквами, слова в имени объединяю подчёркиванием "ecclesiastical_latin".
- Крижановские
- Румянцев (до 16 мая)
- Чирковы (до 1 июня)
- Огийко (до 15 июня)
- Головин (до 1 июля)
Не обязательно шаблон словарной пометы будет называться также, как его видит пользователь. Например в условных сокращениях указана помета "мн. ч.", но шаблона "мн. ч." в ruwikt нет, зато есть Шаблон:мн.. Т.е. для большинства помет на странице "Викисловарь:Условные сокращения" есть соответствующие шаблоны, которые и нужно знать парсеру для успешного их распознавания. В случае "мн. ч." нужно в LabelRu использовать функцию для указания синонимов словарных помет:
LabelRu.addNonUniqueShortName // см. примеры использования в файле LabelRu
Вывод: перед добавлением первого параметра (например "неол." в следующей строке) в файл LabelRu - убедитесь, что в Русском Викисловаре существует шаблон шаблон:неол.. И если такая страница есть, то пишите:
public static final Label neologism = new LabelRu("неол.", "неологизм", LabelEn.neologism);
Может оказаться, что шаблон, который вы добавляете, уже есть в файле LabelEn, т.е. его добавили раньше и его добавлять ещё раз не нужно.
Это может случиться, если шаблон принадлежит сразу нескольким категориям. Например шаблон:Late Latin принадлежит двум категориям:
- Context labels
- Period context labels
Если встречается шаблон с несколькими категориями, то нужно подумать, какую из двух категорий, т.е. какую из двух строчек, оставить:
public static final Label Late_Latin = new LabelEn("Late Latin", "Late Latin", LabelCategory.empty);
public static final Label Late_Latin = new LabelEn("Late Latin", "Late Latin", LabelCategory.period);
В данном случае выбрать легко - категория времени (period) предпочтительнее, чем пустая категория (empty), которая ничего не говорит о словарной помете. В других случаях придётся думать и выбирать более подходящую категорию для словарной пометы, т.к. у пометы мы можем указать только одну категорию.
Не забыть указать синонимы: "мн. ч." и "мн.ч." для "мн.".
Синоним аббр. к сокр.
В наличие есть книга в бумажном и электронном виде, которая поможет в переводе помет:
- Ахманова О. С. Словарь лингвистических терминов, 1969.