KHcoder 5. ややこしい語

KHcoder 5. ややこしい語

テキストマイニングツール「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 ・全角 PAD Iは抽出しない。
I-PAD ー全角 PAD Iは抽出しない。
I.PAD .半角 PAD Iは抽出しない。
I-PAD -半角 PAD Iは抽出しない。
I PAD スペース全角 PAD Iは抽出しない。
I PAD スペース半角 PAD Iは抽出しない。
iPAD 前小文字、後大文字 IPAD 1語で抽出する、先頭の(i)が大文字になる。
Ipad 前大文字、後小文字 IPAD 1語で抽出する、すべての小文字が大文字になる。

 全角英字を使うのか?実は、かなりの頻度であらわれます。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 なし IPAD 1語で取り出す。
I・PAD ・全角 ”I”と”PAD” 半角英字大文字1文字(I)を語とみなす。
I―PAD ー全角 ”I”と”PAD” 半角英字大文字1文字(I)を語とみなす。
I.PAD .半角 I.PAD 1語で取り出す。
I-PAD -半角 I-PAD 1語で取り出す。
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.pad 1語として抽出する。
i-pad -半角 i-pad 1語として抽出する。
i pad スペース全角 IとPad 前のiが大文字になり後の小文字pが大文字になる。
i pad スペース半角 IとPad 前のiが大文字になり後の小文字pが大文字になる。
iPad 前小文字、後大文字 Ipad 前のiが大文字になる。
Ipad 前大文字、後小文字 Ipad 1語として抽出する。
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」で統一されたりというパタンを十分に考えることができます。