せっかくデータがあるし、ちょっと自然言語処理っぽいことをしてみました。
最近会社では、「KH Coder」というツールを使って「共起ネットワーク」というテキストマイニング手法を使ってます。
KH Coder: 計量テキスト分析・テキストマイニングのためのフリーソフトウェア
このツール、簡単にインストールできて、例えばアンケートの自由筆記欄のようなものを簡単に分析できます。
大量の文書データを分析しなきゃいけないことが増えたため、よく使います、このKH Coder。
で、これを自宅でも使ってみようと思い立った次第。
そういえば元々私は、こういうことをするために小説を書いていたんでしたよね。
砲撃手の妻は呪術師(シャーマン) - 小説家になろう
てことで、今執筆中のこの作品データを使います。
「砲撃手の妻は呪術師(シャーマン)」という作品。
宇宙艦隊の駆逐艦乗りで砲撃手のランドルフ中尉が、ひょんなことから出会ったイーリスという呪術師(シャーマン)を妻にし、とてつもない力を身につけて活躍(?)するというこの作品。
自身の文書癖や、作品のおおよその関係が見えるかもしれないということで、早速このKH Coderを使って分析してみました。
さて、この作品のテキストファイルはPC内に入っているので、それを使いました。
が、以下の3つの事前処理が必要です。
(1) テキストファイルを1つに結合する
(2) 句読点(。)を句読点+改行コードにして、1文=1行にする
(3) テキストファイルの拡張子をcsvに変えて、Excel上で空白行を削除
もしかしたら(2)は不要かもしれませんが、一応実施しておきます。
(1)は、テキストファイルをフォルダに集め、そこでコマンドプロンプトから
> copy /b *.txt all.txt
と実行すればOKです。
(2)については、以下のサイトを
楽ちん機能で効率UP!句点(。)後に、改行を自動で挿入する方法
(3)については、以下のサイトを参考にして対応。
【Excel(エクセル)術】空白行をまとめて削除する方法 | リクナビNEXTジャーナル
Excelのフィルタを使ってもいいんですが、こっちのやり方の方が簡単ですね。
こうして、分析用のデータが準備できました。
さて、いよいよKH Coderにかけてみます。
先ほどのKH Coderのサイトから最新版をダウンロードし、exeファイルをダブルクリックして自己解凍すると、デスクトップに「KH Coder 3 Folder」というのができているはずです。
それをダブルクリックしてフォルダを開き、「kh_coder.exe」をダブルクリックしてKH Coderを起動します。
ここで、先ほど作ったデータ「all.csv」を開きます。
メニューの「プロジェクト」-「新規」を開き、「参照」で上のデータを選択します。
OKを押すと、こんな画面に。
結構な語数ですね。36話までのデータですが、約7200文、10万語以上。
さて、とりあえずそのまま使ってみます。
メニューで「前処理」-「前処理の実行」をクリック。
しばらく待たされます。
終わったら、「ツール」-「抽出語」-「共起ネットワーク」を選択。
こんなメニューが開きます。
デフォルトのままでもいいですが、とりあえず「最小出現数」を「10」にしておきました。50ではちょっと絞られ過ぎるかなぁと。
で、OKを押すと、結構待たされます。
しばらくすると、こんな画面が。
単語と、それを結ぶ線がいくつも出てきました。
この線が関連の強い単語同士の結びつきを表し、丸の大きさが出現頻度を表しています。
例えば、こんなのがあります。
「最良」の単語の周りに「結果」「選択」が出てますね。
言われてみれば、こういう表現をよく使ってます、この作品。
その「最良」をクリックすると、こんなものが登場。
その単語を含む文章を表示してくれます。どういう文脈で使われているのか、わりと簡単に生のデータで確認することが可能。
ですが、この共起ネットワーク、デフォルトではやや問題あり。
例えば、「カーリン」という登場人物がいるんですが、形態素解析で「カー」と「リン」に分けられちゃってます。
わりとうるさ型の、ちょっと嫌なキャラですが、いくら何でもかわいそ過ぎます。
これ以外にもいくつか、小分けにされ過ぎている表現が見受けられます。「ショッピングモール」→「ショッピング」「モール」など。
これじゃあちょっとあれなんで、少しいじってみます。
メニューの「前処理」-「語の取捨選択」を選びます。
出てくるフォームの中の「force pick up」の中に、分断されたくない単語を入れます。
なお、その隣の「force ignore」には、無視したい単語を入れます。
アンケートの自由筆記欄に「特になし」と書かれる場合がありますが、ああいうのを排除するために使います。
今回は特に、排除するべき単語はないので、このまま「OK」。
ここでもう一度「前処理」-「前処理の実行」をクリック。
終わったら再び「ツール」-「抽出語」-「共起ネットワーク」を選択して実行しますが、表示を増やすために「描画する共起関係」の「上位」の項目を「120」にしてみました。
で、OKをクリックします。
またしばらく、待たされます。
今度は、結構派手な共起ネットワーク図が出てきました。
人物の関係やよく使われる単語と結びつく表現がよく見える化されています。
他にも、使用単語頻度の分析や、
階層型クラスタ分析もできます。
こんな感じに、膨大なアンケートや文書のチェック・分析をしなきゃいけない場合に、これは使えますね。
ちなみに「自己組織化マップ」という項目がありますが、あれは結構時間かかります。数時間かかる覚悟が必要。要注意ですね。
他にも便利な機能があるようです。深堀りすると、なかなか面白いツールです。
長い文書をまとめろ、などと言われたときには、ぜひご活用を。
この調子で、できれば次は「要約」を、そして次には「文書作成」までさせてみたいところですね。
最近のコメント