2019年5月4日土曜日

KHコーダ(KHcoder)でテキストマイニング  ~ 共起ネットワーク その2 ~


今回、題材としたのはシャーロックホームズの「赤毛連盟」。
有名な話なので読んだことがある人も多いだろう。
もし読んだことが無かったり、若しくは内容をよく覚えていない方は青空文庫等で入手できるので一読して欲しい。その方がテキストマイニングの結果が分かりやすいと思う。
日本語作品は「青空文庫」で、英文は「プロジェクトグーテンベルク」というサイトで入手可能。


早速KHコーダ(KHcoder)を起動して日本語テキストを取り込む。
上部メニューの「プロジェクト」から「新規」、それから当該テキストを選択して新規プロジェクトを作成して、「前処理」→「テキストのチェック」を行う。今回は修正の必要は無いようなので、そのまま「前処理の実行」を行った。
それから抽出語リストを開いて確認し、それから共起ネットワークを作成した。


図1.最初の共起ネットワーク画面

共起ネットワークを確認したところ、今回のテキストでは「シャー」と「ロック」がそれぞれ別々の語で抽出されていた。そのため一度共起ネットワークを終了させ、「前処理」→「複合語の抽出」で行い、それから「前処理」→「語の取捨選択」で「シャーロック」を「強制抽出する語の指定:」で設定した後、「前処理の実行」を行い再度共起ネットワークを描画させた。

以後、オプション画面での設定は下記の通り。
「集計単位」を「段落」
「最少出現数」は10に設定
「品詞による語の取捨選択」では「既定値」
「共起関係(edge)の種類」では「語-語」
「バブルスロット」にチェック
「共起パターンの変化を探る(相関)」にチェック

条件を変えて検討する場合は「実行時にこの画面を閉じない」にチェックを入れる。


まず「Subgraph」を表示させる。


図2.Subgraph - modularity


図3.Subgraph - random walk

サブグラフ検出では「modularity」と「random walk」で、それぞれグループ分け(subgraph)の細部が違っているが、この subgraph により大まかな物語のあらすじは分かってくる。


次に「中心性」を見てみる。
図4.共起ネットワーク「中心性」

中心性で見ると、「質屋」「銀行」「店員」「髪」「コバーグ」※ などの言葉があり、この物語のキーワードとなることがわかる。
※「コバーグ」は質屋がある場所名、すぐ隣に銀行がある。


図5.共起ネットワーク「中心性」(最少スパニング・ツリーだけを描画)

「最少スパニング・ツリーだけを描画」にチェックを入れて描画した。こちらの方がキーワードが分かりやすい感じがする。


最後に「相関」を見てみる。


図6.共起ネットワーク「相関」

こちらも最少スパニング・ツリーだけを描画させた。

図7.共起ネットワーク「相関」(最少スパニング・ツリーだけを描画)

「相関」を表示させることにより、物語の前半では「ウィルソン」「髪」「連盟」などの言葉が、後半では「地下」「銀行」「質屋」などの言葉が多く用いられるようになっていることが分かる。これで物語の展開が大まかに理解できるだろう。
こちらも「最少スパニング・ツリーだけを描画」にした方が分かりやすいようだ。

次に、「関連語検索」で共起ネットワークを表示させてみる。
とりあえず「赤毛」で検索する。
「ツール」→「抽出語」→「関連語検索」で「関連語検索」の画面を表示させて「#直接入力」で「直接入力:」と「and」ボタンの横の入力エリア(デフォルトのカーソルの位置)に「赤毛」と入力し、集計単位は「段落」として「集計」ボタンを押して検索させた。
「フィルタ設定」で品詞は「既定値」、「最少文書数」は10で設定で「OK」を押して、「共起ネット」ボタンを押して描画さる。
「赤毛」を中心とした共起ネットワークが表示された(検索語は二重正方形で囲んで表示)。


図8.「赤毛」で検索した共起ネットワーク

最少スパニング・ツリーだけで描画させた。

図9.「赤毛」で検索した共起ネットワーク(最少スパニング・ツリーだけを描画)

こちらは検索語の選択も含めて、もう少し条件を検討した方が良さそうである。


続いて英文に関しても同様に行う。
抽出語の確認をしたところ、英文では「sherlock」は問題無く認識されていたので、強制抽出は行わなかった(stop words は設定済み)。
「品詞による語の取捨選択」では「すべて」を選択。後は日本語と同じ条件設定で行った。

図10.共起ネットワーク「Subgraph modularity」表示


図11.共起ネットワーク「中心性」表示


図12.共起ネットワーク「中心性」表示(最少スパニング・ツリーだけを描画)


図13.共起ネットワーク「相関」表示


図14.共起ネットワーク「相関」表示(最少スパニング・ツリーだけを描画)


同じく気になるキーワードがあれば、日本語と同様に「関連語検索」で共起ネットワークを表示させれば良い。
例として「red-headed」で検索して、共起ネットワークを最少スパニング・ツリーだけで描画させた(Subgraph - modularity表示)。



今回は共起ネットワークだけを用いてテキストマイニングを行ったが、以上のように題材とした小説「シャーロックホームズの冒険・赤毛連盟」の大まかなストーリーやキーワードは英語・日本語共に理解できた。KHコーダには共起ネットワーク以外にも様々なコマンドがあるので興味がある方はマニュアル等を参考にしていただきたい。さらに詳細なテキストマイニングを行えるはずである。

0 件のコメント:

コメントを投稿