文房清玩: 2011年10月アーカイブ

misima 漢詩作成支援: 平仄音韻分析・詩語検索 misimakansiservlet を使っている方からメールをいただいた。そこで思い出したように,久しぶりに辞書のメンテナンスを行った。平仄などのデータを格納した辞書=漢字データベースは SQLite3 で作成したのだけど,SQLite3 オペレーションを中心とするメンテナンス手順を忘れてしまっていた。思い出したのを整理し,ここにも備忘録を残しておく。以下,beatirce:/home/isao[nnnn] % は misima サーバ機端末の tcsh プロンプト,nnnn はコマンド履歴番号を示す。

misimakansiservlet において,漢詩分析デーモン misimakansiserver は漢字データベース KANJITBL で見つからなかった文字をログに出力するようになっている。私はこれを定期的にチェックし,それらの辞書にない文字(ユーザが入力したが辞書になかった漢字)を手作業で DB に追加する。ログのその部分を抽出する。

% grep -e '\*\*\*' /var/log/kansiserver.log | sort | uniq
***** 㱕 が KANJITBL にありません.
***** 僲 が KANJITBL にありません.
***** 嵆 が KANJITBL にありません.
***** 扃 が KANJITBL にありません.
***** 涴 が KANJITBL にありません.
***** 疴 が KANJITBL にありません.
***** 裛 が KANJITBL にありません.
***** 髥 が KANJITBL にありません.

というわけで,今回この 8 文字を追加。漢字字典を調べ,平仄,読み,語義などを DB のソースコード kanji.src にテキストエディタで追加する。完了したら,create table で漢字データベースファイル KANJI.db を生成する。そしてこれに kanji.src の内容を .import コマンドでロードする。kanji.src のデータ記述はカンマ区切りの CSV 形式なので,ロード実行には -separator , オプションを指定している。

% cd misima
% sqlite3 KANJI.db < mkkanji.sql
% sqlite3 -separator , KANJI.db ".import kanji.src KANJITBL"

ここで,mkkanji.sql とは create 文で DB のスキーマ(データ項目とその属性)を定義する元ネタである。misimakansiservlet の場合は以下のようなものである。

-- -*- coding: utf-8; mode: sql; -*-
-- misimakansiservert 平仄音韻分析用漢字テーブルレイアウト
-- 漢字 ji, 平仄 hs, 韻 in1, 韻 in2, 音読 yo, 訓読 yk, 備考 bk
create table KANJITBL (
       ji text not null,
       hs text not null,
       in1 text not null,
       in2 text not null,
       yo text not null,
       yk text not null,
       bk text not null
);

これで漢字データベースはできた。データ内容を確認して問題なければ,/usr/local/etc/misima/ の下にコピーする。これで Web サーブレットから使えるようになる。以下,SQLite3 DB 操作のメモ。

  1. SQLite3 コマンドラインの起動
  2. 扱う DB を引数に指定する。
    % sqlite3 KANJI.db
    SQLite version 3.7.7.1 2011-06-28 17:39:05
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite>
  3. テーブル名の表示
  4. sqlite> .table
    KANJITBL
  5. DB スキーマの表示
  6. sqlite> .schema KANJITBL
    CREATE TABLE KANJITBL (
               ji text not null,
               hs text not null,
               in1 text not null,
               in2 text not null,
               yo text not null,
               yk text not null,
               bk text not null
    );
  7. DB 件数の確認
  8. sqlite> select count(*) from KANJITBL;
    6929
  9. tcsh コマンドラインから直接 SQL を入力する
  10. sqlite3 [opt] [db-file] に続けてクオート(ダブルクオーテーションマークで括る)して SQL 文を書けばよい。SQLite3 は標準入力からも SQL を受け付けるので,テキストファイルに書いておきリダイレクトで読み込ませてもよい。
    % sqlite3 KANJI.db "select * from KANJITBL where ji='髥';"
    髥|◎|hs:14:塩|sk:29:艷|ぜん;ねん|-|ほおひげ;鬚髯:柔らかいあごひげとほおひげ;
    % cat sql.txt
    select * from KANJITBL where ji='㱕';
    select * from KANJITBL where ji='僲';
    select * from KANJITBL where ji='嵆';
    select * from KANJITBL where ji='扃';
    select * from KANJITBL where ji='涴';
    select * from KANJITBL where ji='疴';
    select * from KANJITBL where ji='裛';
    select * from KANJITBL where ji='髥';
    % sqlite3 KANJI.db < sql.txt
    㱕|○|hk:05:微|-|き|かえる;かえす|帰・歸の異体字;
    僲|○|hs:01:先|-|せん|-|仙人;僊の異体字;
    嵆|○|hk:08:齊|-|けい;げ|-|稽古の当て・古いことを集めて考える;嵆山:山の名;嵆康:姓の一;
    扃|○|hs:09:青|-|けい;きょう|-|かんぬき;とざす;
    涴|●|sj:13:阮|sk:21:箇|えん;おん;わ|-|涴演:川が曲がりまわって流れるさま;けがす・けがれる;
    疴|◎|hs:05:歌|sk:22:禡|あ;か;け|-|やまい;痾に同じ・痾疾;
    裛|●|sn:14:緝|sn:16:葉|ゆう;おう;よう|-|つつむ・香がまとわりつく;書物の覆い;しっとりと濡れる;
    衣の部;
    髥|◎|hs:14:塩|sk:29:艷|ぜん;ねん|-|ほおひげ;鬚髯:柔らかいあごひげとほおひげ;

これで追加した漢字の平仄分析ができるようになった。
 

20111008-kanjituika.png

Moon Calendar

Profile

ISAO YASUDA。システムエンジニア。神奈川県在住。昭和 30 年代を懐かしむオヤジ。ロシアに興味があります。
[more], [About our site]

Notice

この文書はフィクションであり,実在する個人,団体等とは一切関係ありません。

R-18 指定サイトです。そのうち「18 歳以上ですか」の認証を入れる予定です。

文書の記述内容は無保証です。不適切な表現があればコメントにてご指摘ください。

コメント,トラックバックは,現在,運用を停止しています。ご意見等ありましたら isao@yasuda.homeip.net 宛電子メールにてお願いします。

Links

Entries

About this archive

Entries of Category 文房清玩 after 2011年10月

Previous: 文房清玩: 2011年5月

Next: 文房清玩: 2012年1月

Recent Entries in Main Index.
All Entries in Archive Index.

March 2012

Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

文房清玩: Monthly Archives

Powered by Movable Type 5.12 Powered by FreeBSD 8.2-RELEASE
blog counter