日本語校正支援

正規表現を利用して日本語文書ファイルの校正支援を行う

同等のperlプログラムへ

概要

html文書など、日本語の文書を作成する際、 特に複数の人が協力して文書を作成する際に問題になるのが 表記のゆれ(仮名遣い、半角・全角問題、漢字表記かひらがなか、など) です。 ここでは、 SJIS正規表現に対応したgawk を用いることにより、 日本語文書校正支援を行うプログラムを紹介します。

プログラム

プログラムは以下のようになります。 エディタを開き以下をタイプして、適当な名前でセーブしてください。ここでは proof.awk という名前でセーブしたことにして話を進めます。
#-----------------------------------------------------------------------
#		日本語校正支援	
#
# 使用方法
#	gawk -f proof.awk -v rule=ルールファイル, 作業ファイル, ...
#-----------------------------------------------------------------------
BEGIN {
	FS = "\t";

	RULENUM = 0;
	# ルールの読み込み
	while( getline <rule > 0 ) {
		RULENUM++;
		RULE[RULENUM] = $0;
		PATTERN[RULENUM] = $1;
		COMMENT[RULENUM] = $2;

		if ( PATTERN[RULENUM] == "" ) {
			printf( "パターンがありません:%d:%s\n", \
				RULENUM, $0 );
			exit;
		}
		
		if ( COMMENT[RULENUM] == "" ) {
			printf( "注釈がありません:%d:%s\n", \
				RULENUM, $0 );
			exit;
		}
	}
	if ( RULENUM == 0 ) {
		printf( "ルールがないかファイルが開けません\n");
		exit;
	}

	close( rule );
}
{	
	for ( i = 1; i <= RULENUM; i++ ) {
		string = $0;

		matched = gsub( PATTERN[i], "<<&>>", string );

		if ( matched > 0 ) { 	# matched
			printf( "%s:%d\t%d:%s|\t%s\n", 
			FILENAME, FNR, i, COMMENT[i], string );
		}
	}	
}

ルールファイル

このプログラムは、入力データとは別にルールファイルが 必要です。 ルールファイルは
パターン(正規表現で記述) TAB 注釈
というタブ区切りファイルで記述します。
ここでは以下のようなルールファイルが、
[0-9]	半角数字にする	
[A-Z]	半角英字にする
[a-z]	半角英字にする
[()]	半角の括弧にする
およぼ[さしすせそ]	及ぼす
気付[かきくけこい]	気づく
^$	空行
^従って	文頭の場合は「したがって」
rule.txt という名前で用意されているとします。

入力データ

入力データとして、 ここでは以下のようなファイルが
3回失敗した。10回成功した。
PCのOSはLinuxがよい。
(括弧が正しく対応していない)
悪影響をおよぼしています。
気付いたときには遅かった。

従って、彼は彼女の命令に従っている。
sample.txt という名前で用意されているとします。

実行結果

ここでは、awk処理系として gawk(SJIS正規表現対応版) 、OSは Windowsを利用していると 仮定します。 DOS prompt 上で、
c:\awk> gawk -f proof.awk -v rule=rule.txt sample.txt
とタイプします。
sample.txt:1	1:半角数字にする|	<<3>>回失敗した。<<1>><<0>>回成功した。
sample.txt:2	2:半角英字にする|	<<P>><<C>>の<<O>><<S>>はLinuxがよい。
sample.txt:3	4:半角の括弧にする|	(括弧が正しく対応していない<<)>>
sample.txt:4	5:及ぼす|	悪影響を<<およぼし>>ています。
sample.txt:5	6:気づく|	<<気付い>>たときには遅かった。
sample.txt:6	7:空行|	<<>>
sample.txt:7	8:文頭の場合は「したがって」|	<<従って>>、彼は彼女の命令に従っている。
と出力されるはずです。 なお、ルールファイルを別の名前で保存している場合には、
c:\awk> gawk -f proof.awk -v rule=rule.txt sample.txt
のrule.txtの部分を入れ替えてください。

正規表現について

正規表現については、 ここ で簡略に説明されています。
メニューに戻る
Tkensaku

TKENSAKU top へ

Copyright © 2004 TKEN