SlideShare a Scribd company logo
1 of 57
さくっとはじめる
テキストマイニング(R言語)
Version 1.0.1
スタートアップ編
2016年3月6日
Copyright © Skywill inc. All Rights Reserved.
Copyright © Skywill inc. All Rights Reserved.
本スライドについて
R言語の初級者
(ちょっとだけなら、R言語を書ける人)
対象者
用途
「さくっとテキストマイニングを始める」ための、お助け資料
テキストマイニング未経験者
(興味があるのでやってみたい人)
2
Copyright © Skywill inc. All Rights Reserved.
本スライドについて
1)テキストマイニングの技術紹介
内容
3)プログラムを紹介
2)テキストマイニングの流れ
3
Copyright © Skywill inc. All Rights Reserved.
本スライドについて
作成者
嶋田 裕
R言語経験: 4ヶ月
職業: エンジニア
興味: ビッグデータ、統計解析、Webクローリング
趣味: 家庭菜園、フットサル
かいわれ大根
R言語経験: 4ヶ月
職業: エンジニア
興味: ビックデータ、統計解析
趣味: 読書
4
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
1)テキストマイニングの技術紹介
内容
3)プログラムを紹介
2)テキストマイニングの流れ
5
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
6
テキストマイニング
形態素解析
ワードクラウド
Nグラム解析
ネットワーク図
データクレンジング
■紹介する技術の一覧
テキストデータをマイニングする技術
文章を形態素に分解する技術
ゴミ情報を取り除く処理
文章中で連続する形態素を抽出する技術
関連性のある2つの形態素を表す統計手法
形態素の出現頻度を直感的に表す統計手法
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
データの中から知識(意味のある情報)を得る事をデータマイニングという。
テキストマイニングは、対象データを文字列としたデータマイニングのこと。
テキストマイニング
ホームページ
小説
アンケート
ツイッター
テキスト
マイニング
登場人物の交友関係
つぶやきランキング
分類分け情報
ホームページ
の頻出ワード
7
入力情報 出力情報
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
形態素解析
文章を言葉の意味の最小構成要素(形態素)に分割し、
それぞれの品詞、活用形などを判別する技術。
この竹藪に竹立て掛けたのは竹立て掛けたかったから竹立て掛けた。
文章の先頭から辞書の見出しを当てていき、
該当する単語を選択
この 竹 に藪 竹 立て掛けた の は
名詞 名詞 動詞助詞 名詞名詞 助詞連体詞
・・・
8
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
データクレンジング
データから不要な情報(ゴミ情報、ノイズ)を取り除くことを、
「データクレンジング(ノイズ除去)」 という。
。
たい
は
から
た
立て掛ける
に
竹
藪
の
この
立て掛ける 竹
藪
9
例えば、
「名詞」「動詞」以外は、単語として意味をなさないので、ゴミ情報として取り除くなど。
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
ワードクラウド
文章の中で出現頻度が高い単語を複数選び出し、その頻度に応じた大き
さで図示する手法。
「ビックデータ」「クラウド」「教育」の
出現頻度が高いという
文章の特徴がパッと見でわかる。
10
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
この 竹 に藪 竹 立て掛ける
11
Nグラム解析
連続するN個の単語(形態素)の出現頻度を求める手法。
例えば、N=2の場合、以下のようなデータ(バイグラムデータという)が得られる
番号 形態素1 形態素2 出現頻度
1 この 竹 1
2 竹 藪 1
3 藪 に 1
4 に 竹 1
5 竹 立て掛ける 1
連続 連続 連続 連続 連続
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
この 竹 に藪 竹 立て掛ける
12
この場合、こんなバイグラムデータが得られる
番号 形態素1 形態素2 出現頻度
1 竹 藪 1
2 藪 竹 1
竹 藪 竹
名詞 名詞 動詞助詞 名詞連体詞
名詞だけに注目して、バイグラムデータを取得することもできる。
名詞の連続性だけに注目
連続 連続
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
13
番号 形態素1 形態素2 出現頻度
1 竹 藪 1
2 藪 竹 1
形態素1である「竹」と形態素2である「藪」は、共起関係にあるという。
番号 形態素1 形態素2 出現頻度
1 竹 藪 7
2 藪 竹 1
もし、仮に、この共起関係の出現頻度が高い場合、
「竹」と「藪」は、関係性の高い単語であるとみなせる。
Copyright © Skywill inc. All Rights Reserved.
1)テキストマイニングの技術紹介
ネットワーク図
関係性のある単語と単語を矢印で結び、それらの関係性を図示する
手法。
A B
A B
「A」は、「B」に対して関係あり
「A」「B」は、お互いに関係あり
14
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
1)テキストマイニングの紹介
内容
3)プログラムを紹介
2)テキストマイニングの流れ
15
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
「テキストマイニング」の流れ
1)文章を分解してデータを得る
3)データを整える
2)データからゴミを取り除く
4)データをマイニングする
16
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
この 竹 に
形態素に分解
藪 竹 立て掛ける の は ・・・
名詞 名詞 動詞助詞 名詞名詞 助詞連体詞
1)文章を分解してデータを得る
この竹藪に竹立て掛けたのは竹立て掛けたかったから竹立て掛けた。
17
形態素解析を使用して、文章を形態素に分解する。
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
番号 形態素 品詞 区分 出現頻度
1 。 記号 句点 1
2 に 助詞 格助詞 1
3 は 助詞 係助詞 1
4 から 助詞 接続助詞 1
5 た 助動詞 * 3
6 たい 助動詞 * 1
7 立て掛ける 動詞 自立 3
8 竹 名詞 一般 4
9 藪 名詞 固有名詞 1
10 の 名詞 非自立 1
11 この 連体詞 * 1
形態素解析で得られるデータは、こんな感じ
18
1)文章を分解してデータを得る
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
2)データからゴミを取り除く
この 竹 に藪 竹 立て掛ける の は
名詞 名詞 動詞助詞 名詞名詞 助詞連体詞
・・・
竹 藪
名詞 名詞
竹 立て掛ける
動詞名詞
名詞(非自立を除く)、動詞以外を、
ゴミ情報として取り除く。
非自立
19
取得したデータから不要な情報を取り除く。
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
番号 形態素 品詞 区分 出現頻度
1 。 記号 句点 1
2 に 助詞 格助詞 1
3 は 助詞 係助詞 1
4 から 助詞 接続助詞 1
5 た 助動詞 * 3
6 たい 助動詞 * 1
7 立て掛ける 動詞 自立 3
8 竹 名詞 一般 4
9 藪 名詞 固有名詞 1
10 の 名詞 非自立 1
11 この 連体詞 * 1
ゴミを取り除いた後のデータは、こんな感じ
20
2)データからゴミを取り除く。
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
3)データを整える
竹
藪
3回立て掛ける
出現頻度で並べ替え
4回
1回
竹
藪
立て掛ける
4回
3回
1回
次の工程で実施するデータマイニングをしやすくするための処理です。
データを並べ替えたり、データを分類分けしたり、特定データ抽出をします。
21
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
番号 形態素 品詞 区分 出現頻度
8 竹 名詞 一般 4
7 立て掛ける 動詞 自立 3
9 藪 名詞 固有名詞 1
1 。 記号 句点 1
2 に 助詞 格助詞 1
3 は 助詞 係助詞 1
4 から 助詞 接続助詞 1
5 た 助動詞 * 3
6 たい 助動詞 * 1
10 の 名詞 非自立 1
11 この 連体詞 * 1
有効データを出現頻度で並べ変えた後は、こんな感じ
22
3)データを整える
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
4)データをマイニングする
マイニング
竹
藪
立て掛ける
4回
3回
1回
0
1
2
3
4
23
データを統計グラフ化する。
竹
立て掛ける
藪
竹
立て掛
ける
藪
Copyright © Skywill inc. All Rights Reserved.
2)テキストマイニングの流れ
R言語には、データを統計グラフ化するためのライブラリが豊富にある。
プログラマは、このライブラリを使うだけ(楽ちん)。
今回使用するライブラリは、後ほど紹介。
24
4)データをマイニングする
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介
1)テキストマイニングの紹介
内容
3)プログラムを紹介
2)テキストマイニングの流れ
25
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介
まず、準備として、紹介するプログラムの中で使用する
ライブラリパッケージをインストールします。
【注意】 本スライドの対象者は、R言語の初級者なので、すでにプログラミング環境がある事を
前提として話を進めます。
RMecab
wordcloud
igraph
形態素解析の機能を提供
ワードクラウドの機能を提供
共起ネットワークの機能を提供
26
> install.packages("RMeCab", repos = "http://rmecab.jp/R")
> install.packages("wordcloud")
> install.packages(“igraph")
インストールコマンド
あーるめかぶ
あいぐらふ
Copyright © Skywill inc. All Rights Reserved.
① ワードクラウド
3)プログラムを紹介
紹介するプログラムは、以下の2つ。
② 共起ネットワーク
登場ワードの出現頻度を解析してワードクラウド表示する。
登場ワードの関係性をネットワーク表示する。
27
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
テキスト化した自社のホームページ情報をマイニングして、
登場頻度の高いワードをワードクラウドで直感的に表現する。
SKYWILLってこんな会社
28
① ワードクラウド
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
「ワードクラウド」の流れ
1)文章を分解してデータを得る
3)データを整える (頻度の高いワードを抽出、並び変え)
2)データからゴミを取り除く(名詞以外の情報を取り除く)
4)データをマイニングする (ワードクラウドで表示する)
29
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
# ライブラリパッケージ読み込み
library(RMeCab)
library(wordcloud)
# 1)文章を分解してデータを得る
word <- RMeCabFreq("./SkyWill.txt")
# 2)データからゴミを取り除く
word <- subset(word, Info1 == "名詞")
type <- c("数","非自立","接尾")
word <- subset(word, !Info2 %in% type)
# 3)データを整える
word <- word[order(word$Freq, decreasing=T), ]
word <- head(word, n=30)
# 4)データをマイニングする(ワードクラウド表示)
patern <- brewer.pal(8, "Dark2")
wordcloud(word$Term, word$Freq, min.freq = 1, colors=patern)
WordCloud.R
30
Copyright © Skywill inc. All Rights Reserved.
# 1)文字列を分解してデータを得る
word <- RMeCabFreq("./SkyWill.txt")
3)プログラムを紹介 【①ワードクラウド】
RMeCabFreq()
WordCloud.R
テキストを形態素に分解し、形態素ごとの出現頻度を取得する関数。
番号 形態素 品詞 区分 出現頻度
以下のフォーマットのデータ(データフレーム型)が得られる
RMecabライブラリが提供する関数。
31
1)文章を分解してデータを得る
対象テキスト
1)文章を分解してデータを得る
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
得られるデータは、こんな感じ
番号 形態素 品詞 区分 出現頻度
1 R言語 名詞 固有名詞 5
2 に 助詞 格助詞 26
3 クラウド 名詞 固有名詞 13
4 たい 助動詞 * 9
5 ビッグデータ 名詞 固有名詞 17
6 教育 名詞 一般 8
7 の 名詞 非自立 23
8 さん 名詞 数 10
9 エンジニア 名詞 一般 6
10 貢献する 動詞 自立 2
: : : : :
32
# 2)データからゴミを取り除く
word <- subset(word, Info1 == "名詞")
type <- c("数","非自立","接尾")
word <- subset(word, !Info2 %in% type)
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
WordCloud.R
得られたデータから名詞以外をゴミ情報として取り除く。
33
2)データからゴミを取り除く
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
番号 形態素 品詞 区分 出現頻度
1 R言語 名詞 固有名詞 5
2 に 助詞 格助詞 26
3 クラウド 名詞 固有名詞 13
4 たい 助動詞 * 9
5 ビッグデータ 名詞 固有名詞 17
6 教育 名詞 一般 8
7 の 名詞 非自立 23
8 さん 名詞 数 10
9 エンジニア 名詞 一般 6
10 貢献する 動詞 自立 2
: : : : :
34
2)データからゴミを取り除く
ゴミを取り除いた後のデータは、こんな感じ
# 2)データからゴミを取り除く
word <- subset(word, Info1 == "名詞")
type <- c("数","非自立","接尾")
word <- subset(word, !Info2 %in% type)
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
WordCloud.R
さらに、名詞のうち、”数“、“非自立”、“接尾”に該当するデータを
ゴミ情報として取り除く。
35
2)データからゴミを取り除く
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
番号 形態素 品詞 区分 出現頻度
1 R言語 名詞 固有名詞 5
2 に 助詞 格助詞 26
3 クラウド 名詞 固有名詞 13
4 たい 助動詞 * 9
5 ビッグデータ 名詞 固有名詞 17
6 教育 名詞 一般 8
7 の 名詞 非自立 23
8 さん 名詞 数 10
9 エンジニア 名詞 一般 6
10 貢献する 動詞 自立 2
: : : : :
36
2)データからゴミを取り除く
ゴミを取り除いた後のデータは、こんな感じ
# 3)データを整える
word <- word[order(word$Freq, decreasing=T), ]
word <- head(word, n=30)
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
WordCloud.R
登場頻度の高い順で並べ替える。
登場頻度の上位30個のデータを抽出する。
37
3)データを整える
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
番号 形態素 品詞 区分 出現頻度
5 ビッグデータ 名詞 固有名詞 17
3 クラウド 名詞 固有名詞 13
6 教育 名詞 一般 8
9 エンジニア 名詞 一般 6
1 R言語 名詞 固有名詞 5
: : : : :
2 に 助詞 格助詞 26
4 たい 助動詞 * 9
7 の 名詞 非自立 23
8 さん 名詞 数 10
10 貢献する 動詞 自立 2
38
3)データを整える
整えた後のデータは、こんな感じ
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
WordCloud.R
# 4)データをマイニングする(ワードクラウド)
patern <- brewer.pal(8, "Dark2")
wordcloud(word$Term, word$Freq, min.freq = 1, colors=patern)
wordcloud() wordcloudライブラリが提供する関数。
39
4)データをマイニングする
形態素データを使って、統計解析(ワードクラウド表示)する。
形態素名 出現頻度
対象を出現頻度
1回以上の形態素とする
色の表示パターン
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【①ワードクラウド】
表示されるデータは、こんな感じ
40
4)データをマイニングする
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
アニメのセリフを集めたテキストをマイニングして、
登場人物の関係をネットワーク図で表現する。
41
② 共起ネットワーク
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
「共起ネットワーク」の流れ
1)文章を分解してデータを得る
3)データを整える (共起性の強いデータを抽出する)
2)データからゴミを取り除く(登場人物以外を取り除く)
4)データをマイニングする (ネットワーク図で表示する)
42
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
# ライブラリパッケージ読み込み
library(RMeCab)
library(igraph)
# 1)文章を分解してデータを得る
ngram <- NgramDF("./Totoro.txt", type=1, pos=c("名詞"), N=2)
# 2)データからゴミを取り除く
char= c("トトロ", "サツキ", "メイ", "お父さん", "お母さん", "カンタ", "ばあちゃん")
ngram <- subset(ngram, (Ngram1 %in% char)&(Ngram2 %in% char))
# 3)データを整える
ngram <- subset(ngram, Freq>=4)
# 4)データをマイニングする(ネットワーク図表示)
graph <- graph.data.frame(ngram)
plot(graph, vertex.label=V(graph)$name, vertex.size=15)
Network.R
43
Copyright © Skywill inc. All Rights Reserved.
# 1)文字列を分解してデータを得る
ngram <- NgramDF("./Totoro.txt", type=1, pos=c("名詞"), N=2)
3)プログラムを紹介 【②共起ネットワーク】
NgramDF()
Network.R
文章を形態素に分解し、連続する2つの形態素の出現頻度を取得
(Nグラム解析)する。
RMecabライブラリが提供する関数。
44
1)文章を分解してデータを得る
対象テキスト
分割単位を
形態素に指定
名詞の連続性
のみ注目
2つの形態素の共起性
を解析(バイグラム)
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
バス停で、サツキはトトロに出会った。
バス停 で サツキ は トトロ 出会ったに
バス停 サツキ トトロ
形態素に分解
名詞の連続性だけに注目
45
1)文章を分解してデータを得る
番号 形態素1 形態素2 出現頻度
1 バス停 サツキ 1
2 サツキ トトロ 1
連続する2つの形態素の出現頻度を取得
バイグラムデータ
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
番号 形態素1 形態素2 出現頻度
1 サツキ トトロ 9
2 トトロ サツキ 3
3 バス停 サツキ 6
4 トトロ メイ 4
5 メイ 探索 4
6 探索 お願い 1
7 カンタ サツキ 5
8 カンタ メイ 2
9 ばあちゃん カンタ 4
10 メイ トトロ 12
: : : :
46
1)文章を分解してデータを得る
例えば、得られるデータは、こんな感じ
# 2)データからゴミを取り除く
char= c("トトロ", "サツキ", "メイ", "お父さん", "お母さん", "カンタ", "ばあちゃん")
ngram <- subset(ngram, (Ngram1 %in% char)&(Ngram2 %in% char))
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
Network.R
得られたデータから登場人物以外をゴミ情報として取り除く。
形態素1、形態素2共に、登場人物に該当するデータだけを
有効データとみなす。
47
2)データからゴミ情報を取り除く
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
番号 形態素1 形態素2 出現頻度
1 サツキ トトロ 9
2 トトロ サツキ 3
3 バス停 サツキ 6
4 トトロ メイ 4
5 メイ 探索 4
6 探索 お願い 1
7 カンタ サツキ 5
8 カンタ メイ 2
9 ばあちゃん カンタ 4
10 メイ トトロ 12
: : : :
48
2)データからゴミ情報を取り除く
ゴミ情報を取り除いた後のデータは、こんな感じ
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
登場人物で絞り込みしないで、ネットワーク図を表示すると
情報が多すぎて、ぐちゃぐちゃに Σ( ̄ロ ̄lll) orz
49
2)データからゴミ情報を取り除く
# 3)データを整える
ngram <- subset(ngram, Freq>=4)
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
Network.R
出現頻度が4回以上のデータを抽出する。
共起関係にあるデータで、かつ、出現頻度が高い場合、
2つのワードには、関係性があると言える。
50
3)データを整える
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
番号 形態素1 形態素2 出現頻度
1 サツキ トトロ 9
2 トトロ サツキ 3
3 バス停 サツキ 6
4 トトロ メイ 4
5 メイ 探索 4
6 探索 お願い 1
7 カンタ サツキ 5
8 カンタ メイ 2
9 ばあちゃん カンタ 4
10 メイ トトロ 12
: : : :
51
3)データを整える
整えた後のデータは、こんな感じ
# 4)データをマイニングする(ネットワーク図表示)
graph <- graph.data.frame(ngram)
plot(graph, vertex.label=V(graph)$name, vertex.size=15)
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
Network.R
graph.data.frame()
バイグラムデータをグラフ表示用データに変換する。
52
4)データをマイニングする
igraphライブラリが提供する関数。
バイグラムデータ
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
番号 Nグラム1 Nグラム2 出現頻度
1 サツキ トトロ 9
4 トトロ メイ 4
7 カンタ サツキ 5
: : : :
番号 グラフ情報
1 サツキ -> トトロ
2 トトロ -> メイ
3 カンタ -> サツキ
: :
変換
53
4)データをマイニングする
変換後のデータは、こんな感じになる
# 4)データをマイニングする(ネットワーク図表示)
graph <- graph.data.frame(ngram)
plot(graph, vertex.label=V(graph)$name, vertex.size=15)
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
Network.R
plot() R言語の組み込み関数。
グラフ表示用データを使って、統計解析(ネットワーク図表示)する。
54
4)データをマイニングする
グラフデータのノード名
(トトロ、サツキなど)
ネットワーク図の
ノード(丸)のサイズ
Copyright © Skywill inc. All Rights Reserved.
3)プログラムを紹介 【②共起ネットワーク】
55
4)データをマイニングする
表示されるデータは、こんな感じ
Copyright © Skywill inc. All Rights Reserved.
まとめ (おさえるべきポイント)
形態素解析を理解すること
テキストマイニング処理の流れを理解すること
文章を最小構成要素(形態素)に分解する技術 (8ページ参照)。
R言語では、RMecabライブラリで実現できる。
56
1)文章を分解してデータを得る
3)データを整える
2)データからゴミを取り除く
4)データをマイニングする
流れは、以下の4段階(16~24ページ参照)。
形態素解析、Nグラム解析
データクレンジング(ノイズ除去)
並べ替え、抽出、分類分けなど
ワードクラウド、ネットワーク図など
Copyright © Skywill inc. All Rights Reserved.
参考文献
Rで学ぶ日本語テキストマイニング
石田基広・小林雄一郎 著
みんなのR
データ分析と統計解析の新しい教科書
Jared P. Lander [著]
高柳慎一、牧山幸史、簑田高志 [訳]
Tokyo.R [協力]
57

More Related Content

What's hot

【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列Kenjiro Sugimoto
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方BrainPad Inc.
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれHiroshi Shimizu
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Shintaro Fukushima
 
Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Takashi J OZAKI
 
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)Koichi Hamada
 
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料Ken'ichi Matsui
 
階層的クラスタリング入門の入門
階層的クラスタリング入門の入門階層的クラスタリング入門の入門
階層的クラスタリング入門の入門Mas Kot
 
漸近理論をスライド1枚で(フォローアッププログラムクラス講義07132016)
漸近理論をスライド1枚で(フォローアッププログラムクラス講義07132016)漸近理論をスライド1枚で(フォローアッププログラムクラス講義07132016)
漸近理論をスライド1枚で(フォローアッププログラムクラス講義07132016)Hideo Hirose
 
中断時系列分析の書き方
中断時系列分析の書き方中断時系列分析の書き方
中断時系列分析の書き方Shuhei Ichikawa
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力imuyaoti
 
単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習Naoaki Okazaki
 
レコメンドエンジン作成コンテストの勝ち方
レコメンドエンジン作成コンテストの勝ち方レコメンドエンジン作成コンテストの勝ち方
レコメンドエンジン作成コンテストの勝ち方Shun Nukui
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Kohta Ishikawa
 
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催Preferred Networks
 

What's hot (20)

【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
 
Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~
 
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
 
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
 
階層的クラスタリング入門の入門
階層的クラスタリング入門の入門階層的クラスタリング入門の入門
階層的クラスタリング入門の入門
 
漸近理論をスライド1枚で(フォローアッププログラムクラス講義07132016)
漸近理論をスライド1枚で(フォローアッププログラムクラス講義07132016)漸近理論をスライド1枚で(フォローアッププログラムクラス講義07132016)
漸近理論をスライド1枚で(フォローアッププログラムクラス講義07132016)
 
中断時系列分析の書き方
中断時系列分析の書き方中断時系列分析の書き方
中断時系列分析の書き方
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
 
単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習
 
レコメンドエンジン作成コンテストの勝ち方
レコメンドエンジン作成コンテストの勝ち方レコメンドエンジン作成コンテストの勝ち方
レコメンドエンジン作成コンテストの勝ち方
 
MICの解説
MICの解説MICの解説
MICの解説
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
 
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
 
Rcppのすすめ
RcppのすすめRcppのすすめ
Rcppのすすめ
 
π計算
π計算π計算
π計算
 

Viewers also liked

Working with Word for Qualitative Data Analysis
Working with Word for Qualitative Data AnalysisWorking with Word for Qualitative Data Analysis
Working with Word for Qualitative Data AnalysisJenna Condie
 
Rデバッグあれこれ
RデバッグあれこれRデバッグあれこれ
RデバッグあれこれTakeshi Arabiki
 
Rをはじめからていねいに
RをはじめからていねいにRをはじめからていねいに
RをはじめからていねいにTsukasa Fukunaga
 
全てをRでやらないと言う事
全てをRでやらないと言う事全てをRでやらないと言う事
全てをRでやらないと言う事Tsukasa Fukunaga
 
Rによるテキストマイニングの一例
Rによるテキストマイニングの一例Rによるテキストマイニングの一例
Rによるテキストマイニングの一例LINE Corp.
 
TwitterのデータをRであれこれ
TwitterのデータをRであれこれTwitterのデータをRであれこれ
TwitterのデータをRであれこれTakeshi Arabiki
 
twitteRで快適Rライフ!
twitteRで快適Rライフ!twitteRで快適Rライフ!
twitteRで快適Rライフ!Takeshi Arabiki
 
RではじめるTwitter解析
RではじめるTwitter解析RではじめるTwitter解析
RではじめるTwitter解析Takeshi Arabiki
 

Viewers also liked (8)

Working with Word for Qualitative Data Analysis
Working with Word for Qualitative Data AnalysisWorking with Word for Qualitative Data Analysis
Working with Word for Qualitative Data Analysis
 
Rデバッグあれこれ
RデバッグあれこれRデバッグあれこれ
Rデバッグあれこれ
 
Rをはじめからていねいに
RをはじめからていねいにRをはじめからていねいに
Rをはじめからていねいに
 
全てをRでやらないと言う事
全てをRでやらないと言う事全てをRでやらないと言う事
全てをRでやらないと言う事
 
Rによるテキストマイニングの一例
Rによるテキストマイニングの一例Rによるテキストマイニングの一例
Rによるテキストマイニングの一例
 
TwitterのデータをRであれこれ
TwitterのデータをRであれこれTwitterのデータをRであれこれ
TwitterのデータをRであれこれ
 
twitteRで快適Rライフ!
twitteRで快適Rライフ!twitteRで快適Rライフ!
twitteRで快適Rライフ!
 
RではじめるTwitter解析
RではじめるTwitter解析RではじめるTwitter解析
RではじめるTwitter解析
 

Similar to さくっとはじめるテキストマイニング(R言語)  スタートアップ編

DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25Nobuaki Oshiro
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25Nobuaki Oshiro
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Shintaro Fukushima
 
TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#ta2c
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展Recruit Technologies
 
トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方Takahiro Inoue
 
統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト
統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト
統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティストSatoru Yamamoto
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介Recruit Technologies
 
Treasure data demo.0517
Treasure data demo.0517Treasure data demo.0517
Treasure data demo.0517BigData Sios
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介Recruit Technologies
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムRecruit Technologies
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料Recruit Technologies
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2OWL.learn
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
 
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki OhasiInsight Technology, Inc.
 

Similar to さくっとはじめるテキストマイニング(R言語)  スタートアップ編 (20)

DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
Datomic&datalog紹介
Datomic&datalog紹介Datomic&datalog紹介
Datomic&datalog紹介
 
HiroshimaR4_LT_sakaue
HiroshimaR4_LT_sakaueHiroshimaR4_LT_sakaue
HiroshimaR4_LT_sakaue
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 
トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方
 
統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト
統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト
統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト
 
Apache spark 2.3 and beyond
Apache spark 2.3 and beyondApache spark 2.3 and beyond
Apache spark 2.3 and beyond
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
 
Treasure data demo.0517
Treasure data demo.0517Treasure data demo.0517
Treasure data demo.0517
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
 

さくっとはじめるテキストマイニング(R言語)  スタートアップ編

  • 2. Copyright © Skywill inc. All Rights Reserved. 本スライドについて R言語の初級者 (ちょっとだけなら、R言語を書ける人) 対象者 用途 「さくっとテキストマイニングを始める」ための、お助け資料 テキストマイニング未経験者 (興味があるのでやってみたい人) 2
  • 3. Copyright © Skywill inc. All Rights Reserved. 本スライドについて 1)テキストマイニングの技術紹介 内容 3)プログラムを紹介 2)テキストマイニングの流れ 3
  • 4. Copyright © Skywill inc. All Rights Reserved. 本スライドについて 作成者 嶋田 裕 R言語経験: 4ヶ月 職業: エンジニア 興味: ビッグデータ、統計解析、Webクローリング 趣味: 家庭菜園、フットサル かいわれ大根 R言語経験: 4ヶ月 職業: エンジニア 興味: ビックデータ、統計解析 趣味: 読書 4
  • 5. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 1)テキストマイニングの技術紹介 内容 3)プログラムを紹介 2)テキストマイニングの流れ 5
  • 6. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 6 テキストマイニング 形態素解析 ワードクラウド Nグラム解析 ネットワーク図 データクレンジング ■紹介する技術の一覧 テキストデータをマイニングする技術 文章を形態素に分解する技術 ゴミ情報を取り除く処理 文章中で連続する形態素を抽出する技術 関連性のある2つの形態素を表す統計手法 形態素の出現頻度を直感的に表す統計手法
  • 7. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 データの中から知識(意味のある情報)を得る事をデータマイニングという。 テキストマイニングは、対象データを文字列としたデータマイニングのこと。 テキストマイニング ホームページ 小説 アンケート ツイッター テキスト マイニング 登場人物の交友関係 つぶやきランキング 分類分け情報 ホームページ の頻出ワード 7 入力情報 出力情報
  • 8. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 形態素解析 文章を言葉の意味の最小構成要素(形態素)に分割し、 それぞれの品詞、活用形などを判別する技術。 この竹藪に竹立て掛けたのは竹立て掛けたかったから竹立て掛けた。 文章の先頭から辞書の見出しを当てていき、 該当する単語を選択 この 竹 に藪 竹 立て掛けた の は 名詞 名詞 動詞助詞 名詞名詞 助詞連体詞 ・・・ 8
  • 9. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 データクレンジング データから不要な情報(ゴミ情報、ノイズ)を取り除くことを、 「データクレンジング(ノイズ除去)」 という。 。 たい は から た 立て掛ける に 竹 藪 の この 立て掛ける 竹 藪 9 例えば、 「名詞」「動詞」以外は、単語として意味をなさないので、ゴミ情報として取り除くなど。
  • 10. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 ワードクラウド 文章の中で出現頻度が高い単語を複数選び出し、その頻度に応じた大き さで図示する手法。 「ビックデータ」「クラウド」「教育」の 出現頻度が高いという 文章の特徴がパッと見でわかる。 10
  • 11. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 この 竹 に藪 竹 立て掛ける 11 Nグラム解析 連続するN個の単語(形態素)の出現頻度を求める手法。 例えば、N=2の場合、以下のようなデータ(バイグラムデータという)が得られる 番号 形態素1 形態素2 出現頻度 1 この 竹 1 2 竹 藪 1 3 藪 に 1 4 に 竹 1 5 竹 立て掛ける 1 連続 連続 連続 連続 連続
  • 12. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 この 竹 に藪 竹 立て掛ける 12 この場合、こんなバイグラムデータが得られる 番号 形態素1 形態素2 出現頻度 1 竹 藪 1 2 藪 竹 1 竹 藪 竹 名詞 名詞 動詞助詞 名詞連体詞 名詞だけに注目して、バイグラムデータを取得することもできる。 名詞の連続性だけに注目 連続 連続
  • 13. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 13 番号 形態素1 形態素2 出現頻度 1 竹 藪 1 2 藪 竹 1 形態素1である「竹」と形態素2である「藪」は、共起関係にあるという。 番号 形態素1 形態素2 出現頻度 1 竹 藪 7 2 藪 竹 1 もし、仮に、この共起関係の出現頻度が高い場合、 「竹」と「藪」は、関係性の高い単語であるとみなせる。
  • 14. Copyright © Skywill inc. All Rights Reserved. 1)テキストマイニングの技術紹介 ネットワーク図 関係性のある単語と単語を矢印で結び、それらの関係性を図示する 手法。 A B A B 「A」は、「B」に対して関係あり 「A」「B」は、お互いに関係あり 14
  • 15. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ 1)テキストマイニングの紹介 内容 3)プログラムを紹介 2)テキストマイニングの流れ 15
  • 16. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ 「テキストマイニング」の流れ 1)文章を分解してデータを得る 3)データを整える 2)データからゴミを取り除く 4)データをマイニングする 16
  • 17. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ この 竹 に 形態素に分解 藪 竹 立て掛ける の は ・・・ 名詞 名詞 動詞助詞 名詞名詞 助詞連体詞 1)文章を分解してデータを得る この竹藪に竹立て掛けたのは竹立て掛けたかったから竹立て掛けた。 17 形態素解析を使用して、文章を形態素に分解する。
  • 18. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ 番号 形態素 品詞 区分 出現頻度 1 。 記号 句点 1 2 に 助詞 格助詞 1 3 は 助詞 係助詞 1 4 から 助詞 接続助詞 1 5 た 助動詞 * 3 6 たい 助動詞 * 1 7 立て掛ける 動詞 自立 3 8 竹 名詞 一般 4 9 藪 名詞 固有名詞 1 10 の 名詞 非自立 1 11 この 連体詞 * 1 形態素解析で得られるデータは、こんな感じ 18 1)文章を分解してデータを得る
  • 19. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ 2)データからゴミを取り除く この 竹 に藪 竹 立て掛ける の は 名詞 名詞 動詞助詞 名詞名詞 助詞連体詞 ・・・ 竹 藪 名詞 名詞 竹 立て掛ける 動詞名詞 名詞(非自立を除く)、動詞以外を、 ゴミ情報として取り除く。 非自立 19 取得したデータから不要な情報を取り除く。
  • 20. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ 番号 形態素 品詞 区分 出現頻度 1 。 記号 句点 1 2 に 助詞 格助詞 1 3 は 助詞 係助詞 1 4 から 助詞 接続助詞 1 5 た 助動詞 * 3 6 たい 助動詞 * 1 7 立て掛ける 動詞 自立 3 8 竹 名詞 一般 4 9 藪 名詞 固有名詞 1 10 の 名詞 非自立 1 11 この 連体詞 * 1 ゴミを取り除いた後のデータは、こんな感じ 20 2)データからゴミを取り除く。
  • 21. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ 3)データを整える 竹 藪 3回立て掛ける 出現頻度で並べ替え 4回 1回 竹 藪 立て掛ける 4回 3回 1回 次の工程で実施するデータマイニングをしやすくするための処理です。 データを並べ替えたり、データを分類分けしたり、特定データ抽出をします。 21
  • 22. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ 番号 形態素 品詞 区分 出現頻度 8 竹 名詞 一般 4 7 立て掛ける 動詞 自立 3 9 藪 名詞 固有名詞 1 1 。 記号 句点 1 2 に 助詞 格助詞 1 3 は 助詞 係助詞 1 4 から 助詞 接続助詞 1 5 た 助動詞 * 3 6 たい 助動詞 * 1 10 の 名詞 非自立 1 11 この 連体詞 * 1 有効データを出現頻度で並べ変えた後は、こんな感じ 22 3)データを整える
  • 23. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ 4)データをマイニングする マイニング 竹 藪 立て掛ける 4回 3回 1回 0 1 2 3 4 23 データを統計グラフ化する。 竹 立て掛ける 藪 竹 立て掛 ける 藪
  • 24. Copyright © Skywill inc. All Rights Reserved. 2)テキストマイニングの流れ R言語には、データを統計グラフ化するためのライブラリが豊富にある。 プログラマは、このライブラリを使うだけ(楽ちん)。 今回使用するライブラリは、後ほど紹介。 24 4)データをマイニングする
  • 25. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 1)テキストマイニングの紹介 内容 3)プログラムを紹介 2)テキストマイニングの流れ 25
  • 26. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 まず、準備として、紹介するプログラムの中で使用する ライブラリパッケージをインストールします。 【注意】 本スライドの対象者は、R言語の初級者なので、すでにプログラミング環境がある事を 前提として話を進めます。 RMecab wordcloud igraph 形態素解析の機能を提供 ワードクラウドの機能を提供 共起ネットワークの機能を提供 26 > install.packages("RMeCab", repos = "http://rmecab.jp/R") > install.packages("wordcloud") > install.packages(“igraph") インストールコマンド あーるめかぶ あいぐらふ
  • 27. Copyright © Skywill inc. All Rights Reserved. ① ワードクラウド 3)プログラムを紹介 紹介するプログラムは、以下の2つ。 ② 共起ネットワーク 登場ワードの出現頻度を解析してワードクラウド表示する。 登場ワードの関係性をネットワーク表示する。 27
  • 28. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 テキスト化した自社のホームページ情報をマイニングして、 登場頻度の高いワードをワードクラウドで直感的に表現する。 SKYWILLってこんな会社 28 ① ワードクラウド
  • 29. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 「ワードクラウド」の流れ 1)文章を分解してデータを得る 3)データを整える (頻度の高いワードを抽出、並び変え) 2)データからゴミを取り除く(名詞以外の情報を取り除く) 4)データをマイニングする (ワードクラウドで表示する) 29
  • 30. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 # ライブラリパッケージ読み込み library(RMeCab) library(wordcloud) # 1)文章を分解してデータを得る word <- RMeCabFreq("./SkyWill.txt") # 2)データからゴミを取り除く word <- subset(word, Info1 == "名詞") type <- c("数","非自立","接尾") word <- subset(word, !Info2 %in% type) # 3)データを整える word <- word[order(word$Freq, decreasing=T), ] word <- head(word, n=30) # 4)データをマイニングする(ワードクラウド表示) patern <- brewer.pal(8, "Dark2") wordcloud(word$Term, word$Freq, min.freq = 1, colors=patern) WordCloud.R 30
  • 31. Copyright © Skywill inc. All Rights Reserved. # 1)文字列を分解してデータを得る word <- RMeCabFreq("./SkyWill.txt") 3)プログラムを紹介 【①ワードクラウド】 RMeCabFreq() WordCloud.R テキストを形態素に分解し、形態素ごとの出現頻度を取得する関数。 番号 形態素 品詞 区分 出現頻度 以下のフォーマットのデータ(データフレーム型)が得られる RMecabライブラリが提供する関数。 31 1)文章を分解してデータを得る 対象テキスト
  • 32. 1)文章を分解してデータを得る Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 得られるデータは、こんな感じ 番号 形態素 品詞 区分 出現頻度 1 R言語 名詞 固有名詞 5 2 に 助詞 格助詞 26 3 クラウド 名詞 固有名詞 13 4 たい 助動詞 * 9 5 ビッグデータ 名詞 固有名詞 17 6 教育 名詞 一般 8 7 の 名詞 非自立 23 8 さん 名詞 数 10 9 エンジニア 名詞 一般 6 10 貢献する 動詞 自立 2 : : : : : 32
  • 33. # 2)データからゴミを取り除く word <- subset(word, Info1 == "名詞") type <- c("数","非自立","接尾") word <- subset(word, !Info2 %in% type) Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 WordCloud.R 得られたデータから名詞以外をゴミ情報として取り除く。 33 2)データからゴミを取り除く
  • 34. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 番号 形態素 品詞 区分 出現頻度 1 R言語 名詞 固有名詞 5 2 に 助詞 格助詞 26 3 クラウド 名詞 固有名詞 13 4 たい 助動詞 * 9 5 ビッグデータ 名詞 固有名詞 17 6 教育 名詞 一般 8 7 の 名詞 非自立 23 8 さん 名詞 数 10 9 エンジニア 名詞 一般 6 10 貢献する 動詞 自立 2 : : : : : 34 2)データからゴミを取り除く ゴミを取り除いた後のデータは、こんな感じ
  • 35. # 2)データからゴミを取り除く word <- subset(word, Info1 == "名詞") type <- c("数","非自立","接尾") word <- subset(word, !Info2 %in% type) Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 WordCloud.R さらに、名詞のうち、”数“、“非自立”、“接尾”に該当するデータを ゴミ情報として取り除く。 35 2)データからゴミを取り除く
  • 36. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 番号 形態素 品詞 区分 出現頻度 1 R言語 名詞 固有名詞 5 2 に 助詞 格助詞 26 3 クラウド 名詞 固有名詞 13 4 たい 助動詞 * 9 5 ビッグデータ 名詞 固有名詞 17 6 教育 名詞 一般 8 7 の 名詞 非自立 23 8 さん 名詞 数 10 9 エンジニア 名詞 一般 6 10 貢献する 動詞 自立 2 : : : : : 36 2)データからゴミを取り除く ゴミを取り除いた後のデータは、こんな感じ
  • 37. # 3)データを整える word <- word[order(word$Freq, decreasing=T), ] word <- head(word, n=30) Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 WordCloud.R 登場頻度の高い順で並べ替える。 登場頻度の上位30個のデータを抽出する。 37 3)データを整える
  • 38. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 番号 形態素 品詞 区分 出現頻度 5 ビッグデータ 名詞 固有名詞 17 3 クラウド 名詞 固有名詞 13 6 教育 名詞 一般 8 9 エンジニア 名詞 一般 6 1 R言語 名詞 固有名詞 5 : : : : : 2 に 助詞 格助詞 26 4 たい 助動詞 * 9 7 の 名詞 非自立 23 8 さん 名詞 数 10 10 貢献する 動詞 自立 2 38 3)データを整える 整えた後のデータは、こんな感じ
  • 39. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 WordCloud.R # 4)データをマイニングする(ワードクラウド) patern <- brewer.pal(8, "Dark2") wordcloud(word$Term, word$Freq, min.freq = 1, colors=patern) wordcloud() wordcloudライブラリが提供する関数。 39 4)データをマイニングする 形態素データを使って、統計解析(ワードクラウド表示)する。 形態素名 出現頻度 対象を出現頻度 1回以上の形態素とする 色の表示パターン
  • 40. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【①ワードクラウド】 表示されるデータは、こんな感じ 40 4)データをマイニングする
  • 41. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 アニメのセリフを集めたテキストをマイニングして、 登場人物の関係をネットワーク図で表現する。 41 ② 共起ネットワーク
  • 42. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 「共起ネットワーク」の流れ 1)文章を分解してデータを得る 3)データを整える (共起性の強いデータを抽出する) 2)データからゴミを取り除く(登場人物以外を取り除く) 4)データをマイニングする (ネットワーク図で表示する) 42
  • 43. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 # ライブラリパッケージ読み込み library(RMeCab) library(igraph) # 1)文章を分解してデータを得る ngram <- NgramDF("./Totoro.txt", type=1, pos=c("名詞"), N=2) # 2)データからゴミを取り除く char= c("トトロ", "サツキ", "メイ", "お父さん", "お母さん", "カンタ", "ばあちゃん") ngram <- subset(ngram, (Ngram1 %in% char)&(Ngram2 %in% char)) # 3)データを整える ngram <- subset(ngram, Freq>=4) # 4)データをマイニングする(ネットワーク図表示) graph <- graph.data.frame(ngram) plot(graph, vertex.label=V(graph)$name, vertex.size=15) Network.R 43
  • 44. Copyright © Skywill inc. All Rights Reserved. # 1)文字列を分解してデータを得る ngram <- NgramDF("./Totoro.txt", type=1, pos=c("名詞"), N=2) 3)プログラムを紹介 【②共起ネットワーク】 NgramDF() Network.R 文章を形態素に分解し、連続する2つの形態素の出現頻度を取得 (Nグラム解析)する。 RMecabライブラリが提供する関数。 44 1)文章を分解してデータを得る 対象テキスト 分割単位を 形態素に指定 名詞の連続性 のみ注目 2つの形態素の共起性 を解析(バイグラム)
  • 45. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 バス停で、サツキはトトロに出会った。 バス停 で サツキ は トトロ 出会ったに バス停 サツキ トトロ 形態素に分解 名詞の連続性だけに注目 45 1)文章を分解してデータを得る 番号 形態素1 形態素2 出現頻度 1 バス停 サツキ 1 2 サツキ トトロ 1 連続する2つの形態素の出現頻度を取得 バイグラムデータ
  • 46. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 番号 形態素1 形態素2 出現頻度 1 サツキ トトロ 9 2 トトロ サツキ 3 3 バス停 サツキ 6 4 トトロ メイ 4 5 メイ 探索 4 6 探索 お願い 1 7 カンタ サツキ 5 8 カンタ メイ 2 9 ばあちゃん カンタ 4 10 メイ トトロ 12 : : : : 46 1)文章を分解してデータを得る 例えば、得られるデータは、こんな感じ
  • 47. # 2)データからゴミを取り除く char= c("トトロ", "サツキ", "メイ", "お父さん", "お母さん", "カンタ", "ばあちゃん") ngram <- subset(ngram, (Ngram1 %in% char)&(Ngram2 %in% char)) Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 Network.R 得られたデータから登場人物以外をゴミ情報として取り除く。 形態素1、形態素2共に、登場人物に該当するデータだけを 有効データとみなす。 47 2)データからゴミ情報を取り除く
  • 48. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 番号 形態素1 形態素2 出現頻度 1 サツキ トトロ 9 2 トトロ サツキ 3 3 バス停 サツキ 6 4 トトロ メイ 4 5 メイ 探索 4 6 探索 お願い 1 7 カンタ サツキ 5 8 カンタ メイ 2 9 ばあちゃん カンタ 4 10 メイ トトロ 12 : : : : 48 2)データからゴミ情報を取り除く ゴミ情報を取り除いた後のデータは、こんな感じ
  • 49. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 登場人物で絞り込みしないで、ネットワーク図を表示すると 情報が多すぎて、ぐちゃぐちゃに Σ( ̄ロ ̄lll) orz 49 2)データからゴミ情報を取り除く
  • 50. # 3)データを整える ngram <- subset(ngram, Freq>=4) Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 Network.R 出現頻度が4回以上のデータを抽出する。 共起関係にあるデータで、かつ、出現頻度が高い場合、 2つのワードには、関係性があると言える。 50 3)データを整える
  • 51. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 番号 形態素1 形態素2 出現頻度 1 サツキ トトロ 9 2 トトロ サツキ 3 3 バス停 サツキ 6 4 トトロ メイ 4 5 メイ 探索 4 6 探索 お願い 1 7 カンタ サツキ 5 8 カンタ メイ 2 9 ばあちゃん カンタ 4 10 メイ トトロ 12 : : : : 51 3)データを整える 整えた後のデータは、こんな感じ
  • 52. # 4)データをマイニングする(ネットワーク図表示) graph <- graph.data.frame(ngram) plot(graph, vertex.label=V(graph)$name, vertex.size=15) Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 Network.R graph.data.frame() バイグラムデータをグラフ表示用データに変換する。 52 4)データをマイニングする igraphライブラリが提供する関数。 バイグラムデータ
  • 53. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 番号 Nグラム1 Nグラム2 出現頻度 1 サツキ トトロ 9 4 トトロ メイ 4 7 カンタ サツキ 5 : : : : 番号 グラフ情報 1 サツキ -> トトロ 2 トトロ -> メイ 3 カンタ -> サツキ : : 変換 53 4)データをマイニングする 変換後のデータは、こんな感じになる
  • 54. # 4)データをマイニングする(ネットワーク図表示) graph <- graph.data.frame(ngram) plot(graph, vertex.label=V(graph)$name, vertex.size=15) Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 Network.R plot() R言語の組み込み関数。 グラフ表示用データを使って、統計解析(ネットワーク図表示)する。 54 4)データをマイニングする グラフデータのノード名 (トトロ、サツキなど) ネットワーク図の ノード(丸)のサイズ
  • 55. Copyright © Skywill inc. All Rights Reserved. 3)プログラムを紹介 【②共起ネットワーク】 55 4)データをマイニングする 表示されるデータは、こんな感じ
  • 56. Copyright © Skywill inc. All Rights Reserved. まとめ (おさえるべきポイント) 形態素解析を理解すること テキストマイニング処理の流れを理解すること 文章を最小構成要素(形態素)に分解する技術 (8ページ参照)。 R言語では、RMecabライブラリで実現できる。 56 1)文章を分解してデータを得る 3)データを整える 2)データからゴミを取り除く 4)データをマイニングする 流れは、以下の4段階(16~24ページ参照)。 形態素解析、Nグラム解析 データクレンジング(ノイズ除去) 並べ替え、抽出、分類分けなど ワードクラウド、ネットワーク図など
  • 57. Copyright © Skywill inc. All Rights Reserved. 参考文献 Rで学ぶ日本語テキストマイニング 石田基広・小林雄一郎 著 みんなのR データ分析と統計解析の新しい教科書 Jared P. Lander [著] 高柳慎一、牧山幸史、簑田高志 [訳] Tokyo.R [協力] 57