スペルチェックの辞書書式や、短縮形の英単語のチェック方法について

  1. スペルチェックの辞書は、どのように編集したらよいのでしょうか。

    以下なのかな?と思いましたが、編集の仕方が分かりませんでした。
    %ProgramFiles%\mery\dict\en_US.dic

    現在、meryは、管理者で、%ProgramFiles%\meryにインストールしています。
    (過去は一時期、%localappdata%配下でした)

    また、以下の部分が気になったのですが、赤くならないようにすることは可能でしょうか?

    1. couldln't →couldlnが、赤線
    2. could/T   →赤線なし
    3. could've →veが、赤線
    4. haven't →赤線なし。(Haven/Mという登録のおかげ?)
    5. isn't →isnが赤線。

    ちなみに、上記の単語は、すべて、%ProgramFiles%\mery\dict\en_US.dic には入っています。

     |  tak  |  返信
  2. Mery ではスペルチェックに OpenOffice や Google Chrome などと同じ、Hunspell というスペルチェッカーを使用していますが、同梱の辞書ファイルは私が作成したものではないため、辞書の編集方法については私もわかりません。

    dic ファイルの仕様について調べてみましたが、情報はほとんど見当たりませんね。

    公式ではありませんが、それっぽいサイトを見つけたので、一応、リンクを貼っておきます。(すごく難しそう…)

    【参考】man hunspell (Fichiers spéciaux) - format of Hunspell dictionaries and affix files
    https://web.archive.org/web/20221103132304/http://pwet.fr/man/linux/fichiers_speciaux/hunspell/

    次に、「短縮形の英単語のチェック方法について」ですが、これは現状の仕様では無理だろうと思われます。

    というのも、Mery では単語ごとに区切ってスペルチェックをしているのですが、アポストロフィ (') は記号として扱われるため、そこで単語に区切られてしまうようです。

    「'」を記号ではなく、単語の一部として扱うようにすれば正しく認識できそうなので、次のバージョンでは対応してみますね。

    > 1. couldln't →couldlnが、赤線

    これは、上記の対応で「'」も含めて単語として認識するようになるので、couldln't が赤線になると思います。

    > 2. could/T   →赤線なし

    これは、「/」が記号なので、could と T に分割されてスペルチェックされるため、現状の仕様でもチェックに引っかからないようです。

    > 3. could've →veが、赤線

    これは、上記の対応で could've が正しい単語として認識されるようになるはずです。

    > 4. haven't →赤線なし。(Haven/Mという登録のおかげ?)

    これは、現状の仕様だと「'」が記号として扱われるので、haven と t に分割されてスペルチェックされるため、チェックに引っかからないようです。

    ちなみに、上記の参考サイトによると /T や /M とかは特別な属性を表すフラグのようですね。T や M のフラグに関するドキュメントは見つけられませんでしたが…。

    > 5. isn't →isnが赤線。

    これも、上記の対応で isn't が正しい単語として認識されるようになります。

    > ちなみに、上記の単語は、すべて、%ProgramFiles%\mery\dict\en_US.dic には入っています。

    ということは、1 の couldln't は couldn't の書き間違いでしょうか?

    en_US.dic に入っている couldn't ということでしたら、これも、上記の対応で couldn't が正しい単語として認識されるようになると思います。

     |  Kuro  |  返信
  3. 対応のご意向、ありがとうございます。

    また、マニュアルも大変勉強になりました。英語のジャーナルをエディターで書いたりするので、辞書の仕様が分かったことはとても大きいです。

    atfファイルというのが、affixの略で、接辞(prefix 接頭辞、suffix接尾辞 )
    の定義(単語の変化の定義)だったんですね。すごく勉強になりました。

    例えば、
    abの活用として、abed や ably等がアリとして許される仕様が、以下のような流れだということが、よくわかりました。
    ありがとうございます。

    1. en_US.dic の中に、ab/DY がある。
      ⇒abという単語のサフィックス(末尾に追加)として、DやYの変化を許可
      
    2.en_US.aff の中にあるサフィックス「D」の定義で・・・
      ⇒SFX D 0 ed [^ey]
      eやyで終わらない単語のサフィックスとして、ed
    1と2により、ab abed が許可される。

    ~~~~~~
    3.en_US.aff の中にあるサフィックス「Y」の定義で・・・
      SFX Y 0 ly .
    特に制限なし(正規表現 .)で、末尾に追加で、lyを付ける変化を許可

    1と3によって、ably が許可される。

    ~~~~~
    という感じで、以下のような単語もアリと判定される

    can't
    can'a
    can'b
    can'c
    can'*

    とうことですね。よく使う俗語(特に動詞)とかの登録が登録が出来て凄く助かりました。「google」とか「ballpark」とか。

    これらの造語の動詞なら、以下の4つのフラグを取って、/BDGSとかにしておけばよさそうですね。
    ・able変化の「B」フラグ
    ・ing変化の「G」フラグ
    ・ed変化の「D」フラグ
    ・三人称現在のsの変化の「S」フラグ

     |  tak  |  返信
  4. ご返信ありがとうございます。

    なるほど、dic ファイルの中で使われている /T とかのサフィックスって、aff ファイルの中で定義されていたのですね。

    どうりで、/T とかの意味をググっても見つからないわけでした。

    わかりやすいご説明、ありがとうございます。あの英語のマニュアルは難しそうで、途中で読むのをやめてしまいましたが、今回教えていただいた方法なら私にも理解できそうな気がしてきました。

    > よく使う俗語(特に動詞)とかの登録が登録が出来て凄く助かりました。「google」とか「ballpark」とか。
    > これらの造語の動詞なら、以下の4つのフラグを取って、/BDGSとかにしておけばよさそうですね。

    勉強になります。名詞ならユーザー辞書 (赤線の単語を右クリックして [辞書に追加]) でも良さそうですが、動詞のように変化するものは辞書ファイルを直接編集するしかなさそうですね。

    もしかして、affix 付きでユーザー辞書に登録できるのではないかと思い、調べてみましたところ、一応、それに近い機能はあったのですが…

    Hunspell_add_with_affix("neko", "DY");

    こんな感じで、"neko" という単語に "DY" サフィックスを付けてユーザー辞書に登録できるわけではなく、あらかじめ dic ファイルに「ab/DY」のような単語の登録があることを前提に、

    Hunspell_add_with_affix("neko", "ab");

    このように指定すると、"neko" という単語をユーザー辞書に登録するときに、dic ファイルから "ab" の affix を拾ってきて "neko" に適用してくれる、という感じだったので、Mery から使う機能としてはちょっと実用的ではなさそうでした。

    でも、ユーザー辞書 (Mery.ini と同じ場所に出力される Mery.dic) を直接編集するなら、

    neko/ab
    nikukyu/ab

    こんな感じの書式にして、affix のコピー元を書いておく、みたいな方法はアリかもしれないですね。

     |  Kuro  |  返信
  5. > こんな感じの書式にして、affix のコピー元を書いておく、みたいな方法はアリかもしれないですね。

    面白そうですね。結構ありな気がします。

    affix の仕様も相まって、使い方が難しくなりそうな心配はありますが…まぁ、使っても使わなくてもいいところが複雑になっても、ユーザーを困らせることは、なそうですね。

     |  tak  |  返信
スポンサーリンク