Redpen
redpen

Redpenとは、自然言語で書かれた文章が規約に従っているのか、自動でチェックするためのコマンドラインツールです。 Windowsで使っている記事を見ることは少ないのですが、読みやすい文章をかけるよう使用してみます。

環境構築

今回の環境

  • Windows 8.1 x64
  • Redpen 1.5.2
  • Java 1.8.0_65

※ はじめはRedpen Ver1.5.5でテストしましたが、不具合(DoubledWordが効かない)があったので1.5.2にしました。

ダウンロードと設定

ダウンロード

  1. RedpenをReleaseからダウンロード
  2. Java1.8.4以上が入っていなければインストール

設定

  1. ダウンロードしたZIPファイルを任意のフォルダに解凍
  2. ユーザー環境変数のPATHにRedpenフォルダの~/binを追加
  3. システム環境変数にJAVA_HOMEを追加

JAVA_HOMEが設定されていませんと表示された方は、3の設定がされていない可能性があります。
画像で示すと、私の環境ではこうなります。PATHの追加では他のディレクトリと;で区切ってください。
redpen_environmental

サンプルで動作チェック

サンプルテキストをチェックにかけてみましょう。コマンドはredpen ファイル名です。

最近利用されているソフトウェアの中には複数の計算機上で動作(分散)するものが多く存在し、このような分散ソフトウェアは複数の計算機で動作することで大量のデータを扱えたり,高負荷な状況に対処できたりします。 本稿では,複数の計算機(クラスタ)でで動作する各サーバーを「インスタンス」と呼びまます。 たとえば検索エンジンやデータベースではインデックスを複数のインスタンスで分割して保持します。 このような場合、各インデクスの結果をマージしてclientプログラムに渡す機構が必要となります。

redpen1

なんということでしょう。
たった4文で27箇所が指摘されました。このままでは結果がわかりにくいのでいくつか抜き出します。

最近利用されているソフトウェアの中には複数の計算機上で動作(分散)するものが多く存在し、このような分散ソフトウェアは複数の計算機で動作することで大量のデータを扱えたり,高負荷な状況に対処できたりします。

  • [SentenceLength] 文長(”101”)が最大値 “100” を超えています。
  • [InvalidSymbol] 不正なシンボル “,” がみつかりました。
  • [DoubledWord] 一文に二回以上利用されている単語 “〇〇” がみつかりました。

本稿では,複数の計算機(クラスタ)でで動作する各サーバーを「インスタンス」と呼びまます。

  • [SuccessiveWord] 単語 “で” は連続して使用されています。
  • [KatakanaEndHyphen] カタカナ単語 “サーバー” に不正なハイフンが見つかりました。

このような場合、各インデクスの結果をマージしてclientプログラムに渡す機構が必要となります。

  • [SpaceBetweenAlphabeticalWord] アルファベット単語の前にスペースが存在しません。

考察

良い点

  • 長過ぎる文章はエラーを出力。
  • 句読点がカンマになっているとエラーを出力。

悪い アレレ?な点

  • 一文に二回以上利用されている単語についてうるさいが、本稿では~ の文章において ”では” と ”で” を同じものとして見てしまっている。
  • 「単語 “で” は連続して使用されています。」と言っておきながら文末の インスタンスと呼びまます。 はスルーする。
  • カタカナに長音をつけると「ハイフンだ」といって怒る。

規約ではアルファベットの前後にスペースを求めるようです。しっかりした文書を書くつもりではないので私には不要でした。 また、InvalidSymbolはデフォルトで “( )” や “:” も不正なシンボルとしてエラーを出します。設定を変更すればエラーはでなくなりますが、面倒だなと思ってしまい不要な設定2ということに。

設定を変更する

Redpenは「技術文書の校正」に用いられるツールであり、このまま使用するには規約が厳しいです。お堅い文章になりすぎないように設定を変更しましょう。 詳しくはRedpen 1.5 ドキュメントに書かれているのでそちらを参考にしてください。

confフォルダのredpen-conf-ja.xmlを開くと、デフォルトではこのようになっていました。

<redpen-conf lang="ja">
    <validators>
        <validator name="SentenceLength">
            <property name="max_len" value="100"/>
        </validator>
        <validator name="InvalidSymbol"/>
        <validator name="KatakanaEndHyphen"/>
        <validator name="KatakanaSpellCheck"/>
        <validator name="SectionLength">
            <property name="max_num" value="1500"/>
        </validator>
        <validator name="ParagraphNumber"/>
        <validator name="DoubledWord" />
        <validator name="SpaceBetweenAlphabeticalWord" />
        <validator name="CommaNumber" />
        <validator name="SuccessiveWord" />
        <validator name="JavaScript" />
    </validators>
</redpen-conf>

この中から自分の要らない設定はコメントアウトしましょう。 先ほどの結果で厳しいと感じた規約はシンボル、長音、アルファベット、同じ単語についてだったので、無効にするのは以下の4つでしょうか。

  • InvalidSymbol
  • KatakanaEndHyphen
  • SpaceBetweenAlphabeticalWord
  • DoubledWord

ドキュメントに書いてあった他の機能も追加しました。

  • InvalidExpression - 入力に不正な表現(単語や句)が存在するか検査します。
  • JapaneseStyle - ですます調とである調が混在して利用された場合、エラーを出力します。
  • DoubleNegative - DoubleNegative は入力文書に二重否定が使用されているとエラーを出力します。
  • FrequentSentenceStart - 多くの文が同一表現から開始されているときにエラーを出力します。

変更後の設定はこのようになりました。いくつか行を入れ替えています。

<redpen-conf lang="ja">
    <validators>
        <validator name="SentenceLength">
            <property name="max_len" value="100"/>
        </validator>
        <validator name="SectionLength">
          <property name="max_num" value="1500"/>
        </validator>
        <validator name="KatakanaSpellCheck"/>
        <validator name="ParagraphNumber"/>
        <validator name="CommaNumber" />
        <validator name="SuccessiveWord" />
        <validator name="JavaScript" />
        
        <!-- 追加 -->
        <validator name="InvalidExpression"/>
        <validator name="JapaneseStyle"/>
        <validator name="DoubleNegative"/>
        <validator name="FrequentSentenceStart"/>
        
        <!-- 無効 -->
        <!-- <validator name="KatakanaEndHyphen"/> -->
        <!-- <validator name="DoubledWord" /> -->
        <!-- <validator name="SpaceBetweenAlphabeticalWord" /> -->
        <!-- <validator name="InvalidSymbol"/> -->
    </validators>
</redpen-conf>

リベンジ

新しい設定でもう一度チェックにかけてみました。
redpen2
随分と出力がすっきりしました。指摘されていることは2つですね。

  • [SentenceLength] 文長(”101”)が最大値 “100” を超えています。
  • [SuccessiveWord] 単語 “で” は連続して使用されています。

今後、[SuccessiveWord]で 呼びまます。 が指摘されるようになれば、このサンプル文のチェックとして問題ないと思います。

追加した設定のチェック

新しく追加した設定がどうなのか調べるために「二重否定をしながら、ですます調とである調がまざり、不正な表現の入った、同一の表現から始まる文章」を作ってみました。

吾輩は猫でないこともないのである。 吾輩は名前はまだないのです。 吾輩はどこで生れたかとんと見当がつかないです。 吾輩は何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。 吾輩はオワタ。

  • [FrequentSentenceStart]のエラーが起こる最小数は5回だったため5行書いています。
  • ドキュメントには不正な表現例として”オワタ”とあったので組み込みました。

この文章をチェックした結果はこうなりました。
redpen3

ですます調、不正な表現が指摘されていない

結果を見ると、二重否定と同じ始まり方が多いことはエラーが出ています。しかし公式に記載されていたですます調 である調の混在や、”オワタ”という表現は指摘されませんでした。

不正な表現をもとめて

不正な表現を求めていろいろなイケナイ言葉を入れてみましたが、なぜか”最高”という表現は不正とエラーが出ました。わけがわからないです。
redpen4

おわりに

あまり詳しく調べていないが故にあまりうまく動いていないです。申し訳ありません。
主要な機能がどんどん削られた形になりましたが、言葉尻よりもしっかりとした構成で書くことが大前提ですね。