Перейти к содержанию

Машиночитаемый Викисловарь/Импорт дампа обработанного Викисловаря в 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;

w:MySQL