テキストマイニング講習会 松村真宏 大阪大学大学院経済学研究科 [email protected] http://mtmr.jp/ 簡単な自己紹介 • • • • • 1975年東大阪市生まれの瓢箪山育ち 八尾高、阪大、東大院をへて博士(工学) 現在は大阪大学大学院経済学研究科の准教授 専門は人の言動や社会現象の分析とモデル化 データマイニング、テキストマイニング、 フィールドマイニング 2 本日のアジェンダ • 「分析」そのものは各種ソフトウェアを使えば誰でも 簡単にできますが,分析結果を読み解くためには分析 手法の理論的背景を理解する必要があります • 本講習では,まずテキストマイニングの基本的な考え 方と基礎的な理論を説明します(pp. 4∼26) • その後に実践的知識の習得を目指して、TTMを使った 分析を各自で行ってもらいます(pp. 27∼47) • • 時間があれば分析事例を紹介します(pp. 48∼98) まとめと宣伝(pp. 99∼100) 3 テキストマイニングの登場 • テキストデータのような定性データは,大量のデータ を分析することで安定した傾向が見いだせますが,人 手で大量のテキストデータを分析することは現実的に はほとんど不可能でした • テキストマイニングの登場によって,大量のデータを 統一的な視点・基準から少ない労力で分析することが 可能になりました • テキストマイニングは,世の中で流行っている話題 や,人々のニーズや不満を定量的に把握する手段とし て徐々に使われ始めています 4 テキストマイニングの登場した背景 • テキストマイニングが登場したのは,以下の条件が出 そろった1990年代後半です - 計算機・ストレージの高性能化・低価格化 - さまざまなテキストデータの蓄積 - 自然言語処理研究の進展 - 機械学習研究の進展 5 テキストマイニングの応用事例 • インターネットはクチコミの豊かな情報源 - 評判情報,ユーザ属性の推定 (性別,職業,家族構成,居住地域,年代…) - マーケティングの効果測定 • アンケートの自由記述回答文 - 回答の特徴や傾向を把握する • • 経済指標の予測 著者や執筆時期の推定 6 商用ソフトウェア(の一部) • • • • • • Text Mining for Clementine (SPSS) IBM SPSS Text Analytics for Surveys (SPSS) Text Mining Studio (数理システム) TRUE TELLERテキストマイニング(野村総研) ConceptBase (JustSystems) KeyGraph (構造計画研究所) 他にもいろいろありますが, どれもそこそこのお値段がします… 7 フリーソフトウェア • • • • TTM (by 松村@大阪大学) KH Coder (by 樋口耕一氏@立命館大学) RMeCab, RCaboCha (by 石田基広氏@徳島大学) Polaris (KeyGraph) (by 岡崎直観氏@東京大学) 自作してる人はたくさんいるのに, 公開している人はあまりいません… 8 テキストマイニングの主な基盤技術 • 自然言語処理 - 形態素解析,構文解析 • 統計解析 - 多変量解析,仮説検定 • データマイニング - 分類器,予測器 9 テキストマイニングの内側 • テキストマイニングの処理は, 「前処理」と「後処理」に大別できます • 前処理(テキストデータならではの処理) - 語の切り出しと集計 - これが面倒… • 後処理(多変量解析やデータマイニングと同じ処理) - 集計データの統計処理 - 従来の手法が流用できます! 10 テキストデータの特徴 (1/4) • 語彙や表現の揺れ(漢字・仮名・カタカナ・大文字と 小文字・全角と半角・誤字・新語)が多い - 「内閣総理大臣」と「首相」 - 「打ち合わせ」と「打合せ」 - 「インタフェース」と「インタフェイス」 - 「税金」と「血税」 - 「スナナレ」「もしドラ」 - 「ドコモ」と「DoCoMo」と「docomo」 11 テキストデータの特徴 (2/4) • 日本語は文法も曖昧 - クロールで泳いでいる彼女を見た - 望遠鏡で泳いでいる彼女を見た - プールで泳いでいる彼女を見た - 先生とお酒を飲む - ビールとお酒を飲む 12 テキストデータの特徴 (3/4) • 語の境界に曖昧性がある - 「そこではきものをぬげ」 • ‣ そこで/はきもの/を/ぬげ ‣ そこでは/きもの/を/ぬげ うなぎ文 - 「ぼくはウナギだ」 • こんにゃく文 - 「こんにゃくは太らない」 13 テキストデータの特徴 (4/4) • 意味の文脈依存性 - 「学校で遊ぶ」 ‣ このときの「学校」は場所としての学校 - 「学校が談話を発表した」 ‣ このときの「学校」は法人的側面を表す 14 形態素解析 • 形態素解析は,自然言語で書かれた文章を語(形態 素)に分割する処理のことです • Chasen (奈良先端大),MeCab (工藤拓氏),JUMAN (京都大学) が公開しているオープンソースのソフト ウェアが有名です • 新聞記事を対象とした場合の精度は99%以上あります が,話し言葉を対象とすると精度は下がります(が十 分実用に耐える精度です) • 常に新しい言葉が生まれているので,未知語(辞書に 載っていない語)問題はなかなかやっかいです 15 形態素解析の実行例 • 「親譲りの無鉄砲で子供の時から損ばかりしてい る。」を MeCab にかけた結果です 親譲り 名詞,一般,*,*,*,*,親譲り,オヤユズリ,オヤユズリ の 助詞,連体化,*,*,*,*,の,ノ,ノ 無鉄砲 名詞,一般,*,*,*,*,無鉄砲,ムテッポウ,ムテッポー で 助詞,格助詞,一般,*,*,*,で,デ,デ 子供 名詞,一般,*,*,*,*,子供,コドモ,コドモ の 助詞,連体化,*,*,*,*,の,ノ,ノ 時 名詞,非自立,副詞可能,*,*,*,時,トキ,トキ から 助詞,格助詞,一般,*,*,*,から,カラ,カラ 損 名詞,一般,*,*,*,*,損,ソン,ソン ばかり 助詞,副助詞,*,*,*,*,ばかり,バカリ,バカリ し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ て 助詞,接続助詞,*,*,*,*,て,テ,テ いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル 。 記号,句点,*,*,*,*,。,。,。 16 解析結果の比較 • 形態素解析器が変われば結果も変わります.左から MeCab,Chasen,JUMAN の出力結果です MeCab ChaSen JUMAN 親譲り 名詞,一般 の 助詞,連体化 無鉄砲 名詞,一般 で 助詞,格助詞 子供 名詞,一般 の 助詞,連体化 時 名詞,非自立 から 助詞,格助詞 損 名詞,一般 ばかり 助詞,副助詞 し 動詞,自立 て 助詞,接続助詞 いる 動詞,非自立 。 記号,句点 親譲り 名詞-一般 の 助詞-連体化 無鉄砲 名詞-形容動詞語幹 で 助動詞 子供 名詞-一般 の 助詞-連体化 時 名詞-非自立 から 助詞-格助詞 損 名詞-一般 ばかり 助詞-副助詞 し 動詞-自立 て 助詞-接続助詞 いる 動詞-非自立 。 記号-句点 親譲り 名詞 普通名詞 の 助詞 格助詞 無鉄砲で 形容詞 ナ形容詞 子供 名詞 普通名詞 の 助詞 接続助詞 時 名詞 副詞的名詞 から 助詞 格助詞 損 形容詞 ナ形容詞 ばかり 助詞 副助詞 して 動詞 サ変動詞 いる 接尾辞 動詞性接尾辞 。 特殊 句点 17 形態素解析の仕組み • 語の使われやすさを表す「生起コスト」と,語と語の つながりやすさを表す「連結コスト」からなる辞書を 用いて,生起コストと連結コストの総和が最も小さく なるような語の区切りを,動的計画法の一種である Viterbiアルゴリズムで見つけています • コストの設定が精度と直結しています.JUMAN はコ ストを手動で付与,ChaSen と MeCab は学習用デー タから自動的に学習させています • MeCab の ver.0.90 以降では異なるアルゴリズム (条件付き確率場)が採用されています 18 形態素解析の動作例 コストは 225 110 10 5 親 90 譲り 10 180 文頭 の 10 親譲り 10 100 コストは 120 ※値は適当です 19 機能語と内容語 • 語は,助詞や助動詞といった「機能語」と,名詞,形 容詞,動詞,副詞といった「内容語」に大別できます • 機能語は,それ単体では意味を持たない語なので,文 章の内容を理解する際の助けにはなりません • 内容語は,名称,性質,動作,状況など,文章の内容 の一部を表しているので,内容を理解する際の助けに なります.しかし,名詞と結びつかないと意味が特定 できない場合が多いです • したがって,名詞は必須で,分析の目的に応じて形容 詞,副詞,動詞を用いることが多いです 20 未知語について • 形態素解析器の辞書に登録されていない語は「未知 語」として出力されます • 未知語の品詞推定は研究レベルでは実装されています が,まだ実用レベルには達していません • 未知語は,単なるゴミであることも多いのですが,世 の中の流行を反映した「新しい語」(例えば「婚活」 や「H1N1」など)が含まれていることもあるので油 断なりません • なので,取り敢えず未知語は分析対象に加えて,不便 があれば臨機応変に対応することが多いです 21 構文解析 • 構文解析は,語と語の係り受け関係を分析する処理の ことです • CaboCha (工藤拓氏),KNP (京都大学) が公開してい るオープンソースのソフトウェアが有名です • 新聞記事を対象とした場合でも精度は80%くらいなの で,けっこう間違いも含まれてしまいますが,確から しい結果だけを利用すれば十分使えます • 特定の語と関係する語(例えば,「美味しい」の係り 受け先など)を見たいときなど,用途を限定した場合 にも十分使えます 22 構文解析の実行結果 • 「親譲りの無鉄砲で子供の時から損ばかりしてい る。」を CaboCha と KNP にかけた結果は以下のよ うになります CaboCha 親譲りの-D 無鉄砲で-------D 子供の-D | 時から---D 損ばかり-D している。 KNP 親譲りの──┐ 無鉄砲で──┤ 子供の──┐ │ 時から──┤ 損ばかり──┤ している。 23 構文解析の仕組み • 構文解析は,文節 Bi が文節 Bj に掛かることを Di = j を表すと,文節 列 B={Bi} (i=1,2,…n) に対する係り受け列 D={Dj} (j=1,2,…n-1) の条 件付き確率 P(D¦B) を最大化する係り受けパターン Dbest を見つける処 理になります Dbest = argmaxD P (D|B) • ここで,係り受け関係が互いに独立だとすると,P(D¦B) は以下の式で 表されます n−1 P (D|B) = • � P (Di = j|fij ) i=1 P(Di=j¦fji) は,文節 Bi と Bj が言語的な素性集合 fij(文節間の主辞の 距離,品詞,語形の活用形,句読点など)をもつときに Bi が Bj に係る 確率で,大量のコーパスから自動的に学習されます.また,D は,文末 以外の各文節は後方に係り受け先を必ず持つ,係り受け先は交差しな い,ことを満たすと仮定しています 24 キーワードの抽出 • 語の出現分布はZipsの法則(出現頻度がk番目に大き い要素が全体に占める割合が1/kに比例するという経 験則)に従うことが知られています 25 キーワードの抽出 • 高頻度語には一般的な語も多いので,相対的な頻度の 高さを加味してキーワードとすることが多いです • TFIDFや相互情報量やジャッカード係数といった指標 がよく用いられます • TFIDFは以下の指標で求まります � D T F IDF (w) = T F (w) × 1 + log DF (w) • � 「坊っちゃん」に登場する「赤シャツ」は,出現頻度 TF=168,出現件数DF=91,総データ件数N=470 なので、TFIDF=566になります 26 の紹介 • 「形態素解析は分かった,構文解析も分かった,それ で,どうすればいいの?」という皆さんの心の声に答 えるために を作りました • はテキストデータを形態素解析器,構文解析器に かけて,その分析結果を読み込んで集計し,CSVファ イルを出力するフリーソフトです • はテキストマイニングの前処理に特化しています ので,ここまでしか行いません.後処理は,みなさん の使い慣れたソフトウェアに読み込ませて,好きなよ うに分析してもらいたいと思っています 27 スクリーンショット (1/2) 28 スクリーンショット (2/2) 29 の特徴 (1/4) • CSV 形式の「タグ付きテキスト」を読み込みます 30 の特徴 (2/4) • キーワード,同義語,不要語を指定できます 31 の特徴 (3/4) • 品詞,係り受け解析の設定もできます 32 の特徴 (4/4) • 6種類の出力ファイルを提供します 33 のインストール • http://mtmr.jp/ttm/ から ttm.exe をダウンロードす るだけで 本体のインストールは終わりです • 形態素解析を実行するためのソフトウェア MeCabを 別途インストールする必要があります(構文解析を行 うときは CaboCha もインストールします).詳細は http://mtmr.jp/ttm/ をご覧ください 34 サンプルデータ • 「あなたにとって『Yahoo! 知恵袋とはどんな場です か.自由にお書きください」に対する自由記述文(回 答者数 4060名)のうち,ランダムサンプリングした 1000名分のデータを分析対象とします(http:// mtmr.jp/ttm/ からダウンロードできます) 35 sample_chiebukuro.csv タグの内訳は 1…男性・短期利用群(304名) 2…男性・長期利用群(172名) 3…女性・短期利用群(395名) 4…女性・長期利用群(129名) 36 分析条件 • 次の条件で で sample_chiebukuro.csv を分析し てみましょう - 出力する品詞は「名詞,形容詞,動詞,副詞」 - オプションファイルは「設定せず」 - 出現頻度/出現件数の最小値は「10」 - 係り受け解析は「なし」 37 sample_chiebukuro_ttm1.csv 語のタグ別集計(出現頻度) 38 sample_chiebukuro_ttm2.csv 語のタグ別集計(出現件数) 39 sample_chiebukuro_ttm3.csv 語×タグのクロス集計 (出現頻度) 40 sample_chiebukuro_ttm4.csv 語×タグのクロス集計 (出現件数) 41 sample_chiebukuro_ttm5.csv 語×語のクロス集計 (出現件数) 42 sample_chiebukuro_ttm6.csv テキスト×語のクロス集計 (出現件数) 43 オプションファイルの設定 44 抽出された126語 • 名詞(61語) • 複合名詞(7語) • 動詞(48語) • 形容詞(14語) • 同義語(5語) 質問 場 回答 人 自分 場所 知識 知恵袋 意見 情報 便利 気軽 疑問 暇つぶ し 非常 利用 答え 解決 他 参考 他人 それ 私 知恵 勉強 考え 役 悩み 気 何 検索 考え方 相談 サイト 意味 必要 掲示板 コミュニケーション 簡単 ここ 身近 削除 解答 活用 感じ 参加 誰 好き 問題 不快 投稿 生活 友達 残念 存在 心 アドバイス 誰か みんな 頼り 変 大変 ジャンル 確認 趣味 気 持ち 質問¦者 回答¦者 情報¦源 人¦たち 情報¦交換 貢献¦度 情報¦収集 する ある 思う なる 知る 教える いる 得る 聞ける 聞く 見る 困る 答える 助かる 調べる 持つ 言う もらえる 使う いう 考える 感じる 助ける 違う 選 ぶ たつ 出る 書く 減る 増える 荒らす 悩む 高める 来る 言える ふざける 知れる なくなる 励ます 多い ない 楽しい いい 嬉しい 面白い ありがたい すごい 少ない 詳しい うれ しい 新しい 無い 早い できる わかる よい いろいろ 役に立つ 45 「役に立つ」の係り受けは? 46 原文に立ち返ってみます 47 応用事例 ∼文学作品の執筆時期の分析∼ 出典:「テキストデータの統計科学入門」(金明哲,岩波書店) 執筆時期の推定 • 日本古典文学の最高峰といわれている「源氏物語」に は,複数著者説や,巻序の順序と執筆順序について疑 問が呈されている • 文章の特徴の時系列変化を捉えることで,これらの仮 説を検証することができる • テキストの内容を分析する場合には名詞や形容詞が重 要であるが,執筆者の特徴を捉えるには助詞や読点の 打ち方が重要になる(文章の内容やジャンルの影響が 小さいから) 49 芥川龍之介 • 芥川龍之介の明治時代の作品かつ1000文字以上の作 品の250編を分析してみるとどうなるか? 50 主成分分析 51 第1主成分得点の年代別変化 52 "% !"#(% !"#'% から)格助詞 まで)副助詞 と)接続助詞 て)接続助詞 読点 に)格助詞 は)係助詞 しも)副助詞 も)係助詞 の)格助詞 を)格助詞 より)格助詞 など)副助詞 ども)接続助詞 ば)接続助詞 が)接続助詞 から)接続助詞 で)格助詞 ながら)接続助詞 !"#&% が)格助詞 第1主成分の項目別グラフ "#$% "#&% "#'% "#(% !"#$% 53 (" ((" $(" )(" %(" *(" &(" +(" '(" ,(" (!(" (((" ($(" ()(" (%(" (*(" (&(" (+(" ('(" (,(" $!(" $((" $$(" $)(" $%(" が(格助詞)の使用率の年代別変化 が!格助詞 !#($" !#(" !#!'" !#!&" !#!%" !#!$" !" 54 (" ((" $(" )(" %(" *(" &(" +(" '(" ,(" (!(" (((" ($(" ()(" (%(" (*(" (&(" (+(" ('(" (,(" $!(" $((" $$(" $)(" $%(" に(格助詞)の使用率の年代別変化 に!格助詞 !#('" !#(&" !#(%" !#($" !#(" !#!'" !#!&" !#!%" !#!$" !" 55 回帰分析 lm(formula = y 読点 + は_係助詞 + に_格助詞 + が_格助詞 + の.準体助詞 + か_係助詞 + ば_接続助詞 + や_係助詞 + で_接続助詞 + へ_格助詞 + まで_副助 詞 + ばかり_副助詞 + が_接続助詞 + から_接続助詞 + とも_接続助詞 + さへ_副助詞 + ど_接続助詞, data = akuta) (Intercept) 1917.6 読点 が_格助詞 -50.2 の.準体助詞 や_係助詞 42.4 で_接続助詞 ばかり_副助詞 -230.3 が_接続助詞 さへ_副助詞 -255.1 ど_接続助詞 -10.5 は_係助詞 32.5 に_格助詞 28.7 -31.4 か_係助詞 58.6 ば_接続助詞 32.3 58.5 へ_格助詞 72.2 まで_副助詞 -120.0 122.7 から_接続助詞 132.2 とも_接続助詞 -283.8 -175.4 Residual standard error: 1.822 on 232 degrees of freedom Multiple R-squared: 0.7685, Adjusted R-squared: 0.7516 F-statistic: 45.31 on 17 and 232 DF, p-value: < 2.2e-16 56 応用事例 ∼経済市場の動向の分析∼ 出典:「人工市場とテキストマイニングの融合による市場分析」 (和泉潔et al., 人工知能学会論文誌 22(4): 397-404) 経済市場の動向 • 金融市場のトレーダー達は,市場に影響を及ぼす多様 な情報を取捨選択し,現在の市場の状況を分析・予測 している • テキスト情報を分析することで,市場動向を予測でき る可能性がある 58 国際金融情報センター • • 市場解説記事(毎週発行) • 指標の発表内容など実際に起きた出来事だけでなく, 当時の市場の観測に関する情報も記述されている 1000∼1500文字の分量で,その週の金融市場の関連 したと思われる経済ニュースをまとめたテキスト 59 形態素解析 60 キーワード変換ルール 61 トークン化 62 ドキュメント特徴量の抽出 63 予測 • • 1992年から1995年のテキストデータをコーディング • • 1995年の指標を予測 1992年から1994年の3年間(156週)のデータから 予測モデル(決定木)を作成 予測指標は14カテゴリ(景気,物価,金利…)の動 向(0, 1, 2, 3 の7段階) 64 決定木 65 予測精度 66 応用事例 オンラインコミュニティの分析 出典:松村らの過去の研究 mixiのユーザ像 68 mixiのユーザ像 69 2ちゃんねるが盛り上がるメカニズム 70 2ちゃんねるが盛り上がるメカニズム 71 「幸せ」言及マップ 72 「幸せ」言及マップ 73 74 ブログ考現学 75 ブログ考現学 76 ブログ考現学 77 Rを使った分析事例 を使ってみます • • 統計解析のフリーソフトウェアです • • • 形態素解析や構文解析を行うパッケージもあります いろんな人が便利な関数やパッケージを公開している (2009年6月17日現在,CRANには1849ものパッ ケージが登録されています)ので,コレ一つで大抵の ことはできます データマイニングのパッケージもあります たくさんの書籍が出版されているので,マニュアルも 充実しています 79 R用入力ファイルを作ります • • まずTTMで前処理をします - 出現件数の最小値は50(言及率が5%未満の語をカット) - 同義語リストはスライド〈37〉と同じ - 不要語リストは「する」「できる」「ある」「なる」「い る」「場」「場所」「知恵袋」 テキスト 語のクロス集計ファイル (sample_chiebukuro_ttm6. csv) を開き, - 不要な情報(2行目の品詞と3行目の品詞細分類)を削除 - A列目を回答者のID (ID1∼ID1000) に変換 をしてからファイル名を princomp.csv として保存します 80 R用入力ファイル 81 主成分分析 (1/4) • まず,ファイルを読み込みます > tmp <- file("/Users/matumura/Desktop/princomp.csv", open="r", encoding="Shift-JIS") > chie1 <- read.csv(tmp, header=T, row.names=1) Mac の場合 Win > chie1 <- read.csv( C:/path/to/princomp.csv , header=T, の場合 row.names=1) • 群馬大学の青木繁伸先生が作成した主成分分析のパッ ケージをダウンロードします > source("http://aoki2.si.gunma-u.ac.jp/R/src/pca.R", encoding="euc-jp") • 主成分分析を実行します > chie1.pc <- pca(chie1) 82 主成分分析 (2/4) • 主成分負荷量を表示します > chie1.pc$factor.loadings PC 1 PC 2 PC 3 PC 4 PC 5 質問 -0.623014969 -0.259959399 -0.220673981 -0.130994404 -0.1665951581 回答 -0.581820606 -0.170760597 -0.123462494 -0.151421658 -0.1007598511 人 -0.542911247 0.083085663 -0.006127801 0.219076670 0.1858571610 思う -0.630872619 -0.175691335 -0.094503730 0.089845666 0.0639490058 自分 -0.498185605 0.487123576 -0.030865625 -0.053734346 0.1274557907 知る -0.287073486 0.652387397 -0.067824651 0.218739730 -0.1680974148 知識 -0.215465313 0.366826318 0.067147876 -0.432614599 0.2791747065 わかる -0.217362017 0.152263968 -0.347042677 0.238117785 -0.1837722352 意見 -0.370713484 -0.025050760 0.531166251 0.314586034 0.0499343200 便利 0.002558317 -0.247000029 0.032015943 -0.009362999 -0.3038268007 情報 -0.247168406 0.225804955 0.348300358 -0.380717983 -0.0618569342 教える -0.109609406 0.526495924 -0.284256924 0.359686850 -0.3038122255 よい -0.355646682 -0.175180677 -0.075887740 -0.173078308 -0.0930558442 多い -0.392971233 -0.210027392 -0.218703044 -0.110794955 0.0006999885 気軽 -0.110328663 -0.214377201 -0.021198758 0.212492055 -0.2849607221 ない -0.280283200 -0.196650279 -0.072412486 0.009060280 -0.3411003616 疑問 -0.156382988 -0.005957664 0.050691516 0.217712694 0.3322206320 いろいろ -0.159122334 0.005612273 0.464707711 0.117797962 -0.2016271285 得る -0.320680011 0.144265744 0.255539091 -0.527158259 -0.0300418007 聞ける -0.201493764 -0.083296138 0.564682158 0.322871381 -0.1002459899 聞く -0.247358107 -0.102919235 0.115442235 0.312540402 0.3108644904 暇つぶし 0.106489726 0.064191092 -0.153415079 -0.105416226 -0.1123785086 非常 -0.271218489 -0.251103406 -0.057153240 0.090997342 0.2891139217 利用 -0.269810023 -0.142658330 -0.187518290 -0.028886219 0.2880359311 見る -0.318878904 0.050570826 0.085830351 -0.132526632 -0.1471888013 役に立つ -0.176919191 0.017303530 -0.233573625 0.096959361 0.2093929352 困る 0.067701136 0.048424395 -0.073711762 0.085821366 0.2470244209 楽しい -0.107263922 -0.025873082 0.041501597 -0.061899658 -0.3125814962 83 主成分分析 (3/5) • 寄与率を表示します > chie1.pc$contribution PC 1 PC 2 PC 3 PC 4 PC 5 PC 6 PC 7 10.667993 5.843609 5.339395 5.182398 4.614024 4.480498 4.107133 PC 8 PC 9 PC 10 PC 11 PC 12 PC 13 PC 14 3.853864 3.769984 3.694340 3.567649 3.540955 3.428369 3.304603 PC 15 PC 16 PC 17 PC 18 PC 19 PC 20 PC 21 3.220741 3.125227 3.112565 2.919451 2.862851 2.732052 2.574938 PC 22 PC 23 PC 24 PC 25 PC 26 PC 27 PC 28 2.471283 2.350973 2.109488 2.004526 1.899890 1.687521 1.533681 累積寄与率が20%未満 (10.67+5.84) なので主成分分析には 適さないデータ 84 主成分分析 (4/4) • 散布図を描いてみます > plot(chie1.pc$factor.loadings[,1:2], type="n") > text(chie1.pc$factor.loadings, colnames(chie1)) 85 クラスター分析 (1/2) • 成分負荷行列を chie2 に格納します > chie2 <- chie1.pc$factor.loadings • 距離行列を算出します > chie2.d <- dist(chie2) • ウォード法で階層的クラスタリングを行います > chie2.hc <- hclust(chie2.d, "ward") 86 クラスター分析 (2/2) • 樹形図を描いてみます > plot(chie2.hc) 87 多次元尺度構成法 (1/2) • 多次元尺度構成法のコマンドを打ち込みます > chie2.cmd <- cmdscale(chie2.d) [,1] [,2] 質問 -0.510686069 -0.11674946 回答 -0.436355122 -0.16621635 人 -0.140900825 -0.16129412 思う -0.429201509 -0.10818130 自分 0.067473993 -0.57012597 知る 0.465838592 -0.38735118 知識 0.140139064 -0.41796552 わかる 0.154960162 -0.05104755 意見 -0.036712634 0.15129852 便利 0.097565594 0.43511940 情報 0.138786826 -0.15756738 教える 0.505243680 -0.21187661 よい -0.285831593 -0.04130151 多い -0.326080520 -0.04182757 気軽 0.004028444 0.32974927 ない -0.127499840 0.16952988 疑問 0.063548196 0.10318250 いろいろ 0.162804825 0.24447954 得る 0.022374165 -0.18372047 聞ける 0.120080272 0.37644567 聞く -0.033140640 0.18289005 暇つぶし 0.325696846 0.16328426 非常 -0.145533072 0.23089364 利用 -0.168978689 0.01623230 見る -0.076479202 -0.12605548 役に立つ 0.075343125 0.03693517 困る 0.276495684 0.17311814 楽しい 0.097020248 0.12812211 88 多次元尺度構成法 (2/2) • 各語をプロットしてみましょう > plot(chie2.cmd, type="n") > text(chie2.cmd, rownames(chie2.cmd)) 89 対応分析用のデータを作ります • • まずTTMで前処理をします - 出現件数の最小値は50(言及率が5%未満の語をカット) - 同義語リストはスライド〈37〉と同じ - 不要語リストは「する」「できる」「ある」「なる」「い る」「場」「場所」「知恵袋」 語 タグのクロス集計ファイル (sample_chiebukuro_ttm4.csv) を開き, - 不要な情報(2列目の品詞と3列目の品詞細分類)を削除 をしてから,ファイル名を corresp.csv として保存します 90 対応分析用入力ファイル 91 対応分析 (1/4) • まず,ファイルを読み込みます > tmp <- file("/Users/matumura/Desktop/corresp.csv", open="r", encoding="Shift-JIS") > chie3 <- read.csv(tmp, header=T, row.names=1) > chie3 <- read.csv( C:/path/to/corresp.csv , header=T, Mac の場合 Win の場合 row.names=1) • パッケージ MASS を読み込みます > library(MASS) • 92 対応分析 (2/4) • 対応分析を実行します > chie3.ca <- corresp(chie3, nf=4) • 固有値を求めます > chie3.eig <- chie3.ca$cor^2 • 固有値を表示します > round(chie3.eig, 3) [1] 0.026 0.009 0.007 0.000 • 固有値から寄与率を求めます > chie3.prop <- round(100*chie3.eig/sum(chie3.eig),2) • 寄与率を表示します > chie3.prop [1] 62.98 21.18 15.84 0.00 次元数は2で良さそう 93 対応分析 (3/4) • 次元数を 2 として対応分析を行います > chie3_1.ca <- corresp(chie3, nf=2) • 列得点を出力します > chie3_1.ca$cscore [,1] [,2] X1 -1.3614971 0.3009687 X2 -0.5106691 -1.9694733 X3 0.6378705 0.7599440 X4 1.3518437 -1.2548151 • 行得点を出力します > chie3_1.ca$rscore [,1] [,2] 質問 -0.1863853 0.69645209 回答 -0.4010919 -0.16758722 自分 -0.8783464 -0.54104752 思う 0.4176592 0.46408128 人 0.8601333 1.51505696 知る -0.2991064 0.54244692 知識 -2.2944395 0.05744779 わかる 1.0017124 0.66835718 意見 1.8445622 0.10836778 便利 0.5302728 -1.75932369 教える 0.4052086 -0.45950594 情報 -1.7110761 0.49206402 よい -0.9116448 -1.04019819 気軽 0.3000924 -1.12243136 疑問 -0.1928348 -1.94487705 いろいろ 1.4451623 -1.57220019 多い -0.8876336 0.36127627 得る -1.5034695 2.20504822 ない -0.5727480 -2.16679911 見る 1.1937006 0.34483488 暇つぶし -1.0218067 -0.64345795 非常 -0.5084105 -1.36887880 聞ける 1.1219211 -0.05053885 役に立つ 0.6611073 -0.75580704 利用 -0.4235386 0.71826391 聞く 1.7214983 -0.02896937 困る 1.9810135 -1.29183491 楽しい 0.7417456 1.75973907 94 対応分析 (4/4) • 散布図を出力します > biplot(chie3_1.ca) 95 • データマイニングのフリーソフトウェアである Weka にもデータを読み込ませることができます • テキスト 語のクロス集計ファイル (sample_chiebukuro_ttm6.csv) を開き, - 不要な情報(A列目の原文,2行目の品詞,3行目 の品詞細分類)を削除 - 「TAG」列のタグを名義変数にする(そのままだ と数値属性と判断されてしまう) をしてからファイル名を weka.csv として保存します 96 作成したWeka用入力ファイル 97 Wekaスクリーンショット 98 まとめ • テキストマイニング =〈前処理〉+〈多変量解析 or データマイニング〉 • テキストマイニングは語や表現の揺れが大きいので, それを如何に吸収するかが重要になります • 前処理さえ済めば,あとはRやWekaといった各自の 得意な土俵に持ち込んで勝負すればいいのです • テキストマイニング恐るるに足らず! 99 宣伝 「人文・社会科学のためのテキストマイニング」 松村真宏・三浦麻子著,誠信書房 (2009) 2,520円 目次 第1章 序 第2章 TTMと関連ソフトウェアのインストール 第3章 TTMによるテキストデータの分析 第4章 Rを併用したテキストデータの統計解析 第5章 Wekaを併用したテキストデータのデータマイニング 第6章 テキストマイニングの応用事例 第7章 テキストマイニングの基盤技術 100
© Copyright 2024 ExpyDoc