やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Rust自習(人称辞典 5)

 三人称の辞書データをつくる。

成果物

三人称代名詞テーブル作成

 RustのdieselクレートとRDBMSのSQLite3を使って、三人称代名詞のテーブルを作成する。

1. テーブル作成

マイグレーション作成

diesel migration generate create_ThirdPersons

テーブル作成SQLを書く

up.sql

create table ThirdPersons(
    id integer not null primary key,
    value text not null,             -- 代表的な表記
    ruby text not null default '',   -- ふりがな、ルビ
    comment text not null default '' -- 補足
);

down.sql

drop table ThirdPersons;

マイグレーション実行

diesel migration run

確認

$ sqlite3 ./PersonalPronoun.sqlite3
...
sqlite> select * from sqlite_master;
...
table|ThirdPersons|ThirdPersons|10|CREATE TABLE ThirdPersons(
    id integer not null primary key,
    value text not null,             -- 代表的な表記
    ruby text not null default '',   -- ふりがな、ルビ
    comment text not null default '' -- 補足
)

2. レコード作成

マイグレーション作成

diesel migration generate insert_ThirdPersons

TSVを書く

 情報源はwikipedia

ThirdPersons.tsv

彼   かれ  人
彼女  かのじょ    人
奴 やつ  人,俗
小奴  こやつ   人,俗
奴さん   やっこさん 人,俗
此奴  こいつ   人,俗
其奴  そいつ   人,俗
彼奴  あいつ   人,俗
彼奴  きゃつ   人,俗
何奴  どいつ   人,俗
こやつ       人,俗
あやつ       人,俗
そやつ       人,俗
野郎  やろう   人,俗
これ      物
あれ      物
それ      物
どれ      物
こちら       人,丁寧
あちら       人,丁寧
そちら       人,丁寧
どちら       人,丁寧

 LibreOffice Calcにて連番をidとして振る。TSV→Insert文変換ツールに合わせて先頭二行を追加する。

ThirdPersons.tsv

  c   c   c
id  value   ruby    comment
1   彼 かれ  人
2   彼女  かのじょ    人
3   奴 やつ  人,俗
4   小奴  こやつ   人,俗
5   奴さん   やっこさん 人,俗
6   此奴  こいつ   人,俗
7   其奴  そいつ   人,俗
8   彼奴  あいつ   人,俗
9   彼奴  きゃつ   人,俗
10  何奴  どいつ   人,俗
11  こやつ       人,俗
12  あやつ       人,俗
13  そやつ       人,俗
14  野郎  やろう   人,俗
15  これ      物
16  あれ      物
17  それ      物
18  どれ      物
19  こちら       人,丁寧
20  あちら       人,丁寧
21  そちら       人,丁寧
22  どちら       人,丁寧

up.sql

 Insert文をup.sqlファイルにコピペする。

up.sql

INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (1,'','かれ','');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (2,'彼女','かのじょ','');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (3,'','やつ','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (4,'小奴','こやつ','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (5,'奴さん','やっこさん','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (6,'此奴','こいつ','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (7,'其奴','そいつ','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (8,'彼奴','あいつ','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (9,'彼奴','きゃつ','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (10,'何奴','どいつ','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (11,'こやつ','','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (12,'あやつ','','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (13,'そやつ','','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (14,'野郎','やろう','人,俗');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (15,'これ','','');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (16,'あれ','','');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (17,'それ','','');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (18,'どれ','','');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (19,'こちら','','人,丁寧');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (20,'あちら','','人,丁寧');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (21,'そちら','','人,丁寧');
INSERT INTO ThirdPersons (id,value,ruby,comment) VALUES (22,'どちら','','人,丁寧');

down.sql

delete from ThirdPersons where id < 23;

マイグレーション実行

diesel migration run

確認

確認

$ sqlite3 ./PersonalPronoun.sqlite3
...
sqlite> select * from ThirdPersons;
1|彼|かれ|人
2|彼女|かのじょ|人
3|奴|やつ|人,俗
4|小奴|こやつ|人,俗
5|奴さん|やっこさん|人,俗
6|此奴|こいつ|人,俗
7|其奴|そいつ|人,俗
8|彼奴|あいつ|人,俗
9|彼奴|きゃつ|人,俗
10|何奴|どいつ|人,俗
11|こやつ||人,俗
12|あやつ||人,俗
13|そやつ||人,俗
14|野郎|やろう|人,俗
15|これ||物
16|あれ||物
17|それ||物
18|どれ||物
19|こちら||人,丁寧
20|あちら||人,丁寧
21|そちら||人,丁寧
22|どちら||人,丁寧

DBの問題

 一人称代名詞のときと同じ問題がある。こちらはだいぶ少ないけど。

  • 「野郎」は二人称のときもあれば三人称のときもある
  • 「こちら」を「こっち」「ここ」ともいう(人や物は人称でも方角は違うのか? でも「こちら」は方角の意味もある) 指示語参照

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux

前回まで