Translate

2011年11月18日

Tiny TextMinerでテキストマイニング(その2)

随分と前にTTM: TinyTextMiner でテキストマイニングで、無料のテキストマイニングツールについて紹介をしましたが、最近になってまた使ってみています。TTMは、辞書機能を備えているので、形態素解析器の辞書にない語彙をキーワードとして登録したり、同義語の定義をしたり、不要な語を削除することが容易にできます。テキストマイニングで一番大切な作業はこの辞書の整備だったりもします。

Tiny Text Miner については、以前下記のように紹介しています。
Tiny TextMinerとは、大阪大学大学院経済学研究科 松村研究所の松村真宏氏が公開しているフリーのテキストマイニングツールです。形態素解析にMeCabを利用して、単語の出現頻度と出現件数(単語を含むサンプル件数)を出力します。また係り受け解析のCaboChaと連携して係り受けによる、出現頻度と出現件数を出力することもできます。
現時点での最新版は、バージョン 0.75 (for Win)です。

Tiny Text Minerのインストール

TTMのインストール先は任意です。TTMは、形態素解析器としてMeCabを利用していますので、日本語のテキストマイニングをするのであればMeCabのインストールは必須です。また係受け分析も行うのであれば、CaboChaのインストールが必要になります。

ソフト名ダウンロード先補足
Tiny TextMinerttm.exeTiny TextMiner本体
MeCabmecab-0.98形態素解析器
文字コードは「Shift-JIS」を選択
CaboChacabocha-0.53.exe係り受け解析器

データクレンジング

本家のサイトでもFAQとして記載されているものもありますが、Tiny Text Minerを使う上で、事前にテキストマイニング対象のテキストをクレンジングする必要があります。
  1. 空白行の削除
  2. Excelセル内の改行の削除
  3. 半角文字を全角に小文字を大文字に変換
  4. 機種依存文字の削除
a. 空白行の削除

TTMでは空白行があると処理できませんので、対象テキストで空白のものがあれば削除します。

b. Excelセル内の改行の削除

Excelセル内で改行されている(Alt+Enterでセル内で改行)場合も正しく処理できません。TTMのFAQでは、Excelの=CLEAN()関数を利用して改行を削除とありますが、多くの場合、改行の位置は文字区切りの位置でもあります。置換で改行をスペースに変換した方が、語の区切り目を正しく認識してくれます。またスペースは全角でなければ語の区切り文字として認識してくれません。Windowsでは改行がCTL+Jで入力できるので置換と検索で改行を全角文字に置換します。


改行の入力
検索する文字列(N)のリストボックスにカーソルがある状態でCtrlキーとJを同時に押します。見た目上は何も変わらないので複数回入力してしまうと変換できなくなってしまうので、正しく変換されないと思ったら検索する文字列で違う文字を入力するか、Excelを再起動してやり直してください。

全角スペースの入力
置換語の文字列(E)のリストボックスにカーソルがある状態で、全角スペースを入力します。

テキストが入力されている列を選択して検索と置換で「すべて置換」とすると改行が全角スペースに変換されます。


半角と全角スペースで置換した場合と、=CLEAN()関数でスペースがなしと場合で、Tiny TextMinerでどのように形態素解析されるかを試してみます。

zou.csv(入力データ)
1アフリカゾウ インドゾウ← アフリカゾウとインドゾウの間は半角スペース
1アフリカゾウ インドゾウ← アフリカゾウとインドゾウの間は全角スペース
1アフリカゾウインドゾウ← アフリカゾウとインドゾウの間にスペースなし

zou_ttm1.csv(出現頻度)
タグ品詞品詞細分類出現頻度
1インド|ゾウ複合名詞複合名詞1
1アフリカ|ゾウ|インド|ゾウ複合名詞複合名詞1
1アフリカ|ゾウ複合名詞複合名詞1

半角スペースの行が正しく処理されなかったため、インド|ゾウ、アフリカ|ゾウの出現頻度は1となっています。また入力3行目がアフリカゾウとインドゾウの間の改行を=CLEAN()関数でスペースを削除した結果だとすると、アフリカ|ゾウ|インド|ゾウという1語になってしまっていることがわかります。

c. 半角文字を全角に小文字を大文字に変換

英数数字、記号を日本語として扱うために全角変換をします。勿論、上記の半角スペースも全角スペースに変換されます。変換は、Excelの関数で簡単にできます。

=JIS()  半角文字を全角に変換する
=UPPER()  大文字に変換する

上記を組み合わせて=UPEER(JIS(A2))のようにすれば全角大文字変換ができます。


c. 機種依存文字を削除する

Tiny Text Minerでは、機種依存文字があると正しく処理されないために機種依存文字を除く必要があります。代表的な機種依存文字は下記に示しますが、丸数字やローマ数字は、一般的によく利用されているので気を付ける必要があります。

代表的な機種依存文字
機種依存文字を削除するにはExcelの=SUBSTITUTE()を使って削除することもできますが、かなりネストが深い構造になります。

①~⑳までを削除する
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"①",""),"②",""),"③",""),"④",""),"⑤",""),"⑥",""),"⑦",""),"⑧",""),"⑨",""),"⑩",""),"⑪",""),"⑫",""),"⑬",""),"⑭",""),"⑮",""),"⑯",""),"⑰",""),"⑱",""),"⑲",""),"⑳","")

Ⅰ~Ⅹまでを削除する
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B3,"Ⅰ",""),"Ⅱ",""),"Ⅲ",""),"Ⅳ",""),"Ⅴ",""),"Ⅵ",""),"Ⅶ",""),"Ⅷ",""),"Ⅸ",""),"Ⅹ","")


※簡単にできる方法があれば教えてください。

実行上の注意点

入力データのクレンジングが終わり、これでやっとTiny Text Minerを実行できるようになりますが、使用上の注意事項が幾つかあります。

出力フォルダ
Windows7環境だと出力フォルダに指定するフォルダ名が日本語パスがあると指定できません。入力ファイルや辞書ファイルのパスでは問題ありません。


抽出される語は1,000件まで
TTMのクロス集計表(ttm3~ttm6)で抽出される語は1,000語までです。出力結果が1,000語を超える場合には、語の出現頻度/出現件数の最小値を2件以上にして調整しなければ解析対象に全語が含まれなくなります。

不要語に指定するのは原型
不要語を削除する場合には、TTMで形態素解析された結果の語(原型)を指定しなければなりません。下記の場合、「行った」を不要語とした場合は、原型の「行く」を指定しないと削除できません。

zou.csv(入力データ)
1象を見に動物園に行った
1動物園にキリンを見に行った

zou_ttm1.csv(出現頻度)
タグ品詞品詞細分類出現頻度
1動物|園複合名詞複合名詞2
1見る動詞自立1
1行く動詞自立2
1キリン名詞一般1
1名詞一般1

Let's Try Tiny TextMiner

1 件のコメント:

  1. 機種依存文字を削除するとありますが意味を持った文字なので
    通常の文字列に置換してやったほうが良いのではないでしょうか

    返信削除

アクセス上位(過去7日間)