KHcoder 5. ややこしい語

KHcoder 5. ややこしい語

KHcoderは分析対象テキストの半角カタカナ、半角・全角英字、数字などを、どようようなかたちで抽出するのでしょうか?

テキストマイニングツール「KHcoder」の活用メモ
開発者である樋口先生に感謝!

KHcoderは「語」をどのように取り出すのか

カタカナと英字と区切記号と数字

 日本語で書かれた文書は本来の漢字かなまじりだけでなく、カタカナや英字、数字がほぼすべての文書にはいりこんでいます。

 カタカナと数字には全角と半角があり、英字は全角と半角にくわえて大文字と小文字があります。さらに「アイ・パッド」のように中黒をはさんで1語になっていたり、全角「-」ハイフン、「-」半角ハイフンをはさんでいるような場合を含めて、記号が入り混じった「1語」というのもしばしば登場します。

 KHcoderは「-」のような記号をいったんは読み込みますが分析対象の「語」には含めません(抽出語にしない)。
 助詞のように分析しない品詞と同様の取り扱いになります。「-」を「語」として分析する必要性がまったくありませんから分析者にとっては有難いしくみです。同様に半角英字小文字1文字、たとえば「i」のような場合も分析対象外になります。

分析者泣かせの入りまじり

 「iPad」という製品があります。正式には「iPad」だろと思いますが、「アイパッド」「i-Pad」のように様々な書き方で分析対象テキスト内にあらわれます。

 「iPad」も「アイパッド」も「i-Pad」すべて同じ製品のことをさしているわけですから分析者はどれかひとつにまとめたい!のです。

 テクニカルには「表記揺れの吸収」機能をつかって統一するのですが、まずは「iPad」「アイパッド」「i-Pad」のような文字列がいったんKHcoderへどのように読み込まれれて、抽出されるのかをテストしました。

 結果はあくまでも私のKHcoderで、文になっていない「語」らしき文字列を読み込んだもの、しかも、それぞれ個別のファイルで読み込んだんもの(たぶんここが重要)ですから永遠不変のルールではないことをご承知おきください。

<結果表の見方>
・いちばん左側の列・・・「分析対象テキスト」です。カタカナ全角・半角、英字全角・半角など各種文字パタンを読み込みました。

・区切り記号の列・・・区切記号の種類、大文字小文字の別です。

・抽出語の列・・・分析対象テキストを読み込んだあとすぐに前処理を実行して抽出された「語」。デフォルトの状態で抽出できる「語」です。

・結果の列・・・デフォルトの状態で抽出された「語」の解説です。

・強制抽出結果の列・・・分析対象テキストの語のすべてを取捨選択機能で強制抽出語に設定して前処理をしたあとで抽出された「語」。つまり強制抽出できる「語」、できない「語」を見極めます。

・TermXtractの列・・・TermXtractで複合語を検出した結果(強制抽出の前)

・茶筌の列・・・茶筌で複合語を検出した結果(強制抽出の前)

全角カタカナと区切記号

全角カタカナと区切記号のデフォルト
全角カタカナ区切記号抽出語結果
アイパッドなしアイパッドそのまま抽出する。
アイ・パッド・全角”アイ”と”パッド”前後2語になる。
アイ―パッドー全角”アイ”と”パッド”前後2語になる。
アイ.パッド.半角”アイ”と”パッド”前後2語になる。
アイ-パッド-半角”アイ”と”パッド”前後2語になる。
アイ パッドスペース全角”アイ”と”パッド”前後2語になる。
アイ パッドスペース半角”アイ”と”パッド”前後2語になる。

 デフォルトの状態では区切記号の全角・半角、スペースの全角・半角にかかわらず、
・区切記号が入り込むと常に前と後ろの「語」に分けて抽出されます。

全角カタカナと区切記号の強制抽出、複合語検出
全角カタカナ区切記号強制抽出結果TermXtract茶筌
アイパッドなしアイパッド検出しない。検出しない。
アイ・パッド・全角アイ・パッド検出しない。・パッド
アイ―パッドー全角アイ―パッド検出しない。―パッド
アイ.パッド.半角アイ.パッド検出しない。検出しない。
アイ-パッド-半角アイ-パッド検出しない。検出しない。
アイ パッドスペース全角アイ パッド検出しない。検出しない。
アイ パッドスペース半角アイ パッド(半角スペースが全角スペースになる)検出しない。検出しない。

 全ての区切記号を含めた「語」を抽出することができます。
・半角スーペースが全角スペースに置き換えられる。
・半角スペースがある場合も全角スペースがある場合も同じ「語」として抽出されます。

・TermXtractは何も複合語とはみなさない。
・茶筌は全角区切記号だけを複合語にします。

 茶筌では分けた語のうしろの語に記号をドッキングさせるルールがあるようです。

半角カタカナと区切記号

半角カタカナと区切記号のデフォルト
半角カタカナ区切記号抽出語結果
アイパッドなしアイパッド全角変換しそのまま抽出する。
アイ・パッド・全角”アイ”と”パッド”前後2語になる。
アイ―パッドー全角”アイ”と”パッド”前後2語になる。
アイ.パッド.半角”アイ”と”パッド”前後2語になる。
アイ-パッド-半角”アイ”と”パッド”前後2語になる。
アイ パッドスペース全角”アイ”と”パッド”前後2語になる。
アイ パッドスペース半角”アイ”と”パッド”前後2語になる。
アイパッド前半角、後全角、区切記号なしアイパッド全角変換し1語で取り出す
アイパッド前全角、後半角、区切記号なしアイパッド全角変換し1語で取り出す

・半角カタカナはすべて全角カタカナに変換されます。
・全角・半角がまじりあっていても1「語」として抽出できます。
・あいだの区切り記号の抽出は、全角カタカナと同じルールになりました。

 「前処理」→「分析対象ファイルのチェック」機能のところでで半角を全角に変換する処理ボタンがありましたが、処理しなくても自動で変換されるようです。抽出方法は全角カタカナの場合とまったく同じです。

 半角カタカナは行政関係の文書やデータにときどきあらわれます。ワードプロセッサー時代の名残でしょうか、一定の枠内に文字を改行なしで文字を詰め込むことができるので重宝します。

半角カタカナと区切記号の強制抽出、複合語検出
半角カタカナ区切記号強制抽出結果TermXtract茶筌
アイパッドなしアイパッド検出しない。検出しない。
アイ・パッド・全角”アイ”と”パッド”検出しない。・パッド
アイ―パッドー全角”アイ”と”パッド”検出しない。―パッド
アイ.パッド.半角”アイ”と”パッド”検出しない。検出しない。
アイ-パッド-半角”アイ”と”パッド”検出しない。検出しない。
アイ パッドスペース全角”アイ”と”パッド”検出しない。検出しない。
アイ パッドスペース半角”アイ”と”パッド”検出しない。検出しない。
アイパッド前半角、後全角、区切り記号なしアイパッド検出しない。検出しない。
アイパッド前全角、後半角、区切り記号なしアイパッド検出しない。検出しない。

・結果は半角カタカナのデフォルト状態と同じです。

 半角カタカナを強制抽出語にしても無意味だということです。

全角英字と区切記号

全角英字と区切記号のデフォルト
全角英字区切記号抽出語結果
IPADなしIPADそのまま抽出する。
I・PAD・全角PADIは抽出しない。
I-PADー全角PADIは抽出しない。
I.PAD.半角PADIは抽出しない。
I-PAD-半角PADIは抽出しない。
I PADスペース全角PADIは抽出しない。
I PADスペース半角PADIは抽出しない。
iPAD前小文字、後大文字IPAD1語で抽出する、先頭の(i)が大文字になる。
Ipad前大文字、後小文字IPAD1語で抽出する、すべての小文字が大文字になる。

 全角英字を使うのか?実は、かなりの頻度であらわれます。Webサイトは使用している基本フォントやブラウザーによっては半角英字が小さくみえたり細字にみえたりすることがあるためにあえて全角を使用することがあります。プレゼンシートなんかもそうですね。

・全角小文字は全角大文字になります。

全角英字と区切記号の強制抽出、複合語検出
全角英字区切記号強制抽出結果TermXtract茶筌
IPADなしIPAD検出しない検出しない
I・PAD・全角I・PAD検出しない検出しない
I―PADー全角I―PAD検出しない検出しない
I.PAD.半角I.PAD.PADI検出しない
I-PAD-半角I-PAD-PADI検出しない
I PADスペース全角I PAD検出しない検出しない
I PADスペース半角I PAD検出しない検出しない
iPAD前小文字、後大文字IPAD検出しない検出しない
Ipad前大文字、後小文字IPAD検出しない検出しない

・半角スペースが全角スペースに変換される
・小文字が大文字に変換される
・区切り記号は強制抽出通りに抽出できます。

 茶筌が合成語を検出しないのにたいしてTermXtractは半角記号をうしろの「語」にくっつけました。カタカナのときのTermXtractと茶筌のふるまいの逆にみえます。TermXtractは英字に茶筌はカタカナに強いのかどうかといったところです。

半角英字大文字と区切記号

半角英字大文字と区切記号のデフォルト
半角英字(大文字)区切記号抽出語結果
IPADなしIPAD1語で取り出す。
I・PAD・全角”I”と”PAD”半角英字大文字1文字(I)を語とみなす。
I―PADー全角”I”と”PAD”半角英字大文字1文字(I)を語とみなす。
I.PAD.半角I.PAD1語で取り出す。
I-PAD-半角I-PAD1語で取り出す。
I PADスペース全角”I”と”PAD”半角英字大文字1文字(I)を語とみなす。
I PADスペース半角”I”と”PAD”半角英字大文字1文字(I)を語とみなす。

・全角区切記号は前後に分ける
・半角区切記号を含むときは前後に分かれず1「語」で抽出されます。

 全角英字大文字の(I)は「語」とみなされませんでしたが、半角英字大文字(I)は「語」とみなされるところに大きな違いがあります。 

 抽出されるパタンが4通りになり、分析者泣かせの状態です。このようになると「分析対象テキスト」に記載されている通りの強制抽出ができることを祈ります。

半角英字大文字と区切記号の強制抽出、複合語検出
半角英字(大文字)区切記号強制抽出結果TermXtract茶筌
IPADなしIPAD検出しない。検出しない。
I・PAD・全角I・PAD検出しない。検出しない。
I―PADー全角I―PAD検出しない。検出しない。
I.PAD.半角I.PAD検出しない。検出しない。
I-PAD-半角I-PAD検出しない。検出しない。
I PADスペース全角I PAD(スペースは全角)検出しない。検出しない。
I PADスペース半角I PAD(スペースは全角)検出しない。検出しない。

・スペース半角がスペース全角に変換されます
・基本的にはすべて強制抽出できます。

 これで助かりました。表記揺れの吸収機能でなんとかなりそうです。合成語は検出できませんでした。

半角英字小文字と区切記号

半角英字小文字と区切記号のデフォルト
半角英字(小文字)区切記号抽出語結果
ipadなしIpad前のiが大文字になる。
i・pad・全角IとPad前のiが大文字になり後の小文字pが大文字になる。
i―padー全角IとPad前のiが大文字になり後の小文字pが大文字になる。
i.pad.半角i.pad1語として抽出する。
i-pad-半角i-pad1語として抽出する。
i padスペース全角IとPad前のiが大文字になり後の小文字pが大文字になる。
i padスペース半角IとPad前のiが大文字になり後の小文字pが大文字になる。
iPad前小文字、後大文字Ipad前のiが大文字になる。
Ipad前大文字、後小文字Ipad1語として抽出する。
i Padスペース全角、前小文字、後大文字IとPad前のiが大文字になり、後はそのまま取り出す。
I padスペース全角、前大文字、小大文字IとPad前のIは大文字のまま、後のpが大文字になる

・半角英字小文字が頭文字になる場合は(i)も(p)大文字に変換する。
・小文字(i)を単独で抽出する場合も大文字(I)になる。
・ただし区切記号入りのときはそのまま小文字になるようです。

半角英字小文字と区切記号の強制抽出、複合語検出
半角英字(小文字)区切記号強制抽出結果TermXtract茶筌
ipadなしipad検出しない検出しない
i・pad・全角i・pad検出しない検出しない
i―padー全角i―pad検出しない検出しない
i.pad.半角i.pad検出しない検出しない
i-pad-半角i-pad検出しない検出しない
i padスペース全角i pad(スペースは全角)検出しない検出しない
i padスペース半角i pad(スペースは全角)検出しない検出しない
iPad前小文字、後大文字ipad検出しない検出しない
Ipad前大文字、後小文字ipad検出しない検出しない
i Padスペース全角、前小文字、後大文字i pad(スペースは全角)検出しない検出しない
I padスペース全角、前大文字、小大文字i pad(スペースは全角)検出しない検出しない

・半角スペースが全角スペースに変換される。
・半角大文字(I)がすべて半角小文字(i)へと変換される。

 TermXtractが何も検出しないのは、デフォルトの状態で「i.pad」と「i-pad」を抽出できるからだと思います。

数字とカンマ、ピリオド

数字とカンマ、ピリオドのデフォルト
数字数字形式区切記号抽出語
3000半角なし抽出しない
3、000半角、句点抽出しない
3,000半角,半角抽出しない
3,000半角,全角抽出しない
3.000半角.半角抽出しない
3.000半角.全角抽出しない
3000全角なし抽出しない
3、000全角、句点抽出しない
3,000全角,半角抽出しない
3,000全角,全角抽出しない
3.000全角.半角抽出しない
3.000全角.全角抽出しない

 デフォルトでは何も抽出できません。「語」がないテキストになります。

数字とカンマ、ピリオドの強制抽出、複合語検出
数字数字形式区切記号強制抽出結果TermXtract茶筌
3000半角なし3000検出しない検出しない
3、000半角、句点3、000検出しない検出しない
3,000半角,半角3,000検出しない検出しない
3,000半角,全角3,000検出しない検出しない
3,000半角.半角3,000検出しない検出しない
3.000半角.全角3.000検出しない3.000
3000全角なし3000検出しない検出しない
3、000全角、句点3、000検出しない検出しない
3,000全角,半角3,000検出しない検出しない
3,000全角,全角3,000検出しない3,000
3.000全角.半角3.000検出しない検出しない
3.000全角.全角3.000検出しない検出しない

・すべてそのまま強制抽出できます。
・茶筌による複合語検出で全角カンマ、ピリオドの数値を検出できました。

まとめ

区切記号

・全角の区切記号と全角半角スペースはデフォルトでは常に前後の「語」に分ける。
・半角の区切記号は前後の「語」が半角英字(大文字、小文字を問わず)のとき前後を分けないときがある。

・全角英字のなかに全角区切記号があるとき、強制抽出もできないことがある。
・その他は基本的には強制抽出ができる。

・ただし半角スペースと全角スペースがあるときは全角スペースになる。
・すべて半角英字のときは大文字が小文字に、小文字が大文字に変換されることがある。

文字

・半角カタカナは全角カタカナに変換される。
・全角英字小文字は全角英字大文字に変換される。
・半角英字小文字が頭になるときは大文字に変換されることがある。
・全角カタカナと全角英字は同じようなふるまいになることが多い。

数字

・デフォルトの状態では何も抽出さない。

 しかし、経験的ですが数字はデフォルトの状態で割と抽出します。今回は数字だけのファイルであったことに原因があるのでしょうか、文のなかに入っているとか、単位の「円」がくっついているとか、製品の型番「H1234」のような場合はデフォルトで抽出できることが多いように思います。

抽出の基本

 「語」の抽出ルールがなんとなく見えてきましたが、結論としてデフォルトでは、同じような「字面の語」をできるかぎり纏めようとしてがんばっている!のだろうと思います。
 今回は「語」単独で読み込ませましたが、文書全体のなかにちりばめられている場合は違う抽出結果になるのではないかと思います。「Pad」と「pad」が「Pad」で統一されたり「pad」で統一されたりというパタンを十分に考えることができます。