initメソッド
RedPenではvalidatorブロックのpropertyに名前と値のペアを渡すことで,
たとえばSentenceLengthValidatorでは文の最大文長をpropertyを利用してデフォルトの設定を変更できます。次のコードはSentenceLengthValidatorで文長を150に設定した例です。
<validator name="SentenceLength">
<property max_len="150" >
</validator>
以下のSentenceLengthValidatorのinitメソッドで,
@Override
protected void init() throws RedPenException {
this.maxLength = getConfigAttributeAsInt("max_len", DEFAULT_MAX_LENGTH);
}
preValidateメソッド
一度文書内の情報を抽出したのちvalidateで検査を実行したい場合には,
たとえばpreValidateメソッドはDuplicateSection機能を実現するために利用されています。DuplicateSectionは文書内に存在する類似する節ペアを抽出します。
DuplicateSectionではpreValidateメソッドをはじめに文書中すべてのSectionにたいして呼び出し,
追加されたValidatorの利用
Validatorを拡張して作成したクラスが提供する機能を呼び出すには以下の二つのステップが必要です。ひとつは設定ファイルへの追加で,
設定の追加
RedPenでは"cc.
作成した機能を設定に追加する際には語尾のValidatorを抜かした名前を指定します。すると指定したValidatorが生成され,
<validators>
<validator name="ChineseSuffix" />
</validators>
エラー文テンプレートの追加
エラー文は継承したValidator毎に存在します。以下はSentenceLengthValidatorのエラー文テンプレートです。
SentenceLengthValidator=文長("{0}")が最大値 "{1}" を超えています。
SentenceLengthValidatorでは"{0}"に入力文の長さ,
- redpen/
redpen-core/ src/ main/ resources/ cc/ redpen/ validator/ - redpen/
redpen-core/ src/ main/ resources/ cc/ redpen/ validator/ sentence/
両ディレクトリの中に各入力言語用のエラー文テンプレートファイル
その他のコンポーネント
上記のDocumentモデルとValidatorを理解していれば機能を実装するのに十分です。以下に紹介するのは,
RedPen
RedPenはDocumentParserや設定ファイルに登録されたValidator群を利用して文書の検査を行います。登録されたValidator群を文書内のブロックに適応し,
Formatter
FormatterはRedPenオブジェクトによって返されたエラー集合を出力するためのフォーマッティングを行います。出力フォーマットはテキスト,
Configuration
Configurationは設定ファイルを読み込むためのクラスです。設定ファイルに追加された機能や,
Tokenizer
Tokenizerは入力文書を単語に分割します。デフォルトではWhiteSpaceTokenizerというスペースで単語を分割するだけなのですが,
Tokenizerによって分割された単語は検査で利用できます。具体的にはValidator.
まとめ
今回はRedPenの内部について解説しました。具体的にはRedPenに機能を追加するのによく利用するクラスDocumentParserとValidatorsを解説しました。次回は今回の知識を基に簡単な機能を追加してみます。