hiroshima.r #1 1-3 lt

37
を言語・言語教育研究で どう活用できるか @sakaue 2011-06-17 HiRoshima.R #1@ 1 Saturday, June 18, 2011

Upload: sakaue-tatsuya

Post on 13-Jan-2015

1.137 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: HiRoshima.R #1 1-3 LT

を言語・言語教育研究でどう活用できるか

@sakaue

2011-06-17 HiRoshima.R #1@

1Saturday, June 18, 2011

Page 2: HiRoshima.R #1 1-3 LT

Agenda

1. R で検定 ―カイ二乗検定―

2. R で英語データを処理

3. R で日本語データを解析

2Saturday, June 18, 2011

Page 3: HiRoshima.R #1 1-3 LT

Agenda

1. R で検定 ―カイ二乗検定―

2. R で英語データを処理

3. R で日本語データを解析

3Saturday, June 18, 2011

Page 4: HiRoshima.R #1 1-3 LT

言語現象を数値データ+検定から捉えてみたい

を使う経緯言語研究で

4Saturday, June 18, 2011

Page 5: HiRoshima.R #1 1-3 LT

t 検定

カイ二乗検定パワーアナリシス

分散分析

共分散分析

判別分析

主成分分析

クラスカル・ウォリス検定

符号検定

マクマネー検定

因子分析

5Saturday, June 18, 2011

Page 6: HiRoshima.R #1 1-3 LT

で「カイ二乗検定」

6Saturday, June 18, 2011

Page 7: HiRoshima.R #1 1-3 LT

カイ二乗検定• 独立性の検定のために使う(連関の有無)• (例)数学が好き嫌いと統計の好き嫌いの間に有意な連関があるか

• (例)あるコーパス中の表現Aと表現Bの頻度の差

• ざっくり言えば,期待度数と観測度数のズレが偶然出ちゃったかどうかを調べる

7Saturday, June 18, 2011

Page 8: HiRoshima.R #1 1-3 LT

事例: 接続詞 “however” の生起位置の比較

文頭 文中 文末 合計頻度 109 347 8 493

[文頭] However, ....

[文中] ..., however, ....

[文末] ..., however.

8Saturday, June 18, 2011

Page 9: HiRoshima.R #1 1-3 LT

> freq <- c(109,347,8)> chisq.test(freq,correct=FALSE)

Chi-squared test for given probabilities

data: freq X-squared = 391.7371, df = 2, p-value < 2.2e-16

# 手作業なら,カイ二乗分布表の自由度2のところを確認する# http://homepage2.nifty.com/nandemoarchive/toukei_kiso/t_F_chi.htm

生起位置の比較のためにカイ二乗検定を実行

9Saturday, June 18, 2011

Page 10: HiRoshima.R #1 1-3 LT

言語現象を数値データ+検定から捉えてみよう!

を使って

10Saturday, June 18, 2011

Page 11: HiRoshima.R #1 1-3 LT

Agenda

1. R で検定 ―カイ二乗検定―

2. R で英語データを処理

3. R で日本語データを解析

11Saturday, June 18, 2011

Page 12: HiRoshima.R #1 1-3 LT

Agenda

1. R で検定 ―カイ二乗検定―

2. R で英語データを処理

3. R で日本語データを解析

12Saturday, June 18, 2011

Page 13: HiRoshima.R #1 1-3 LT

大規模コーパスを効率よく処理せねば!

を使う経緯言語データ処理で

13Saturday, June 18, 2011

Page 14: HiRoshima.R #1 1-3 LT

主なデータ処理手順1. データを読み込む2. データを切り出す3. データを分解する4. データを揃える5. 数値を求める6. データを書き出す

14Saturday, June 18, 2011

Page 15: HiRoshima.R #1 1-3 LT

1. データを読み込む• その1• ns <- scan("ns_raw.txt", what="character")

• その2• ns <- scan(choose.files(), what="char")

• ファイルのパスに注意(トラブル多発地域)• getwd() による作業ディレクトリの確認を!

15Saturday, June 18, 2011

Page 16: HiRoshima.R #1 1-3 LT

2. データを切り出す

•head(変数名, 要素数)

•tail(変数名, 要素数)

•先頭/末尾部分を指定した要素分の表示

16Saturday, June 18, 2011

Page 17: HiRoshima.R #1 1-3 LT

2. データを切り出す•grep (“文字列”, 変数名)

• 要素の番号のみを返す。> grep("school", ns)

•変数 ns から、要素のみ取り出し。> ns[grep("school", ns)]

17Saturday, June 18, 2011

Page 18: HiRoshima.R #1 1-3 LT

• 変数名[要素番号]

• > ns[100]

• 100 番目の要素のみ取り出し

• > ns[c(98,99,100)]

• 98, 99, 100 番目の要素のみ取り出し• c 関数に注意

2. データを切り出す

18Saturday, June 18, 2011

Page 19: HiRoshima.R #1 1-3 LT

3. データを分解する• 単語をバラバラにする•strsplit (変数名, “セパレータ”)

> strsplit (ns, " ")

•ns の要素をスペースで分割する•要素ごとに処理される•つまり、list になっている状態

19Saturday, June 18, 2011

Page 20: HiRoshima.R #1 1-3 LT

3. データを分解する•リストの要素をバラバラにする

> ns_list <- strsplit (ns, " ")

•分割した結果を ns_list という変数に代入

> unlist (ns_list)

• ns_list のリストの要素をバラバラにする。• unlist(strsplit(ns, " "))でも同じ結果。

20Saturday, June 18, 2011

Page 21: HiRoshima.R #1 1-3 LT

4. データを揃える

ばらばらにした単語をソートするsort (変数名)

> ns2 <- sort(unlist(ns_list))

21Saturday, June 18, 2011

Page 22: HiRoshima.R #1 1-3 LT

4. データを揃える

unique (変数名)

> ns3 <- unique (sort(unlist(ns_list)))#ソートした単語をタイプ(異なり語)にまとめる。

# sort(unique(unlist(ns_list)))でも結果は同じ。

22Saturday, June 18, 2011

Page 23: HiRoshima.R #1 1-3 LT

5. 数値を求めるtable (変数名)

> ns4 <- table(unlist(strsplit (ns, " ")))

#単語をバラバラにした後で table を使用。# 総語数を求めることになる

23Saturday, June 18, 2011

Page 24: HiRoshima.R #1 1-3 LT

5. 数値を求める

> ns5 <- length(unlist(strsplit (ns, " ")))

# これでも総語数を求めることになる

24Saturday, June 18, 2011

Page 25: HiRoshima.R #1 1-3 LT

5. 数値を求める

> ns6 <- length(unique(sort(unlist(strsplit (ns, " ")))))

# これで異なり語数を求めることになる# ここまで来ると間違えるので変数利用が不可欠

> ns7 <- unique(sort(unlist (ns_list)))> length(ns7)

25Saturday, June 18, 2011

Page 26: HiRoshima.R #1 1-3 LT

6. データを書き出す> write.table(ns4, file=“freq1.txt”)> write.table(ns5, file=“freq2.txt”)> write.table(ns6, file=“freq3.txt”)

# getwd() で表示されるディレクトリに保存# Excel 等で読み込んで,再処理・再加工

26Saturday, June 18, 2011

Page 27: HiRoshima.R #1 1-3 LT

言語データを効率よく処理してしまおう!

を使って

27Saturday, June 18, 2011

Page 28: HiRoshima.R #1 1-3 LT

Agenda

1. R で検定 ―カイ二乗検定―

2. R で英語データを処理

3. R で日本語データを解析

28Saturday, June 18, 2011

Page 29: HiRoshima.R #1 1-3 LT

Agenda

1. R で検定 ―カイ二乗検定―

2. R で英語データを処理

3. R で日本語データを解析

29Saturday, June 18, 2011

Page 30: HiRoshima.R #1 1-3 LT

テキストマイニングが流行り?

•テキストに含まれる特徴を見つけ出す•ユーザーの趣向・動向調査

•文章を書いた人の推定・分類

•自由記述 アンケート

•授業アンケート... orz

30Saturday, June 18, 2011

Page 31: HiRoshima.R #1 1-3 LT

日本語データの分析を助けてくれる

RMeCab を紹介

31Saturday, June 18, 2011

Page 32: HiRoshima.R #1 1-3 LT

RMeCabとは•石田 基広氏が開発したパッケージ

•R から MeCab を呼び出して日本語のテキストを解析させる

•解析結果をも R で出力してくれる素晴らしいプログラム

32Saturday, June 18, 2011

Page 33: HiRoshima.R #1 1-3 LT

デモ一覧•RMeCabText() : ファイル解析

•RMeCabFreq() : 頻度集計

•Ngram() : N-gram 解析

•collocate() : 共起関係の分析

33Saturday, June 18, 2011

Page 34: HiRoshima.R #1 1-3 LT

参考文献紹介

34Saturday, June 18, 2011

Page 35: HiRoshima.R #1 1-3 LT

参考文献紹介

1,785円 3,780円2,940円

35Saturday, June 18, 2011

Page 36: HiRoshima.R #1 1-3 LT

言語データを効率よく処理してしまおう!

を使って

36Saturday, June 18, 2011

Page 37: HiRoshima.R #1 1-3 LT

ご静聴ありがとうございました

twitter: @sakaue

e-mail: tsakaue<AT>hiroshima-u.ac.jp

37Saturday, June 18, 2011