▼ おーぷん ▼
この英単語の意味が知りたい、というときならよくあるオンラインの英和辞書でいいのですが、
「あの英単語を探したい!確かそんなに長くなくて最後が ia だったような・・・」
とか
「頭文字を先に決めててそれ合うように、 I から始まる単語でそれっぽい意味の言葉探したい」
とか
英単語自体を探そうとするとあまりいい辞書ってないです
というか見つけれませんでした
英和辞書のデータさえあれば自分で作れるのに、っと思って探してみるとフリーの辞書データがあったので作ってみました
辞書のデータってフリーで色々ありそうに思うのですけどほとんどなかったです
こういうデータはフリーにして Wikipedia みたいに誰か更新していくようなのあったほうが良さそうだと思うけどなー
http://nmm.blog.jp/hp/tool/dictsearch/dictsearch.html
文字を入れると自動で検索します
いちいち検索ボタン押さなくてもヒットしたのが更新されていくのが欲しかったやつなんです!
あとは下にボタンが並んでいて検索モードが変わります
「..a..」 は一般的な検索で、入力した文字が含まれる単語を検索します
「"a"」 は普通な辞書のように入力した単語そのものの意味を調べます
「a..」 は入力した文字から始まる単語を検索します
「..a」 は入力した文字で終わる単語を検索します
「/RE/」 は正規表現で検索します
記号が特別な意味を持っていて、柔軟に検索できるものです
例えば
「^abc」だと abc から始まるもの と言う意味です
「abc$」 だと abc で終わるものです
混ぜて「^abc$」だと abc と一致するものです
なので正規表現だけで他のモードはなくても一応大丈夫だったりします
ただ記号書くのってめんどくさいので分けました
他にも色々できます
3 文字の単語
→ 「^...$」
(「.」 は何かの一文字になります)
a で始まって a で終わる
→ 「^a.*a$」
(「.*」 は何かの文字が0個以上になります)
a で始まって a で終わる 4 文字の単語
→ 「^a..a$」
ty で終わって 10 文字の単語
→ 「^.{8}ty$」
(「.{8}」は「.」が8個ということです
8つも書くと数えるのが大変なので数字で書くほうが楽です)
ty で終わって 10 文字以上の単語
→ 「^.{8,}ty$」
(「.{8,}」は「.」が8個以上ということです
「,」が増えた)
a から始まって ty または tion で終わる単語
→ 「^a.*(ty|tion)$」
(「|」が「または」になります
範囲はカッコの内側だけ)
同じ文字 3 連続が含まれる
→ 「(.)\1\1」
(「()」の中の文字は保存されて「\1」で使えます
数字が何番目の「()」かを表してるので2つめのカッコなら「\2」)
abcabc のように 3 文字以上の2回繰り返しが含まれる
→ 「(.{3,})\1」
記号が入らないもの
→ 「^[a-z]*$」
(「.」の代わりに「[a-z]」を使うと a~z のアルファベットだけになります)
子音だけの単語
→ 「^[bcdfghjklmnpqrstvwxyz]*$」
(「[]」は中の文字のどれかと言う意味なので子音を並べてます)
今回の検索に使わなそうなところは色々省略しましたが、こんな風にいろいろな検索ができます
○○から始まるものでこんな感じの意味の単語が欲しい、ってときは○○から始まるを検索した後に Ctrl-F のページ内検索機能を使って日本語検索すると捗るかも
最近ウィルスとか流行ってるみたいですし、最新版使ってくださいね
Internet Explorer はどう頑張っても更新されないので無理です
スマホなら Chrome なので使えるはず
スマホ意識したわけでもないのになんかスマホ向けっぽい画面になってました
ところで今回の辞書のデータなんと 4.5MB もあります
ライブドアブログのアップロード容量は最大でも 500MB なので、ちょっと大きめです
ついでにロード時間も短くしたいので圧縮してみて 1.7MB
やった、半分以下!と喜んだけど、解凍ってどうするんだろう・・・
JavaScript でしないといけないけど・・・
調べてみたら解凍できるライブラリがあったので使ってみました
他の新しめな機能も使ってすごく簡単にテキスト化できました
Woker の中なので importScripts でライブラリロードしてます
解凍や検索の処理が重く固まることのないようにバックグラウンドで実行です
JavaScript も便利になってきてますねー
「あの英単語を探したい!確かそんなに長くなくて最後が ia だったような・・・」
とか
「頭文字を先に決めててそれ合うように、 I から始まる単語でそれっぽい意味の言葉探したい」
とか
英単語自体を探そうとするとあまりいい辞書ってないです
というか見つけれませんでした
英和辞書のデータさえあれば自分で作れるのに、っと思って探してみるとフリーの辞書データがあったので作ってみました
辞書のデータってフリーで色々ありそうに思うのですけどほとんどなかったです
こういうデータはフリーにして Wikipedia みたいに誰か更新していくようなのあったほうが良さそうだと思うけどなー
つかいかた
URL はここhttp://nmm.blog.jp/hp/tool/dictsearch/dictsearch.html
文字を入れると自動で検索します
いちいち検索ボタン押さなくてもヒットしたのが更新されていくのが欲しかったやつなんです!
あとは下にボタンが並んでいて検索モードが変わります
「..a..」 は一般的な検索で、入力した文字が含まれる単語を検索します
「"a"」 は普通な辞書のように入力した単語そのものの意味を調べます
「a..」 は入力した文字から始まる単語を検索します
「..a」 は入力した文字で終わる単語を検索します
「/RE/」 は正規表現で検索します
正規表現って?
プログラム書くとよく使う便利なものですが、普通の人は知らない人多いと思うので簡単に説明します記号が特別な意味を持っていて、柔軟に検索できるものです
例えば
「^abc」だと abc から始まるもの と言う意味です
「abc$」 だと abc で終わるものです
混ぜて「^abc$」だと abc と一致するものです
なので正規表現だけで他のモードはなくても一応大丈夫だったりします
ただ記号書くのってめんどくさいので分けました
他にも色々できます
3 文字の単語
→ 「^...$」
(「.」 は何かの一文字になります)
a で始まって a で終わる
→ 「^a.*a$」
(「.*」 は何かの文字が0個以上になります)
a で始まって a で終わる 4 文字の単語
→ 「^a..a$」
ty で終わって 10 文字の単語
→ 「^.{8}ty$」
(「.{8}」は「.」が8個ということです
8つも書くと数えるのが大変なので数字で書くほうが楽です)
ty で終わって 10 文字以上の単語
→ 「^.{8,}ty$」
(「.{8,}」は「.」が8個以上ということです
「,」が増えた)
a から始まって ty または tion で終わる単語
→ 「^a.*(ty|tion)$」
(「|」が「または」になります
範囲はカッコの内側だけ)
同じ文字 3 連続が含まれる
→ 「(.)\1\1」
(「()」の中の文字は保存されて「\1」で使えます
数字が何番目の「()」かを表してるので2つめのカッコなら「\2」)
abcabc のように 3 文字以上の2回繰り返しが含まれる
→ 「(.{3,})\1」
記号が入らないもの
→ 「^[a-z]*$」
(「.」の代わりに「[a-z]」を使うと a~z のアルファベットだけになります)
子音だけの単語
→ 「^[bcdfghjklmnpqrstvwxyz]*$」
(「[]」は中の文字のどれかと言う意味なので子音を並べてます)
今回の検索に使わなそうなところは色々省略しましたが、こんな風にいろいろな検索ができます
○○から始まるものでこんな感じの意味の単語が欲しい、ってときは○○から始まるを検索した後に Ctrl-F のページ内検索機能を使って日本語検索すると捗るかも
内部事情
新しめな機能を使いたくて使ったので古いブラウザは対応してません最近ウィルスとか流行ってるみたいですし、最新版使ってくださいね
Internet Explorer はどう頑張っても更新されないので無理です
スマホなら Chrome なので使えるはず
スマホ意識したわけでもないのになんかスマホ向けっぽい画面になってました
ところで今回の辞書のデータなんと 4.5MB もあります
ライブドアブログのアップロード容量は最大でも 500MB なので、ちょっと大きめです
ついでにロード時間も短くしたいので圧縮してみて 1.7MB
やった、半分以下!と喜んだけど、解凍ってどうするんだろう・・・
JavaScript でしないといけないけど・・・
調べてみたら解凍できるライブラリがあったので使ってみました
他の新しめな機能も使ってすごく簡単にテキスト化できました
importScripts("/lib/pako_inflate.min.js")
!async function () {
const a = await fetch("resources/dict.gz").then(e => e.arrayBuffer())
const decoder = new TextDecoder()
const result = decoder.decode(pako.ungzip(a))
console.log(result)
}()
Woker の中なので importScripts でライブラリロードしてます
解凍や検索の処理が重く固まることのないようにバックグラウンドで実行です
JavaScript も便利になってきてますねー
▲ くろーず ▲