1
0

More than 1 year has passed since last update.

greple で「ですます調」を「である化」する

Last updated at Posted at 2021-06-06

greple -Msubst

greple は、その名の通り grep 系のツールだが、モジュールで拡張することができて、テキスト処理のフレームワークとして機能する。 subst モジュールは、辞書データに基づいて用語をチェックしたり修正したりするためのものだ。これについては、以前以下の記事で紹介した。

desumasu-converter

最近、シンプルな方法で日本語の「ですます調」と「である調」を変換するという記事を見かけたので、それを subst モジュールの辞書として実装してみた。内容については元記事をご覧あれ。

greple -Msubst::desumasu

単に変換するだけなら元のツールを使えばいいので、わざわざ別実装する必要はないのだが、subst モジュールが持つ編集や校正をサポートする機能が使えるようになる。また、元々 greple が持っている範囲指定の機能なども有効なはずだ。

ただ、正直なところ、このツールをそのまま実用に供することはあるまいとも思う。Word や textlint にも類似の機能はあるようだ。まずは、ほぼ互換の機能を実装してみて、ブラッシュアップするための叩き台としてみた。

--dearu オプション:「ですます部」を検索

--dearu オプションは「ですます調」を「である化」する。単独で使うと辞書にマッチする部分に色をつけて表示する。

スクリーンショット 2021-05-29 15.08.45.png

--dearu --subst オプション:「である化」

--subst オプションをつけると、マッチした箇所を「である調」に変換する。たまにおかしいところもあるが、概ね期待したように変換されている。サンプル文書だということもあるが、正直予想以上の結果だ。

スクリーンショット 2021-05-29 15.09.07.png

--all オプション:全体表示

greple は、デフォルトではマッチした行しか表示しない。ファイル全体を表示したければ --all を指定する。

スクリーンショット 2021-05-29 15.09.22.png

--diff オプション:差分出力

どのように修正されるかを見たい場合は --diff オプションを指定すると、差分を unified diff の形式で出力する。

スクリーンショット 2021-05-29 21.48.38.png

cdif:差分の強調表示

これではどこが変わっているのかわかりにくいので、たとえば cdif コマンドを通すと、こんな風に色を着けることができる。

スクリーンショット 2021-05-29 15.10.00.png

適用範囲の選択

たとえば引用文など、変換対象外にしたい部分がある場合、greple のオプションで指定することができる。

で囲まれた部分を除外したければ --exclude オプションに 『.*?』 というパターンを指定して、次のようにする。

greple -Msubst::desumasu --dearu --exclude '『.*?』'

対象部分が複数行に渡る可能性がある場合は (?s)『.*?』 とすれば . が改行文字にもマッチするようになる。

これ以外にも --inside, --outside, --include, --exclude オプションを組み合わせることで、様々な領域を指定することができるし、より複雑な構造を指定したい場合には、これらのオプションにパターンではなく関数を与えることもできる。

--overwrite, --replace, --create:ファイルの更新

問題がなければ、ファイルを修正してもいい。--overwrite オプションを使うと、ファイルの内容を変更する。--replace オプションでバックアップを作ったり、--create で別の名前で作ることもできる。

git で管理していればバックアップを作る必要はないし、あると却って散らかって邪魔だ。下の例では、ファイルを更新した後に git diff の出力を sdif を通して表示している。

スクリーンショット 2021-05-29 15.12.20.png

オプション

  • --dearu
    「ですます調」を「である化」する。
    • --dearu-n
      「ね」を削除しない。
    • --dearu-N
      「ね」を無視する。
  • --desumasu
    「である調」を「ですます化」する。
    • --desumasu-n
      「ね」を削除しない。
    • --desumasu-N
      「ね」を無視する。

インストール

~~CPAN には当面リリースする予定はないので、~~インストールは以下の git リポジトリからお願いします。

cpanm https://github.com/kaz-utashiro/greple-subst-desumasu.git

[2022-04-22 追記]
CPAN にリリースしたので、こちらも利用可能です。

cpanm App::Greple::subst::desumasu

git リポジトリ

今後の計画

subst モジュールの辞書は、正誤両方にマッチするパターンに対して、期待する言葉を登録するものだ。現状の DESUMASU 辞書はそのような形になっていないので、作り直す可能性はある。それも、この実装をどのように実用化するかによる。要望等あれば、ここの質問や github の issue でどうぞ。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0