目検(目視による検査)で、大量のテキストを校正する場合に、うっかり見落としがちなのが、「表記ゆれ」です。
最近の校正支援ツールやサービスでは、「表記ゆれ」も、ビシバシと指摘するのですが、実用レベルのモノを利用するには、それなりに費用がかかります。汎用的な校正支援ツールの中では、比較的安価なJust Right!6 Proでも、希望小売価格は47,000円 (税込 51,700円)と、個人で気軽に購入できる価格ではありません。
そこで、できるだけ、お金をかけずに、形態素解析ツールとExcelを使って、「表記ゆれ」を発見できないか、試してみました。
形態素解析とは、ものすごく乱暴に言うと、文章をそれ以上は分割できない意味のある塊ごとに分割する処理です。詳しくは、「形態素解析」でGoogle検索していただければ…まぁ、詳しくわからなくても、この記事を読むのに、特に問題はありません。
形態素解析のツールには、商用からフリーまで、様々なものがありますが、今回は、オープンソースの形態素解析ツールMeCabの、Windows用を使うことにします。
公式サイトから、Windows用のBinary packageが、ダウンロードできます。
以下は、64bit版MeCabのインストール手順です。
インストーラーを、ダブルクリックすると、インストールを開始します。
インストールに使用する言語を選択し、<OK>ボタンをクリックします。
文字コードは、UTF-8を選択して、<次へ(N)>ボタンをクリックします。
使用許諾契約書に同意して、<次へ(N)>ボタンをクリックします。
インストール先はデフォルトのまま、<次へ(N)>ボタンをクリックします。
プログラムグループの指定は、デフォルトのまま、<次へ(N)>ボタンをクリックします。
<インストール(I)>ボタンをクリックします。
辞書を作成します。が表示されたら、<OK>ボタンをクリックします。
セットアップウィザードの完了画面が表示されたら、<完了(F)>ボタンをクリックして、インストールの完了です。
次に、Windowsの環境変数「PATH」にMeCab本体(mecab.exe)がインストールされたフォルダを追加します。
手順は以下のようになります。
PATHの設定ができたら、MeCabの動作確認をします。
コマンドプロンプトを起動します。
mecabと入力してEnterキーを押します。
何か適当にテキストを入力します。
Enterキーを押します。
文字化けしていますが、問題はありません。上記のような結果が表示されたら、MeCabは動作しています。
コマンドプロンプトを閉じてください。
これで、MeCabを使用する準備ができました。
テキストデータの前処理については、ケースバイケースで様々な処理が必要となりますので、詳細な説明は割愛しますが、MeCabで形態素解析をするには、1文ごとに改行されたテキストが望ましいので、できるだけ、1文ごとに改行されたテキストになるように整形をします。
例えば、令和3年版地方財政白書
上記PDFのテキストをコピーして、テキストエディタにペーストすると、PDFの見た目の1行ごとに改行されているのが確認できます。
MeCabで形態素解析をするために、1文ごとに改行されたテキストになるように整形した結果。
前述の令和3年版地方財政白書のPDFからテキストを抽出して、1文ごとに改行されるように整形してみたら、71,754行ほどのデータになりました。
「表記ゆれ」を発見するためなら、この程度の整形で、問題なく処理できると思います。このデータを保存して、形態素解析のサンプルとします。
整形したテキストデータの文字コードを、UTF-8に設定して、(テキストエディタによって、設定方法は異なります。)ファイル名をinput.txtとして保存します。
サンプルとして作成したテキストデータ(ファイル名をinput.txt)を、C:\tempフォルダにコピーします。
コマンドプロンプトを起動して、以下のコマンドを入力します。
mecab C:\temp\input.txt -o C:\temp\output.txt
Enterキーを押して、処理を実行します。
output.txtが生成されています。
output.txtをテキストエディタで開いてみて、以下のようなデータが生成されていれば、形態素解析は完了です。
Excelを起動して、output.txtをExcelで開きます。
テキストファイルウィザードが表示されるので、以下のような設定で、データを開きます。
1行目に項目名用の行を挿入し、 A列からJ列まで、それぞれ以下の項目名を入力します。
表層形 | 品詞 | 品詞細分類1 | 品詞細分類2 | 品詞細分類3 | 活用型 | 活用形 | 原形 | 読み | 発音 |
A列の1行目から、J列のデータが入力されている最終行までを範囲選択します。
メニューの挿入から、ピボットテーブルを作成します。
ピボットテーブルのセルを選択した状態で、デザインのリボンから、以下の設定をします。
表形式で表示
アイテムのラベルをすべて繰り返す
小計を表示しない
行と列の集計を行わない
新しいシートを挿入して、ピボットテーブルのシートのデータを、コピーします。
新しく挿入したシートに、コピーしたデータを値貼り付けします。
A列の1行目からC列の最終行までを範囲選択し、B列の値を昇順で並び替えます。
B列を選択し、以下の条件付き書式を設定します。
条件付き書式が設定できたら、B列で、色が付いたセルをチェックしていけば、「表記ゆれ」が発見できるはずです。
(尚、ここまでの処理は、定型処理なのでマクロ処理が可能です。)
「(空白)」は飛ばして、シートを下方向にスクロールしていくと、このような行がありました。
C列は、A列の文字列が、テキスト内で使用されている個数です。この場合は、テキスト内で、1箇所「あふれる」が使われていて、2箇所「溢れる」が使われていることがわかります。
元のPDFで、「あふれる」と「溢れる」をテキスト検索すると、下記のような箇所で使用されていました。
Excelのシートを下にスクロールしていくと、他にも、いろいろなパターンの「表記ゆれ」の疑いがあるものが出てきます。
こうやって「表記ゆれ」を発見さえできれば、表記を統一するかどうか、チェックする人が、判断すればいいのですが、私が目検でチェックした場合、判断する云々の前に、これらの「表記ゆれ」を、モレなく発見できる自信がありません。
そういう意味では、MeCabとExcelを組み合わせることで、校正作業のうち「表記ゆれ」の発見を補助することはできそうです。業務関連の専門用語を追加するなどの、カスタマイズをして、より実用的なものになるか、機会があれば検討してみます。
実は、もっと手軽に「表記ゆれ」のチェックに使える、EKWordsというフリーソフトがあり、以下のサイトからダウンロードできます。