Машиночитаемый Викисловарь/Импорт дампа обработанного Викисловаря в MySQL
Скачайте дамп Русского Викисловаря или Английского Викисловаря, обработанного парсером wikokit, с сайта Academic Torrents. Ищите торрент по слову "Wiktionary".
Запуск MySQL сервера через MariaDB
правитьДля запуска MySQL сервера на MacOS необходимо прописать в терминал:
mysql.server start
Для запуска MySQL в терминале, прописываем:
mysql
Импорт дампа обработанного Викисловаря в MySQL
правитьИмпорт дампа
править- Для начала необходимо создать базу данных, для этого прописываем:
CREATE DATABASE НАЗВАНИЕ_БД;
- Заходим в созданную БД, для этого прописываем:
USE НАЗВАНИЕ_БД;
- Импортируем дамп Викисловаря, для этого вводим команду
SOURCE /путь_до_скаченного_дампа/ruwikt20230901_parsed.sql
- Меняем кодировку импортированной БД, командой (Необходимо использовать после каждого перезахода в MySQL):
SET NAMES latin1;
Проверка импортированного дампа Викисловаря
правитьПроверка импортированных таблиц:
править- Выведем список всех таблиц в базе данных, командой:
SHOW TABLES;
В терминал должно вывестись 1157 строк
Проверка кодировки:
править- Выведем первые 10 строк из таблицы page и убедимся, что слова читабельны.
Для этого введем команду:
SELECT * FROM PAGE LIMIT 10;
Запросы к БД
правитьВ этом разделе даются примеры запросов к базе данных ruwikt20230901_parsed.
Вывод заголовков русских слов
правитьПолучим список названий словарных статей (заголовков) Викисловаря для русских слов.
SELECT DISTINCTROW page.id, page_title FROM lang_pos, page, lang
WHERE lang.id=809 and lang.id=lang_pos.lang_id and lang_pos.page_id=page.id
LIMIT 100;
У многих русских слов в Викисловаре существует несколько значений. Для вывода только уникальных строк в текущем запросе воспользуемся предикатом "DISTINCTROW"
Вывод словарных помет
правитьПолучим список словарных помет, которые встречаются в базе данных больше 10 раз.
SELECT * FROM label
WHERE counter > 10
ORDER BY counter;
Вывод синонимов к слову "камень"
правитьПолучим список синонимов к слову "камень" на основе дампа Викисловаря русских слов.
SELECT text FROM meaning, relation, wiki_text, lang_pos, page
WHERE meaning.id=relation.meaning_id and relation.relation_type_id=9
and relation.wiki_text_id=wiki_text.id and meaning.lang_pos_id=lang_pos.id
and lang_pos.page_id=page.id and page.page_title="камень";
Вывод определений к слову "камень" со словарными пометами
правитьПолучим все определения к слову "камень" с его пометами на основе дампа Викисловаря русских слов.
SELECT DISTINCT label.id, page_title, label.short_name, page.page_title, wiki_text.text FROM page,lang_pos,wiki_text,label, label_meaning, meaning
WHERE page.id=lang_pos.page_id and lang_pos.lang_id=809 and lang_pos.id=meaning.lang_pos_id and meaning.wiki_text_id=wiki_text.id and label_meaning.label_id=label.id and label_meaning.meaning_id=meaning.id and wiki_text.id=meaning.wiki_text_id and page.page_title="камень";
Вывод заголовков русских слов c их частями речи
правитьПолучим список из первых 100 заголовков с их частью речи.
SELECT DISTINCTROW page.id, page_title, part_of_speech.name FROM lang_pos, page, lang, part_of_speech
WHERE lang.id=809 and lang.id=lang_pos.lang_id and lang_pos.page_id=page.id and lang_pos.pos_id=part_of_speech.id
LIMIT 100;
У многих русских слов в Викисловаре существует несколько значений. Каждое значение имеет свою часть речи.
Вывод толкований с пометами
правитьПолучим список из первых 100 определений и их пометами с дампа Викисловаря.
SELECT DISTINCT label.id, page.page_title, label.short_name, wiki_text.text
FROM page
JOIN lang_pos ON page.id = lang_pos.page_id
JOIN meaning ON lang_pos.id = meaning.lang_pos_id
JOIN wiki_text ON meaning.wiki_text_id = wiki_text.id
JOIN label_meaning ON meaning.id = label_meaning.meaning_id
JOIN label ON label_meaning.label_id = label.id
WHERE lang_pos.lang_id = 809
AND CHAR_LENGTH(page.page_title) BETWEEN 4 AND 8
AND label.short_name != 'аббр.'
ORDER BY page.page_title
LIMIT 100;