TM2018 講習会資料 MTMineR を用いたテキストマイニングの基礎 同志社大学文化情報学研究科データサイエンス研究室 目次 1. イントロダクション テキストマイニングのプロセス 2. R 言語基礎 R 言語 環境 R データ型と構造 グラフィックスの作成 基礎統計解析 外部データ読み込み 3. テキストマイニングのための環境整備 Java と R のインストール 日本語形態素解析器 (MeCab) の演習 日本語係り受け解析器 (CaboCha) の演習 2 目次テキストマイニングのプロセス 1/4 1. イントロダクション テキストマイニングのプロセス 2. R 言語基礎 R 言語 環境 R データ型と構造 グラフィックスの作成 基礎統計解析 外部データ読み込み テキストマイニングの全体像 大量のテキストから有益の情報獲得 テキスト データ抽出 変数 テキスト 3. テキストマイニングのための環境整備 Java と R のインストール 日本語形態素解析器 (MeCab) の演習 日本語係り受け解析器 (CaboCha) の演習 3 結果解釈 統計解析 4
テキストマイニングのプロセス 1/4 テキストマイニングのプロセス テキストから抽出した特徴データに統計解析を行う STEP1: テキストファイルから特徴抽出 集計 テキスト データセット 変数 テキスト テキストマイニングのプロセス 1/4 テキストマイニングのプロセス テキストから抽出した特徴データに統計解析を行う STEP1: テキストファイルから特徴抽出 集計 特徴データ 変数 STEP2: 特徴データに対して統計解析を行う テキスト 記述統計 ( 平均 分散など ) 推測統計 ( 推定 検定など ) 多変量解析 ( 主成分分析など ) 5 6 テキストマイニングのプロセス 1/4 テキストマイニングのプロセス テキストから抽出した特徴データに統計解析を行う テキストマイニングのプロセス 2/4 特徴データ 目的に沿ってテキストから抽出したデータセット STEP1: テキストファイルから特徴抽出 集計 特徴データ 変数 STEP2: 特徴データに対して統計解析を行う STEP3: 結果の可視化 統計モデルの解釈 テキスト 記述統計 ( 平均 分散など ) 推測統計 ( 推定 検定など ) 多変量解析 ( 主成分分析など ) 7 目的は多種多様 歌詞 ブログ 音程 音高 人称代名詞の研究 ( 私 僕 彼など ) 男女の言葉の違い ( 男性と女性の会話文 ) 文体変化や著者識別などの研究 ( 助詞などの文体特徴量 ) 8
テキストマイニングのプロセス 2/4 特徴データ例 川端康成と三島由紀夫の助詞使用状況を考察 テキストマイニングのプロセス 3/4 統計解析 例 : 主成分分析 特徴データ 作品名 / 変数名 の は に て K_ たまゆら 340 226 213 161 K_ みづうみ 1940 1510 1317 1349 K_ 再婚者 1051 800 806 680 K_ 小春日 157 122 86 102 M_ 孤閨悶々 363 260 264 301 M_ 家庭裁判 396 287 279 265 M_ 携帯用 334 295 272 241 M_ 月 372 239 228 221 9 10 テキストマイニングのプロセス 3/4 統計解析 例 : 主成分分析 テキストマイニングのプロセス 3/4 統計解析 例 : 主成分分析 三島由紀夫 三島由紀夫 三島由紀夫 を に の多用 川端康成 川端康成 川端康成 と も の多用 11 12
テキストマイニングのプロセス 3/4 統計解析 例 : 階層的クラスター分析 テキストマイニングのプロセス 3/4 テキストマイニングのツール 市販のソフト - Text Mining Studio - IBM SPSS Text Analytics for Surveys 研究用のソフト - KHCoder ( 樋口先生 ) - TinyTextMiner ( 松村先生 ) 三島由紀夫 川端康成 13 14 テキストマイニングのプロセス 3/4 テキストマイニングのツール 市販のソフト - Text Mining Studio - IBM SPSS Text Analytics for Surveys 研究用の無料ソフト - KHCoder ( 樋口先生 ) - TinyTextMiner ( 松村先生 ) Multilingual Text Miner with R = MTMineR 15 目次 1. イントロダクション テキストマイニングのプロセス 2. テキストマイニングのための環境整備 Java と R のインストール 日本語形態素解析器 (MeCab) の演習 日本語係り受け解析器 (CaboCha) の演習 3. R 言語基礎 R 言語 環境 R データ型と構造 グラフィックスの作成 基礎統計解析 外部データ読み込み 16
目次 R 言語 環境 1/3 1. イントロダクション テキストマイニングのプロセス 2. R 言語基礎 R 言語 環境 R データ型と構造 グラフィックスの作成 基礎統計解析 外部データ読み込み R 言語 統計解析向けのプログラミング言語である R のコンソール 3. テキストマイニングのための環境整備 Java と R のインストール 日本語形態素解析器 (MeCab) の演習 日本語係り受け解析器 (CaboCha) の演習 17 18 R 言語 環境 2/3 電卓としての R 四則演算 : + - *( 掛け算 ) /( 割り算 ) 余り : 10%%3 R 言語 環境 3/3 変数代入 変数 : データを一定期間記憶する 変数の保存 : < ーまたは = 変数の型の確認 : class() 19 20
R のデータ型と構造 1/4 ベクトル 複数の数値または文字列を一つにまとめたもの 関数 c( カンマで区切った数字または文字列 ) R のデータ型と構造 2/4 行列 ( マトリックス ) 複数の数値または文字列のまとまり 関数 matrix( データ, 行数, 列数, 埋め込み方向 ) 21 22 R のデータ型と構造 3/4 データフレーム 異なるデータ型 ( 数値 文字 ) のまとまり 関数 : data.frame() R のデータ型と構造 4/4 リスト ベクトル 行列とデータフレームのまとまり 関数 : list() 23 24
グラフィックス作成 1/6 アイリスデータ説明 3 種類のアヤメ : setosa, versicolor, virginica 4 つの計測値 : - がく片長 (Sepal Length), がく片幅 (Sepal Width) - 花びら長 (Petal Length), 花びら幅 (Petal Width) - 種 (Species) fix (iris) グラフィックス作成 1/6 ボーグラフ 関数 : barplot() barplot(iris[1:5,1],col=c(1:5)) #shitosa がく片長さ 1~5 番 25 26 グラフィックス作成 2/6 折れ線グラフ 関数 : matplot() matplot(iris[1:5,1],type = l ) #shitosa がく片長さ 1~5 番 グラフィックス作成 2/6 折れ線グラフ 関数 : matplot() matplot(iris[1:5,1],type = l ) 4 番目のがく片がより短い 27 28
グラフィックス作成 2/6 折れ線グラフ 関数 : matplot() matplot(iris[1:5,1],type = l ) グラフィックス作成 5/6 ヒストグラム データの分布を視覚的に示す 関数 : hist() hist(iris[1:50,1], col = "blue") hist(iris[101:150,1], col = "red") 29 30 グラフィックス作成 6/6 散布図 関数 plot() plot(iris[,1], iris[,3]) text(iris[,1], iris[,3]) # 萼片長と花びら長 Setosa 1~50 Virginica 101~150 Versicolor 51~100 グラフィックス作成 6/6 散布図 iris.label <- rep(c( S, C, V ),rep(50,3)) plot(iris[,1], iris[,3], type = n ) text(iris[,1], iris[,3], iris.label) Versicolor Setosa Virginica 31 32
グラフィックス作成 6/6 散布図 iris.label <- rep(c( S, C, V ),rep(50,3)) plot(iris[,1], iris[,3], type = n ) text(iris[,1], iris[,3], iris.label) 記述統計 1/2 平均 中位数 分散 四分位数 関数 : mean(), median(), var(), summary() など 33 34 記述統計 2/2 箱ひげ図 関数 : boxplot() boxplot(iris[1:50,1],main="setosa がく片の長さの箱ひげ図 ") 推測統計 t 検定 2 つの母集団の間に平均の差があるか 母集団の等分散性仮定 (student s t/welch s t) 関数 : t.test() 3 rd Qu. Median 1 st Qu. 35 # 母集団の等分散性を判断する F 検定 # 帰無仮説 :S と V がく片の長さの分散には差がない var.test(iris[1:50,1],iris[101:150,1]) # 母集団の等分散性を仮定できない Welch s t t.test(iris[1:50,1],iris[101:150,1],var.equal = FALSE) 結論 setosa と virginica のがく片長さの平均では有意差がある 36
主成分分析 主成分分析 情報損失を抑えて高次元データを低次元に圧縮 関数 prcomp(), biplot() biplot(prcomp(iris[,1:4])) 階層的クラスター分析 階層的クラスター分析 距離で似ている個体からクラスタリング 関数 dist(), biplot() iris.dist <- dist(iris[,1:4]) # ユーグリッド距離 iris.hclust <- hclust(iris.dist, method = "ward.d2") plot(iris.hclust) 37 38 外部データ読み込み 1/2 外部データ読み込み.csv ファイル read.csv().txt ファイル read.table() クリップボードから read.delim( clipboard ) 外部データ読み込み 2/2 外部データ読み込み data <- read.csv( d: KMjoshi.csv, row.names = 1) ファイルのルート ファイルの行名使用 39 40
外部データによる解析 主成分分析 ベクトル 行列とデータフレームのまとまり 関数 : prcomp() biplot() biplot(procomp(data)) 川端康成三島由紀夫 と も の多用 川端康成 三島由紀夫 を に の多用 41 目次 1. イントロダクション テキストマイニングのプロセス 2. R 言語基礎 R 言語 環境 R データ型と構造 グラフィックスの作成 基礎統計解析 外部データ読み込み 3. テキストマイニングのための環境整備 Java と R のインストール 日本語形態素解析器 (MeCab) の演習 日本語係り受け解析器 (CaboCha) の演習 42 環境整備 1/17 MTMineRの起動 MTMineR 本体を解凍 パソコンbit 数の確認 JREのインストール R 言語のインストール MeCabのインストール パス 環境整備 2/17 MTMineR の起動 CaboCha のインストール パス 43 44
環境整備 3/17 よくある不具合 MTMineR は一瞬で落ちる MTMineR の bit 数は Java R と同じではない R のパネルは起動できない R のパスを通していない 環境整備 4/17 PC bit 数確認 STEP1: 画面左下のstartボタンをクリック STEP2: W 欄のシステムツールをクリック 形態素 / 構文解析解析がうまくいかない MeCab/CaboCha はインストールされていないか パス通していない 45 STEP3: コントロールパネルをクリック STEP4: システムアイコンをクリック 46 環境整備 5/10 PC bit 数確認 環境整備 6/17 JRE のインストール https://www.java.com/ja/download/manual.jsp 47 48
環境整備 7/17 動作確認 STEP1: Window キー + R を同時に押す 環境整備 8/17 動作確認 成功例 STEP2: cmd を入力 Enter STEP3: C:Users [User 名 ] に Java Enter STEP4: C:Users [User 名 ] に Java -version Enter 49 50 環境整備 9/17 R 言語 環境のインストール 統計解析のためのプログラミング言語 https://cran.ism.ac.jp/bin/windows/base/ パスを通す 環境整備 10/17 動作確認 STEP1: Window キー + R を同時に押す STEP2: cmd を入力 Enter STEP3: C:Users [User 名 ] に r Enter STEP4: bit 数を確認 51 52
環境整備 11/17 パスを通す OS にソフトウエアを呼び出せるため STEP1: C: C: Program Files R R-3.4.0 bin STEP2: コントロールパネルをクリック 環境整備 12/17 MeCab のインストール 日本語の形態素解析を行うツール http://taku910.github.io/mecab/#download パスを通す STEP3: システムアイコン システム STEP4: システム詳細設定 環境変数 STEP5: 新規 STEP1のパスを貼りつけ STEP6: 確定 終了 53 54 環境整備 13/17 MeCab の演習 形態素 : 意味を表す最小の単位 品詞の情報も得られる STEP1: Window キー + R を同時に押す STEP2: cmd を入力 Enter STEP3: C:Users [User 名 ] に mecab Enter 環境整備 14/17 MeCab の演習 次に示すような画面が現れたら成功 学会名詞, 一般,*,*,*,*, 学会, ガッカイ, ガッカイに助詞, 格助詞, 一般,*,*,*, に, ニ, ニ参加名詞, サ変接続,*,*,*,*, 参加, サンカ, サンカする動詞, 自立,*,*, サ変 スル, 基本形, する, スル, スル 記号, 句点,*,*,*,*,,, 形態素 品詞 STEP4: 学会に参加する を入力 Enter 55 56
環境整備 15/17 CaboCha のインストール 日本語の係り受け解析を行うツール https://taku910.github.io/cabocha/ パスを通す 環境整備 16/17 CaboCha の演習 文節 : 言語として不自然でない程度の最小単位 STEP1: Ctrl + C を同時に押す STEP2: cabocha -f1 を入力 Enter STEP3: 学会に参加する を入力 Enter 57 58 環境整備 17/17 CaboChaの演習 次に示すような画面が現れたら成功第 0 文節 * 0 1D 0/1 0.000000 学会名詞, 一般,*,*,*,*, 学会, ガッカイ, ガッカイに助詞, 格助詞, 一般,*,*,*, に, ニ, ニ * 1 1D 1/1 0.000000 参加名詞, サ変接続,*,*,*,*, 参加, サンカ, サンカする動詞, 自立,*,*, サ変 スル, 基本形, する, スル, スル 記号, 句点,*,*,*,*,,, 第 1 文節 59 まとめ イントロダクション テキストマイニングのプロセス テキストデータのクリーニング 正規表現を用いた青空文庫のデータ処理 テキストマイニングのための環境整備 Java と R のインストール 日本語形態素解析器 (MeCab) 日本語係り受け解析器 (CaboCha) R 言語基礎 R 環境 データ型とグラフィックス R 言語による記述 推測統計と主成分分析 60
ご清聴どうもありがとうございました 付録 61 62 正規表現を用いた前処理 1/4 前処理 テキストデータを分析に耐える形にする 青空文庫 : https://www.aozora.gr.jp/ 芥川龍之介 羅生門 正規表現を用いた前処理 1/4 前処理 テキストデータを分析に耐える形にする 青空文庫 : https://www.aozora.gr.jp/ 芥川龍之介 羅生門 分析に必要なし 63 64
正規表現を用いた前処理 2/4 テキストデータのクリーニング 正規表現文字列の集合を一つの文字列で表現する方法 正規表現を用いた前処理 3/4 テキストデータのクリーニング 対応エディタ : 秀丸 サクラエディタなど 例 : 正規表現 : 講. 会 講 と 会 の間に任意一文字が入る 講習会 講演会など 正規表現記号意味. 任意 1 文字 + 直前の文字の1 回以上の繰り返し [ ~] [] の中のどれか1 文字 n 改行 青空文庫に現れるルビの共通特徴下人 げにん 羅生門 らしょうもん 山括弧 で括られている 65 66 正規表現を用いた前処理 3/4 テキストデータのクリーニング 対応エディタ : 秀丸 サクラエディタなど 正規表現を用いたルビ削除 [ ^ ] + 始まり ではない 任意文字繰り返し 終わり で始まり で終わる 真ん中に ではない任意文字 67