ネット検索は面倒&遅い。
これまで
- Googleで検索
キーワード 意味
キーワード 類語
キーワード 対義語
キーワード 英語
キーワード キーワード 違い
翻訳
- キーワード
- 文章
- URL
毎回Google検索すると以下のような不都合が生じる。
- ネット接続必須
- メモリ圧迫
- フリーズ、ひいてはクラッシュのリスク増加
- スワップ酷使によるHDD寿命短縮
- 手間&遅い
- キーワード入力し、表示待機し、リンクをクリックし、本文を見る
辞書を使う場面
英和・和英
- 名付け
- プログラミング
- 変数
- メソッド
- ファイル・ディレクトリ名
- プログラミング
- リビジョン管理
- コミットメッセージ
名付けは非常に重要であり多用するので是非ともローカル辞書が欲しい。
ローカル辞書が欲しい
1. 辞書を選別する
1-1. ファイル形式
辞書データのファイル形式はPDICである。PDIC形式はプレーンテキストで見出語, 訳語の行が交互に現れる形式である。
見出語1 訳語1 見出語2 訳語2
たとえば国語辞典なら以下。
愛 幻想である。 夢 空想である。
英和(英単語)辞典なら以下。
love 愛 dream 夢
この形式を保つことでgrep
コマンドにより語と訳を表示できる。
引数 | 説明 |
---|---|
grep -A |
一致した後の NUM 行を表示する |
grep -B |
一致した前の NUM 行を表示する |
1-1-1. 未来は暗い?
おそらく、テキスト形式の辞書データは営利目的にそぐわない。よって販売終了とする。これからはスマホアプリという形で販売する狙いか。
辞書は自分で作るしかない。
2. 辞書をダウンロード&展開する
cd /tmp/work wget http://www.namazu.org/~tsuchiya/sdic/data/gene95.tar.gz tar zxvf gene95.tar.gz wget http://www.namazu.org/~tsuchiya/sdic/data/gene95.tar.gzhttp://www.namazu.org/~tsuchiya/sdic/data/edict.gz tar zxvf edict.gz
3. 辞書の文字コードを調べる
GENE95
$ file -i /tmp/work/gene.txt /tmp/work/gene.txt: text/plain; charset=unknown-8bit
unknownになったがShift-JIS
である。
Windowsで作成されたので改行コードがCR+LFになっているはず。Linux用にLFのみにすべく以下コマンドを実行する。
$ cat ./src.txt | tr '>' '\n' > ./dst.txt $ cat /tmp/work/gene.txt | tr -d '\r' > /tmp/work/gene.LF.txt
EDICT
$ file -i /tmp/work/edict /tmp/work/edict: text/plain; charset=iso-8859-1
4. 辞書の文字コードを変換する
$ iconv -c -f sjis -t utf8 /tmp/work/gene.LF.txt > /tmp/work/gene.LF.utf8.txt $ iconv -c -f ISO-8859-1 -t utf8 /tmp/work/edict > /tmp/work/edict.utf8
EDICTはうまく変換できなかったので以下からダウンロードした。
5. スクリプトを作る
- 辞書を引くスクリプトをつくる
- コマンド名を
dict
で統一する - 辞書を自動で指定する
5-1. 辞書を引くスクリプトをつくる
~/.bashrc
# 辞書を引く(英和) function ejdict() { grep "$1" /tmp/work/gene.LF.utf8.txt -E -A 1 -wi --color=always | less -R -FX } # 辞書を引く(和英) function jedict() { grep "$1" /tmp/work/gene.LF.utf8.txt -E -B 1 -wi --color=always | less -R -FX }
使ってみる。
$ ejdict glasses
$ jedict 眼鏡
接頭辞ej
, je
がわかりにくい。コマンド名dict
で統一したい。
5-2. コマンド名をdict
で統一する
#!/bin/bash # ---------------------------------------------------------------------------- # 辞書検索 # $1: 辞書(ej: 英和, je:和英, 他:エラー) # $2: 検索キーワード # 更新日: # 2019-02-17 新規作成 # ---------------------------------------------------------------------------- DictFile() { echo "${HOME}/root/db/dictionary/GENE95/gene.LF.utf8.txt"; } EnJa() { grep "${1}" "`DictFile`" -E -A 1 -wi --color=always | less -R -FX; } JaEn() { grep "${1}" "`DictFile`" -E -B 1 -wi --color=always | less -R -FX; } Run() { case "${1}" in "ej" ) EnJa "${2}" ;; "je" ) JaEn "${2}" ;; * ) echo "第一引数は 'ej' 'je' のいずれかにしてください。それぞれ英和、和英です。" ;; esac } Run "${1}" "${2}"
第一引数ej
, je
がいちいち面倒。
5-3. 辞書を自動で指定する
#!/bin/bash # ---------------------------------------------------------------------------- # 辞書検索 # $1: 検索キーワード(キーワードが英字なら英和、それ以外なら和英) # 使用例: # dict 終わり 和英 # dict end 英和 # dict ^end$ 完全一致(^検索キーワード$) # dict ^end 前方一致(^検索キーワード) # dict end$ 後方一致(検索キーワード$) # 更新日: # 2019-02-18 引数最小化 # 2019-02-17 新規作成 # ---------------------------------------------------------------------------- DictFile() { echo "${HOME}/root/db/dictionary/GENE95/gene.LF.utf8.txt"; } EnJa() { grep "${1}" "`DictFile`" -E -A 1 -wi --color=always | less -R -FX; } JaEn() { grep "${1}" "`DictFile`" -E -B 1 -wi --color=always | less -R -FX; } Run() { [[ "${1}" =~ ^[a-zA-Z_0-9]+$ ]] && EnJa "${1}" || JaEn "${1}"; } #Run() { [[ "${1}" =~ ^[\u3041-\u3096\u30A1-\u30FA々〇〻\u3400-\u9FFF\uF900-\uFAFF\uD840-\uD87F\uDC00-\uDFFF]+$ ]] && EnJa "${1}" || JaEn "${1}"; } #Run() { # https://so-zou.jp/software/tech/programming/tech/regular-expression/meta-character/variable-width-encoding.htm # HIRAGANA=\u3041-\u3096\ # KATAKANA=u30A1-\u30FA # KANJI=々〇〻\u3400-\u9FFF\uF900-\uFAFF\uD840-\uD87F\uDC00-\uDFFF # [[ "${1}" =~ ^[${HIRAGANA}${KATAKANA}${KANJI}]+$ ]] && JaEn "${1}" || EnJa "${1}" #} Run "${1}"
dict end
など一般的な語を調べると膨大な量が出る。end
に完全一致するものを最上位に表示したい。
参考
- https://tagengo-gakushuu.hatenablog.jp/entry/20150827/p1
- https://qiita.com/yubais/items/21cac44d71c30edd22c9
- http://www.namazu.org/~tsuchiya/sdic/
質問サイト。
EPWING形式。
辞書ファイルまとめ。
著作権切れ辞書の画像データ。
Wikipediaのローカル化は比較的かんたんかも。画像ファイルからテキスト化はOCR技術が必要なので難易度が高そう。
所感
いい感じ。あとは日本語で文章を書くとき用として以下の辞書も欲しい
- 語源
- 国語辞典(読み→漢字・意味・用例)
- 漢和辞典(画数→漢字・読み)
- 対義語
- 類語
- 語録
- 熟語
- 四字熟語
- 慣用句
- 諺
- 名言
- 方言
- 語集(用語辞典)
- 品詞
- 人名
- 地名
- 国名
- 一人称
- 語尾
- 職業
- 身分