Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
テキストマイニング講習会
松村真宏大阪大学大学院経済学研究科[email protected]://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
テキストマイニングの内側
• テキストマイニングの処理は, 「前処理」と「後処理」に大別できます
• 前処理(テキストデータならではの処理)- 語の切り出しと集計- これが面倒…
• 後処理(多変量解析やデータマイニングと同じ処理)- 集計データの統計処理- 従来の手法が流用できます!
10
テキストデータの特徴 (1/4)
• 語彙や表現の揺れ(漢字・仮名・カタカナ・大文字と小文字・全角と半角・誤字・新語)が多い
- 「内閣総理大臣」と「首相」- 「打ち合わせ」と「打合せ」- 「インタフェース」と「インタフェイス」- 「税金」と「血税」- 「スナナレ」「もしドラ」- 「ドコモ」と「DoCoMo」と「docomo」
11
テキストデータの特徴 (2/4)
• 日本語は文法も曖昧- クロールで泳いでいる彼女を見た- 望遠鏡で泳いでいる彼女を見た- プールで泳いでいる彼女を見た- 先生とお酒を飲む- ビールとお酒を飲む
12
テキストデータの特徴 (3/4)
• 語の境界に曖昧性がある- 「そこではきものをぬげ」
‣ そこで/はきもの/を/ぬげ
‣ そこでは/きもの/を/ぬげ
• うなぎ文- 「ぼくはウナギだ」
• こんにゃく文- 「こんにゃくは太らない」
13
形態素解析
• 形態素解析は,自然言語で書かれた文章を語(形態素)に分割する処理のことです
• Chasen (奈良先端大),MeCab (工藤拓氏),JUMAN (京都大学) が公開しているオープンソースのソフトウェアが有名です
• 新聞記事を対象とした場合の精度は99%以上ありますが,話し言葉を対象とすると精度は下がります(が十分実用に耐える精度です)
• 常に新しい言葉が生まれているので,未知語(辞書に載っていない語)問題はなかなかやっかいです
15
形態素解析の実行例
• 「親譲りの無鉄砲で子供の時から損ばかりしている。」を MeCab にかけた結果です
親譲り 名詞,一般,*,*,*,*,親譲り,オヤユズリ,オヤユズリの 助詞,連体化,*,*,*,*,の,ノ,ノ無鉄砲 名詞,一般,*,*,*,*,無鉄砲,ムテッポウ,ムテッポーで 助詞,格助詞,一般,*,*,*,で,デ,デ子供 名詞,一般,*,*,*,*,子供,コドモ,コドモの 助詞,連体化,*,*,*,*,の,ノ,ノ時 名詞,非自立,副詞可能,*,*,*,時,トキ,トキから 助詞,格助詞,一般,*,*,*,から,カラ,カラ損 名詞,一般,*,*,*,*,損,ソン,ソンばかり 助詞,副助詞,*,*,*,*,ばかり,バカリ,バカリし 動詞,自立,*,*,サ変・スル,連用形,する,シ,シて 助詞,接続助詞,*,*,*,*,て,テ,テいる 動詞,非自立,*,*,一段,基本形,いる,イル,イル。 記号,句点,*,*,*,*,。,。,。
16
解析結果の比較
• 形態素解析器が変われば結果も変わります.左から MeCab,Chasen,JUMAN の出力結果です
親譲り 名詞-一般の 助詞-連体化無鉄砲 名詞-形容動詞語幹で 助動詞子供 名詞-一般の 助詞-連体化時 名詞-非自立から 助詞-格助詞損 名詞-一般ばかり 助詞-副助詞し 動詞-自立て 助詞-接続助詞いる 動詞-非自立。 記号-句点
親譲り 名詞 普通名詞の 助詞 格助詞無鉄砲で 形容詞 ナ形容詞子供 名詞 普通名詞の 助詞 接続助詞時 名詞 副詞的名詞から 助詞 格助詞損 形容詞 ナ形容詞ばかり 助詞 副助詞して 動詞 サ変動詞いる 接尾辞 動詞性接尾辞。 特殊 句点
親譲り 名詞,一般の 助詞,連体化無鉄砲 名詞,一般で 助詞,格助詞子供 名詞,一般の 助詞,連体化時 名詞,非自立から 助詞,格助詞損 名詞,一般ばかり 助詞,副助詞し 動詞,自立て 助詞,接続助詞いる 動詞,非自立。 記号,句点
MeCab ChaSen JUMAN
17
形態素解析の仕組み
• 語の使われやすさを表す「生起コスト」と,語と語のつながりやすさを表す「連結コスト」からなる辞書を用いて,生起コストと連結コストの総和が最も小さくなるような語の区切りを,動的計画法の一種であるViterbiアルゴリズムで見つけています
• コストの設定が精度と直結しています.JUMAN はコストを手動で付与,ChaSen と MeCab は学習用データから自動的に学習させています
• MeCab の ver.0.90 以降では異なるアルゴリズム(条件付き確率場)が採用されています
18
機能語と内容語
• 語は,助詞や助動詞といった「機能語」と,名詞,形容詞,動詞,副詞といった「内容語」に大別できます
• 機能語は,それ単体では意味を持たない語なので,文章の内容を理解する際の助けにはなりません
• 内容語は,名称,性質,動作,状況など,文章の内容の一部を表しているので,内容を理解する際の助けになります.しかし,名詞と結びつかないと意味が特定できない場合が多いです
• したがって,名詞は必須で,分析の目的に応じて形容詞,副詞,動詞を用いることが多いです
20
未知語について
• 形態素解析器の辞書に登録されていない語は「未知語」として出力されます
• 未知語の品詞推定は研究レベルでは実装されていますが,まだ実用レベルには達していません
• 未知語は,単なるゴミであることも多いのですが,世の中の流行を反映した「新しい語」(例えば「婚活」や「H1N1」など)が含まれていることもあるので油断なりません
• なので,取り敢えず未知語は分析対象に加えて,不便があれば臨機応変に対応することが多いです
21
構文解析
• 構文解析は,語と語の係り受け関係を分析する処理のことです
• CaboCha (工藤拓氏),KNP (京都大学) が公開しているオープンソースのソフトウェアが有名です
• 新聞記事を対象とした場合でも精度は80%くらいなので,けっこう間違いも含まれてしまいますが,確からしい結果だけを利用すれば十分使えます
• 特定の語と関係する語(例えば,「美味しい」の係り受け先など)を見たいときなど,用途を限定した場合にも十分使えます
22
構文解析の実行結果
• 「親譲りの無鉄砲で子供の時から損ばかりしている。」を CaboCha と KNP にかけた結果は以下のようになります
親譲りの──┐ 無鉄砲で──┤ 子供の──┐ │ 時から──┤ 損ばかり──┤ している。
親譲りの-D 無鉄砲で-------D 子供の-D ¦ 時から---D 損ばかり-D している。
CaboCha KNP
23
構文解析の仕組み
• 構文解析は,文節 Bi が文節 Bj に掛かることを Di = j を表すと,文節列 B={Bi} (i=1,2,…n) に対する係り受け列 D={Dj} (j=1,2,…n-1) の条件付き確率 P(D|B) を最大化する係り受けパターン Dbest を見つける処理になります
• ここで,係り受け関係が互いに独立だとすると,P(D|B) は以下の式で表されます
• P(Di=j|fji) は,文節 Bi と Bj が言語的な素性集合 fij(文節間の主辞の距離,品詞,語形の活用形,句読点など)をもつときに Bi が Bj に係る確率で,大量のコーパスから自動的に学習されます.また,D は,文末以外の各文節は後方に係り受け先を必ず持つ,係り受け先は交差しない,ことを満たすと仮定しています
Dbest = argmaxDP (D|B)
P (D|B) =n−1�
i=1
P (Di = j|fij)
24
キーワードの抽出
• 高頻度語には一般的な語も多いので,相対的な頻度の高さを加味してキーワードとすることが多いです
• TFIDFや相互情報量やジャッカード係数といった指標がよく用いられます
• TFIDFは以下の指標で求まります
• 「坊っちゃん」に登場する「赤シャツ」は,出現頻度TF=168,出現件数DF=91,総データ件数N=470なので、TFIDF=566になります
26
TFIDF (w) = TF (w)�
1 + logD
DF (w)
�
の紹介
• 「形態素解析は分かった,構文解析も分かった,それで,どうすればいいの?」という皆さんの心の声に答えるために を作りました
• はテキストデータを形態素解析器,構文解析器にかけて,その分析結果を読み込んで集計し,CSVファイルを出力するフリーソフトです
• はテキストマイニングの前処理に特化していますので,ここまでしか行いません.後処理は,みなさんの使い慣れたソフトウェアに読み込ませて,好きなように分析してもらいたいと思っています
27
のインストール
• http://mtmr.jp/ttm/ から ttm.exe をダウンロードするだけで 本体のインストールは終わりです
• 形態素解析を実行するためのソフトウェア MeCabを別途インストールする必要があります(構文解析を行うときは CaboCha もインストールします).詳細は http://mtmr.jp/ttm/ をご覧ください
34
サンプルデータ
• 「あなたにとって『Yahoo! 知恵袋とはどんな場ですか.自由にお書きください」に対する自由記述文(回答者数 4060名)のうち,ランダムサンプリングした1000名分のデータを分析対象とします(http://mtmr.jp/ttm/ からダウンロードできます)
35
分析条件
• 次の条件で で sample_chiebukuro.csv を分析してみましょう
- 出力する品詞は「名詞,形容詞,動詞,副詞」- オプションファイルは「設定せず」- 出現頻度/出現件数の最小値は「10」- 係り受け解析は「なし」
37
抽出された126語
• 名詞(61語) 質問 場 回答 人 自分 場所 知識 知恵袋 意見 情報 便利 気軽 疑問 暇つぶし 非常 利用 答え 解決 他 参考 他人 それ 私 知恵 勉強 考え 役 悩み 気 何 検索 考え方 相談 サイト 意味 必要 掲示板 コミュニケーション 簡単 ここ 身近 削除 解答 活用 感じ 参加 誰 好き 問題 不快 投稿 生活 友達 残念 存在 心 アドバイス 誰か みんな 頼り 変 大変 ジャンル 確認 趣味 気持ち
• 複合名詞(7語) 質問|者 回答|者 情報|源 人|たち 情報|交換 貢献|度 情報|収集
• 動詞(48語) する ある 思う なる 知る 教える いる 得る 聞ける 聞く 見る 困る 答える 助かる 調べる 持つ 言う もらえる 使う いう 考える 感じる 助ける 違う 選ぶ たつ 出る 書く 減る 増える 荒らす 悩む 高める 来る 言える ふざける 知れる なくなる 励ます
• 形容詞(14語) 多い ない 楽しい いい 嬉しい 面白い ありがたい すごい 少ない 詳しい うれしい 新しい 無い 早い
• 同義語(5語) できる わかる よい いろいろ 役に立つ
45
執筆時期の推定
• 日本古典文学の最高峰といわれている「源氏物語」には,複数著者説や,巻序の順序と執筆順序について疑問が呈されている
• 文章の特徴の時系列変化を捉えることで,これらの仮説を検証することができる
• テキストの内容を分析する場合には名詞や形容詞が重要であるが,執筆者の特徴を捉えるには助詞や読点の打ち方が重要になる(文章の内容やジャンルの影響が小さいから)
49
第1主成分の項目別グラフ
53
!"#$%
!"#&%
!"#'%
!"#(%
"%
"#(%
"#'%
"#&%
"#$%
が)格助詞
読点
て)接続助詞
と)接続助詞
まで)副助詞
から)格助詞
ながら)接続助詞
で)格助詞
から)接続助詞
が)接続助詞
ば)接続助詞
ども)接続助詞
など)副助詞
より)格助詞
を)格助詞
の)格助詞
も)係助詞
しも)副助詞
は)係助詞
に)格助詞
が(格助詞)の使用率の年代別変化
54
!"
!#!$"
!#!%"
!#!&"
!#!'"
!#("
!#($"
("
(("
$("
)("
%("
*("
&("
+("
'("
,("
(!("
((("
($("
()("
(%("
(*("
(&("
(+("
('("
(,("
$!("
$(("
$$("
$)("
$%("
が!格助詞
に(格助詞)の使用率の年代別変化
55
!"
!#!$"
!#!%"
!#!&"
!#!'"
!#("
!#($"
!#(%"
!#(&"
!#('"
("
(("
$("
)("
%("
*("
&("
+("
'("
,("
(!("
((("
($("
()("
(%("
(*("
(&("
(+("
('("
(,("
$!("
$(("
$$("
$)("
$%("
に!格助詞
回帰分析
lm(formula = y ~ 読点 + は_係助詞 + に_格助詞 + が_格助詞 + の.準体助詞 + か_係助詞 + ば_接続助詞 + や_係助詞 + で_接続助詞 + へ_格助詞 + まで_副助詞 + ばかり_副助詞 + が_接続助詞 + から_接続助詞 + とも_接続助詞 + さへ_副助詞 + ど_接続助詞, data = akuta)
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
(Intercept) 1917.6 読点 -10.5 は_係助詞 32.5 に_格助詞 28.7 が_格助詞 -50.2 の.準体助詞 -31.4 か_係助詞 58.6 ば_接続助詞 32.3 や_係助詞 42.4 で_接続助詞 58.5 へ_格助詞 72.2 まで_副助詞 -120.0 ばかり_副助詞 -230.3 が_接続助詞 122.7 から_接続助詞 132.2 とも_接続助詞 -283.8 さへ_副助詞 -255.1 ど_接続助詞 -175.4
国際金融情報センター
• 市場解説記事(毎週発行)• 1000~1500文字の分量で,その週の金融市場の関連したと思われる経済ニュースをまとめたテキスト
• 指標の発表内容など実際に起きた出来事だけでなく,当時の市場の観測に関する情報も記述されている
59
予測
• 1992年から1995年のテキストデータをコーディング• 1992年から1994年の3年間(156週)のデータから予測モデル(決定木)を作成
• 1995年の指標を予測• 予測指標は14カテゴリ(景気,物価,金利…)の動向(0, ±1, ±2, ±3 の7段階)
64
を使ってみます
• 統計解析のフリーソフトウェアです• いろんな人が便利な関数やパッケージを公開している(2009年6月17日現在,CRANには1849ものパッケージが登録されています)ので,コレ一つで大抵のことはできます
• 形態素解析や構文解析を行うパッケージもあります• データマイニングのパッケージもあります• たくさんの書籍が出版されているので,マニュアルも充実しています
79
R用入力ファイルを作ります
• まずTTMで前処理をします
- 出現件数の最小値は50(言及率が5%未満の語をカット)
- 同義語リストはスライド〈37〉と同じ
- 不要語リストは「する」「できる」「ある」「なる」「いる」「場」「場所」「知恵袋」
• テキスト×語のクロス集計ファイル (sample_chiebukuro_ttm6. csv) を開き,
- 不要な情報(2行目の品詞と3行目の品詞細分類)を削除
- A列目を回答者のID (ID1~ID1000) に変換
をしてからファイル名を princomp.csv として保存します
80
主成分分析 (1/4)
• まず,ファイルを読み込みます
• 群馬大学の青木繁伸先生が作成した主成分分析のパッケージをダウンロードします
• 主成分分析を実行します
82
> tmp <- file("/Users/matumura/Desktop/princomp.csv", open="r", encoding="Shift-JIS")> chie1 <- read.csv(tmp, header=T, row.names=1)
> source("http://aoki2.si.gunma-u.ac.jp/R/src/pca.R", encoding="euc-jp")
> chie1.pc <- pca(chie1)
> chie1 <- read.csv(“C:/path/to/princomp.csv”, header=T, row.names=1)
Macの場合
Winの場合
主成分分析 (2/4)
• 主成分負荷量を表示します
83
> 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
主成分分析 (3/5)
• 寄与率を表示します
84
> chie1.pc$contribution
PC 1 PC 2 PC 3 PC 4 PC 5 PC 6 PC 710.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) なので主成分分析には適さないデータ
• 散布図を描いてみます
85
主成分分析 (4/4)
> plot(chie1.pc$factor.loadings[,1:2], type="n")> text(chie1.pc$factor.loadings, colnames(chie1))
クラスター分析 (1/2)
• 成分負荷行列を chie2 に格納します
• 距離行列を算出します
• ウォード法で階層的クラスタリングを行います
86
> chie2 <- chie1.pc$factor.loadings
> chie2.d <- dist(chie2)
> chie2.hc <- hclust(chie2.d, "ward")
多次元尺度構成法 (1/2)
• 多次元尺度構成法のコマンドを打ち込みます
88
> 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
多次元尺度構成法 (2/2)
• 各語をプロットしてみましょう
89
> plot(chie2.cmd, type="n")> text(chie2.cmd, rownames(chie2.cmd))
対応分析用のデータを作ります
• まずTTMで前処理をします
- 出現件数の最小値は50(言及率が5%未満の語をカット)
- 同義語リストはスライド〈37〉と同じ
- 不要語リストは「する」「できる」「ある」「なる」「いる」「場」「場所」「知恵袋」
• 語×タグのクロス集計ファイル (sample_chiebukuro_ttm4.csv) を開き,
- 不要な情報(2列目の品詞と3列目の品詞細分類)を削除
をしてから,ファイル名を corresp.csv として保存します
90
対応分析 (1/4)
• まず,ファイルを読み込みます
• パッケージ MASS を読み込みます•
92
> tmp <- file("/Users/matumura/Desktop/corresp.csv", open="r", encoding="Shift-JIS")> chie3 <- read.csv(tmp, header=T, row.names=1)
> library(MASS)
> chie3 <- read.csv(“C:/path/to/corresp.csv”, header=T, row.names=1)
Macの場合
Winの場合
対応分析 (2/4)
• 対応分析を実行します
• 固有値を求めます
• 固有値を表示します
• 固有値から寄与率を求めます
• 寄与率を表示します
93
> chie3.eig <- chie3.ca$cor^2
> chie3.ca <- corresp(chie3, nf=4)
> 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で良さそう
対応分析 (3/4)
• 次元数を 2 として対応分析を行います
• 列得点を出力します
• 行得点を出力します
94
> chie3_1.ca <- corresp(chie3, nf=2)
[,1] [,2]X1 -1.3614971 0.3009687X2 -0.5106691 -1.9694733X3 0.6378705 0.7599440X4 1.3518437 -1.2548151
[,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
> chie3_1.ca$cscore
> chie3_1.ca$rscore
• データマイニングのフリーソフトウェアである Weka にもデータを読み込ませることができます
• テキスト×語のクロス集計ファイル (sample_chiebukuro_ttm6.csv) を開き,
- 不要な情報(A列目の原文,2行目の品詞,3行目の品詞細分類)を削除
- 「TAG」列のタグを名義変数にする(そのままだと数値属性と判断されてしまう)
をしてからファイル名を weka.csv として保存します
96
まとめ
• テキストマイニング =〈前処理〉+〈多変量解析 or データマイニング〉
• テキストマイニングは語や表現の揺れが大きいので,それを如何に吸収するかが重要になります
• 前処理さえ済めば,あとはRやWekaといった各自の得意な土俵に持ち込んで勝負すればいいのです
• テキストマイニング恐るるに足らず!
99