校正・推敲プラグイン

 Tomarigiで使用される校正・推敲プラグインを作成するためには,saezuriライブラリを利用します.saezuriライブラリには,校正・推敲プラグインとして動作するための「インターフェース(IPlugin)」が定義されています.この定義にしたがって,プロパティやメソッドを作成する必要があります.また,この処理を簡易化するための抽象クラス(IPluginBase)もライブラリ内に内臓されています.したがって,このインターフェースおよび抽象クラスを継承して,プラグインを作成して下さい.


プラグインクラス作成例

 新規プロジェクトで,「クラスライブラリ」として作成します.使用する.NET Framework のバージョンは,3.5以上を選択して下さい.また,参照設定としてsaezuri.dllを指定します(「saezuri(言語解析)」のページに方法有り).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using saezuri.plugin;
using saezuri.NLP;

namespace plugin_sample
{
    public class plugin_sample : IPluginBase, IPlugin
    {

    }
}

 校正・推敲プラグインのコンストラクタでは,プラグインの属性情報の設定と設定ファイルの読み込みを行います.以下のような記述を行います.


        public plugin_sample()
        {
            // プラグイン名
            this.Name = "第二形態素のチェック(サンプル)";
            // プラグインの詳細説明
            this.Description = "二番目の形態素をチェックします.";
            // プラグインの役割
            this.Role = ROLETYPE.PROOFREADING;
            // チェック機能があるか
            this.EnabledCheck = true;
            // 設定ダイアログがあるか
            this.HasSetupDialog = true;

            // 設定
            Setting.DATA = saezuri.CUtility.LoadData<Setting>(string.Format("{0}{1}.xml", IPluginBase.SettingFolder, this.AssemblyName));
            // 色設定がない場合のデフォルト
            if (string.IsNullOrEmpty(Setting.DATA.ColoringStr) == true) { Setting.DATA.ColoringStr = System.Drawing.Color.Red.Name; }
            Setting.DATA.Coloring = System.Drawing.Color.FromName(Setting.DATA.ColoringStr);

        }

 校正・推敲プラグイン内では,主にCheckメソッドを実装します.Checkメソッドは,引数の違いにより3種あります.どの範囲を対象とした指摘を行うかによって,それぞれ,文書(CDocument)・段落(CParagraph)・文(CSentence)を引数にする3種を使い分けます.すべてのCheckメソッドを実装する必要はありません.必要なCheckメソッドのみ実装します.各Checkメソッドでは,(複数の)指摘結果を返します.CCheckは,指摘内容そのものを表します.したがって,引数に与えられた文書や段落や文のオブジェクトを使って,校正・推敲個所を検出し,その結果をCCheckオブジェクトをとして生成して,そのリストを返す処理を記述する必要があります.

        public new List<CCheck> Check(CSentence _SentencesData)
        {
            List<CCheck> checkList = new List<CCheck>();
            return checkList;
        }

        public new List<CCheck> Check(CParagraph _ParagraphData)
        {
            List<CCheck> checkList = new List<CCheck>();
            return checkList;
        }

        public new List<CCheck> Check(CDocument _DocumentData)
        {
            List<CCheck> checkList = new List<CCheck>();
            return checkList;
        }

 各プラグインには, 設定画面を出すためのShowSetupDialog()メソッドがあり,Tomarigiから呼び出されます.独自に作成した設定画面は,このメソッド内で呼び出す必要があります.なお,設定ファイルは,必ずIPluginBase.SettingFolderで指定されるフォルダ内に,プラグインと同じ名称のxmlファイルとして保存して下さい.以下に,設定ファイル名の指定の仕方と,設定画面を呼び出す例を示します.

        public new void ShowSetupDialog()
        {
        	string setting_filename =  string.Format("{0}{1}.xml", IPluginBase.SettingFolder, this.AssemblyName);
            new frmOption().ShowDialog(setting_filename);
        }

 

サンプル

 第二形態素を検出するサンプルプラグインのダウンロード

 

インターフェース:IPlugin

 Tomarigiからプラグインとして認識するために必要なインターフェースです.

プロパティ
AssemblyName アセンブリ名
Name プラグインの名称
Description  プラグインの詳細説明
Enabled プラグインの有効・無効
Help ※現在未使用
Version プラグインのバージョン
EnabledCheck 指摘機能が有効か
Role プラグインの役割(校正か推敲か)
EnabledMistake ※問題生成に関わる.
 現在,使用しないで下さい
ExerciseTypeList ※問題生成に関わる.
 現在,使用しないで下さい
HasSetupDialog 設定ダイアログがあるか
Tag 汎用
メソッド
List<CCheck> Check(CSentence) 校正・推敲のチェック
List<CCheck> Check(CParagraph) 校正・推敲のチェック
List<CCheck> Check(CDocument) 校正・推敲のチェック
Exercise()系 ※問題生成に関わる.
 現在,使用しないで下さい
void ShowSetupDialog() 設定ダイアログの呼び出し

抽象クラス:IPluginBase

 IPluginBaseクラスは,IPluginインターフェースを実装した抽象クラスです.IPluginインターフェースと異なる部分のみ,下記に示します.

static
PluginFolder プラグインの格納フォルダ
SettingFolder プラグインの設定ファイル格納フォルダ

指摘クラス:CCheck

 CWordクラスは,単語を表します.これは,係り受け解析ツールの結果から,文節ごとに単語情報を切りだして生成されます.ただし,この単語情報は,本ライブラリによって,独自に推定したものです.また,これは,Cabochaを使用した場合のみ,使用することができます.

static
PeriodChar 句点判定文字リスト(default: .。!?)
ParagraphChar 段落判定文字列リスト(default: 改行2個,改行+全角空白,改行+半角空白,改行+Tab)
BracketsChars1 括弧対応チェック文字リスト(全角・半角を同列解釈default:(){}「」)
BracketsChars2 括弧対応チェック文字リスト(default:『』【】)
プロパティ
ID 一意に識別するための番号
※自動付与されます
ForeColor 指摘に使用する色
ForeColorHTML ForeColorをHTML表記
Level 指摘レベル
Details 詳細情報
DetailsPic 詳細情報画像
Text 誤りを含む元の文
Message 指摘メッセージ
CorrectionList 修正候補
Role 指摘の役割(校正か推敲か)
PluginAssembly 指摘の元になったプラグインの
アセンブリ名
Enabled ※この項目は,Tomarigiにより管理するための領域ですので,変更しないで下さい.
TargetRange (複数の)指摘箇所
RangePositionクラスのデータとして取り扱う.RangePositionは,開始位置と長さおよび終了位置を保持する
TargetText 指摘箇所の文字の概要
TargetIsALL 指摘箇所が全文の場合は,trueとする
メソッド
bool IsEqual(CCheck) 引数の指摘が内容的に
同じものかどうか
List<CCheck> DivideByRange() 指定範囲が複数ある場合に,単独の指定範囲ごとに分割する