テキスト形式の辞書を grep する簡易的な辞書ツールを作りました。
目次
概要
人工言語で文章を読む際、ロマンス語寄りに作られた言語であれば何となく読めます。しかし書くとなると正確な語形が必要なため、辞書が引けるように整備しました。
対象は以下の5言語です。
言語の紹介は以下の記事を参照してください。
Interlingua
テキスト形式の辞書が提供されています。
- Paul Denisowski's Interlingua page
- IEDICT Interlingua-English Dictionary (utf-8 text file)
これを grep すればほぼ用は足ります。
$ grep indicate iedict.txt indicar : to indicate, be indicative of indicative : indicative (that indicates) marcar : to mark, indicate revindicar : to reclaim, vindicate vindicar : to revenge, avenge, vindicate
※ indicate は結果があまり多くない単語として例に挙げました。
単語として切り出すには正規表現を使用します。
$ grep "\bindicate\b" iedict.txt indicar : to indicate, be indicative of marcar : to mark, indicate
ラッパー
ファイルや正規表現を毎回指定すると面倒なため、簡単なラッパーを作りました。
このスクリプトをどこかパスが通っている所に置いて実行属性を付けます。拡張子は取り除いて gdict
という名前で置くとします。
辞書ファイルもどこか適当なところに置きます。~/share
に置くとしてエイリアスを定義します。
alias ina='gdict -d ~/share/iedict.txt'
※ ina
は Interlingua の ISO 639-2/3 の言語コードです。
検索は大文字と小文字を区別しません。(case-insensitive)
$ ina japan ✔ Japon : Japan ✔ japonese : Japanese (Japanese language, native of Japan) ✔ sinojaponese : Sino-Japanese ✔ yen : yen (Japanese currency)
※ grep の -i
オプションを利用しています。
行頭が分かりやすいようにチェックマーク ✔ を付加しています。
オプション
単語として切り出すには -w
オプションを使用します。
$ ina -w indicate ✔ indicar : to indicate, be indicative of ✔ marcar : to mark, indicate
$ ina "\bindicate" ✔ indicar : to indicate, be indicative of ✔ indicative : indicative (that indicates) ✔ marcar : to mark, indicate
複数の単語を指定すると、連続として処理されます。
$ ina to indicate ✔ indicar : to indicate, be indicative of
結果が多過ぎるときは -m
オプションで制限できます。デフォルトは 100 件です。
$ ina -m 3 -w the ✔ A que apprender francese? : What’s the point of learning French? ✔ Accende le lumine! : Put the light on! ✔ Como es le tapete? : What’s the carpet like?
※ 無制限は -m 0
です。
Interlingue
以下のリポジトリ内の 1 ファイルを使用します。
- ne-alinome/english-interlingue-dictionary: EPUB and DICT versions of the Kemp & Pope's English-Interlingue Dictionary.
- src/english-interlingue_dictionary.txt
辞書ファイルを ~/share
に置くとしてエイリアスを定義します。
alias ile='gdict -d ~/share/english-interlingue_dictionary.txt'
使用方法は Interlingua のときと基本的に同じです。
$ ile indicate ✔ INDICATE #v.#indicar (-ation, -ator, -ativ, -ative), monstrar# ✔ POINT #v.#(aim) directer, apuntar; (indicate) monstrar; (sharpen) puntar# ✔ POOL #n.#stagne; (fund) funde comun; (comm., fin.) sindicate# ✔ TRADES-UNION #n.#sindicate# ✔ VINDICATE #v.#justificar#
ファイルフォーマットとして Interlingue が #
で囲まれています。不要であればテキストファイルを直接編集して削除すると良いでしょう。
Glosbe
この辞書では情報が不足すると感じる場合は Glosbe を使うと良いでしょう。
MacLeod Dave 氏によって用例が大量に登録されているため便利です。
On top of that I have added the Kemp - Pope dictionary to Glosbe and a lot of translation memories, giving it 21,000+ entries and results showing the word in use when you search for it.
Ido
単一のテキストファイルとしては提供されていないため、以下のリポジトリのファイルを加工して使います。
このリポジトリをクローンします。
git clone https://github.com/kyegupov/ido_web_dictionary.git
以下の F# スクリプトをダウンロードします。
1つ目のスクリプトを実行します。
fsharpi Convert.fsx
2つのファイルが生成されます。
結合して ~/share
に置くとします。
cat en-io.txt io-en.txt > ~/share/ido.txt
エイリアスを定義します。
alias ido='gdict -d ~/share/ido.txt'
使い方は今までの言語と同じです。用例が豊富で情報量が多いため、見出し語に絞るため正規表現で文頭 ^
を指定すると良いでしょう。
$ ido ^indicate ✔ indicate: indikar (ulu, ulo ad ulu).
Volapük
単一のテキストファイルとしては提供されていないため、以下の HTML ファイルを加工して使います。
これら2つの URL から HTML ファイルをダウンロードします。
wget http://personal.southern.edu/~caviness/Volapuk/Misc/eng-vol.htm wget http://personal.southern.edu/~caviness/Volapuk/Misc/vol-eng.htm
以下の F# スクリプトをダウンロードします。
1つ目のスクリプトを実行します。
fsharpi Convert.fsx
2つのファイルが生成されます。
- eng-vol.txt (英語 → Volapük)
- vol-eng.txt (Volapük → 英語)
結合して ~/share
に置くとします。
cat eng-vol.txt vol-eng.txt > ~/share/volapuk.txt
エイリアスを定義します。
alias vol='gdict -d ~/share/volapuk.txt'
使い方は今までの言語と同じです。
$ vol indicate ✔ direct - nemedik, stedöfik, stedöfo | (to indicate way) = lüodükön ✔ (to) indicate - jonön ✔ gidükön - to justify, to vindicate ✔ jonön - to indicate, to point, to show
Novial
単一のテキストファイルとしては提供されていないため、以下の HTML ファイルを加工して使います。
この URL から novial.html という名前で HTML ファイルをダウンロードします。
wget -O novial.html https://sites.google.com/site/noviallexike/novial-lexike-1930
以下の F# スクリプトをダウンロードします。
1つ目のスクリプトを実行します。
fsharpi Convert.fsx
1つの辞書ファイルが生成されます。
- novial.txt (Novial → 英語)
辞書ファイルを ~/share
に置くとしてエイリアスを定義します。
alias nov='gdict -d ~/share/novial.txt'
使い方は今までの言語と同じです。
英語の綴りを直しただけの単語は対応する英語が省略されているため、今まで例に使っていた indicate は c → k に修正して、接尾辞を取り除いて検索します。
$ nov indika ✔ indika FE, D -izieren, angeben, anzeigen. ✔ indikative (gram.). ✔ sindikalisme | -liste.
※ FE というのは、フランス語と英語の対応語が省略されていることを意味します。
見出しに接尾辞も収録されています。先頭にハイフンが付くオプションでない引数を使用するには、ダブルクォートで囲んでバックスラッシュを付けます。
$ nov "\-ere" ✔ droge D, F drogue, E drug | -ere | -eria. ✔ -ere (-ro, -ra) F -eur, -ateur, celui qui fait qqch ou est occupé par, E -er, -or, person occuþied in doing, D -er, -eur, -or, -ator, Person die mit etw. beschäftigt ist; ex. bakere, redaktere, bankere, judikere F juge, E judge, D Richter; reptere FE reptile, D Kriechtier; klimere F plante grimpante, E climbing plant, D Kletterpflanze | kp. -iste: reformere introdukte reformes, reformiste favora reformes. ✔ -eria (-ere + -ia): printeria F imprimerie, E printing office, D Buchdruckerei; bakeria, laveria.... ✔ shu(e) E shoe, D Schuh, F soulier | -ere.
この辞書では情報が不足すると感じる場合は Glosbe を使うと良いでしょう。
Wiktionary と OmegaWiki と Tatoeba の情報を組み合わせて、割と良い感じにまとめてくれます。
他の言語
1行1単語形式のテキストファイルがあれば他の言語にも応用できます。
たとえば以下にパブリックドメインの英和辞書データがあります。
これを適当な場所に置いて gdict のエイリアスを設定すれば、同様に使用できます。