2017年10月27日金曜日

スタイル チェック テクニック - カタカナ複合語

カタカナ複合語間にスペースや中黒を入れない案件では、次の正規表現でスタイル エラーを検出できます。正規表現エンジンに文字クラスが定義されているときは、できるだけ使用しましょう。

.NET 表現: \p{IsKatakana}[\s・·]+\p{IsKatakana}
Perl: [\p{Katakana}ー][\s・·]+[\p{Katakana}ー]
汎用表現: [ァ-ヶー][\s・·]+[ァ-ヶー]

では、スペースありの案件では、どのようにしたらよいのでしょうか。過去に、正規表現で検出しようとしたことがあります。

過去のボツ手法

1. カタカナ語を抽出して、データベースを作成する。
2. 次のような正規表現を頑張って作成します。

[ァ-ヶー](エンジン|コンピュータ[ー]?|テキスト|(?<!コン)テキスト|コンテキスト|ヘルプ|インストール|ウィンドウ|アイコン|エディタ|フォルダ|(?<!プロ)ファイル|プロファイル|ダイアログ|(?<!プレ)ビュー|(?<!プ)レビュー|プレビュー|ボタン|システム|(?<!ル)クリック|(?<!データ)ベース|ベース|データ|フィールド|ユーザ[ー]?|アクセス|ステータス|ライセンス|サーバ[ー]?|アプリケーション|アクティベーション)|(エンジン|コンピュータ[ー]?|テキスト|(?<!コン)テキスト|コンテキスト|ヘルプ|インストール|ウィンドウ|アイコン|エディタ|フォルダ|(?<!プロ)ファイル|プロファイル|ダイアログ|(?<!プレ)ビュー|(?<!プ)レビュー|プレビュー|ボタン|システム|(?<!ル)クリック|(?<!データ)ベース|ベース|データ|フィールド|ユーザ[ー]?|アクセス|ステータス|ライセンス|サーバ[ー]?|アプリケーション|アクティベーション)[ァ-ヶ]

3. めんどくさい。誤検出も多く、正規表現のブラッシュアップも大変。PC を窓から発射したくなるのでやめた。

現在の手法

現在はテキスト エディタを使用してチェックしています。「自動検証が無理なら、手動検証を楽にすればいいじゃない」というわけです。高機能エディタであれば、この操作が可能です。必須機能は、正規表現、並べ替え、重複削除です。

1. 全訳文をテキスト エディタに貼り付けます。
2. カタカナ語以外を改行に変換します。
3. 並べ替えます。
4. 重複を削除します。
5. エラーを簡単に確認できる状態になります。

Sakura Editor を使用している場合は、次のマクロを使用して簡単に処理できます。10 万語くらいは一瞬で、1 億語でも 30 秒程度で処理が完了します。

//キーボードマクロのファイル
S_ReplaceAll('[^ァ-ヶ]ー', '', 28); // カタカナ語以外に続く長音を削除
S_ReplaceAll('[^ァ-ヶー\\s]+|[\\s\\r\\n]+', '\\r\\n', 28); // カタカナ語以外をすべて改行に置換
S_ReDraw(0); // 再描画
S_SelectAll(0); // すべて選択
S_SortAsc(0); // 選択行の昇順ソート
S_Merge(0); // 連続した重複行の削除
S_GoFileTop(0); // ファイルの先頭に移動

この手法の利点

実際の 50 万語の案件では、カタカナ語は約 1000 種類でした。これだけ多くても、次に示すように、エラーを簡単に視認できるので、チェック自体には数分しかかかりません。 実際に試してみれば、かなりのスクロール速度でチェックできることがわかると思います。

...
コンソール
コンテキスト
コンテナ
コンテンツ
コントロール
コントロールパネル
コンパイラ
コンパイル
コンパニオン
コンピュータ
コンプレックス
コンポーネント
コーディング
...

本来の意図とは異なりますが、類似語が連続して表示されるので、単語の末尾にある長音の有無、タイポ、表記揺れなどの一部も発見できます。

まとめ

語数の多い案件では、必ずと言ってよいほどカタカナ複合語のスタイル違反が見つかります。リリース後の文書からも発見されます。しっかりと処理しないと、検索や索引作成に影響します。

こういう手法もあることを知っておけば、いつか役に立つかもがネギしょって鍋にバンジー。