による英語コーパスの処理入門
―接続詞 and/but の使用実態調査を例に―
2012-04-07Computing Language and Culture with R 2012@Osaka Univ.
阪上 辰也
1Saturday, April 7, 12
0. 自己紹介
2Saturday, April 7, 12
0. 自己紹介
•阪上 辰也 (SAKAUE, Tatsuya)
• 所属: ... 特任講師• 専門: 第二言語習得
• HiRoshima.R 主催/Nagoya.R 初代主催• ID: sakaue にて
• 詳しくは...
3Saturday, April 7, 12
4Saturday, April 7, 12
本日の目標
言語データ分析の基本を“知る”
5Saturday, April 7, 12
Agenda
1. R の基本2. 言語データ処理入門3. R による and/but の検索4. R のススメ
6Saturday, April 7, 12
Agenda
1. R の基本2. 言語データ処理入門3. R による and/but の検索4. R のススメ
7Saturday, April 7, 12
1. R の基本
• R は「関数」と「変数」が命
• 関数を使ってデータを処理• 関数を使ってサクっと検定・作図• 変数を使って値をまとめておく
8Saturday, April 7, 12
1. R の基本
> numbers <- c(1, 2, 3, 4, 5) # c関数で数値をまとめて変数へ代入
> sum(numbers) # sum関数で変数を処理し合計値を算出
[1] 15
9Saturday, April 7, 12
Agenda
1. R の基本2. 言語データ処理入門3. R による and/but の検索4. R のススメ
10Saturday, April 7, 12
Agenda
1. R の基本2. 言語データ処理入門3. R による and/but の検索4. R のススメ
11Saturday, April 7, 12
2. 言語データ処理入門1) データを読み込む2) データを分解する3) データを揃える4) 数値を求める5) データを保存する
12Saturday, April 7, 12
1) データを読み込む
> nns <- scan("nns_raw.txt", what="character")
Read 62959 items
13Saturday, April 7, 12
2) データを分解する> nns_list <- strsplit(nns, " ")
# スペースでデータをリスト化 # 干し柿状態(?)
> nns_unlist <- unlist(ns_list)
# リストされたデータをバラバラに分解
14Saturday, April 7, 12
3) データを揃える
> sort_nns <- sort(nns_unlist)
# データの並び替え
> uniq_nns <- unique(sort_nns)
# 並び替えたデータをまとめる
15Saturday, April 7, 12
4) 数値を求める> length(nns_unlist)[1] 70220 # Token
> nns_all <- table(nns_unlist)
# 単語一覧表の作成
> nns_type <- length(uniq_nns)> nns_type[1] 7579 # Type
16Saturday, April 7, 12
5) データを保存する
> write.table(nns_all, file="freq.txt" sep="¥t")
# freq.txt という名で列をタブ区切りにして保存
17Saturday, April 7, 12
Agenda
1. R の基本2. 言語データ処理入門3. R による and/but の検索4. R のススメ
18Saturday, April 7, 12
Agenda
1. R の基本2. 言語データ処理入門3. R による and/but の検索4. R のススメ
19Saturday, April 7, 12
3. R による and/but の検索
•grep 関数・length 関数• grep() : 文字列マッチング• length(): 要素数のカウント
20Saturday, April 7, 12
3. R による and/but の検索> grep("^And,?", nns_unlist, fixed = FALSE, value=TRUE)> grep("^But,?", nns_unlist, fixed = FALSE, value=TRUE)
# ヒットした要素を表示
# 正規表現の ^ をつけておき,3文字を含む文字列(underst”and”)を除外
# fixed=FALSE で拡張正規表現を利用,value=TRUE で要素表示
> length(grep("^And,?", nns_unlist, fixed = FALSE, value=TRUE))> length(grep("^But,?", nns_unlist, fixed = FALSE, value=TRUE))
# ヒット数だけを表示
21Saturday, April 7, 12
3. R による and/but の検索
> length(grep("^And,?", nns_unlist, fixed = FALSE, value=TRUE))
[1] 175
> length(grep("^But,?", nns_unlist, fixed = FALSE, value=TRUE))
[1] 178
> length(grep("^and,?", nns_unlist, fixed = FALSE, value=TRUE))
[1] 1479
> length(grep("^but,?", nns_unlist, fixed = FALSE, value=TRUE))
[1] 260
22Saturday, April 7, 12
3. R による and/but の検索> barplot(freq, names=c("And", "and", "But", "but"), horiz=T, las=1)
23Saturday, April 7, 12
3. R による and/but の検索
• R で基本的な検索・分析ならば...
1) データを strsplit() + unlist() して2) grep() と length() でカウント3) barplot() などで視覚化4) chisq.test() などで検定
24Saturday, April 7, 12
Agenda
1. R の基本2. 言語データ処理入門3. R による and/but の検索4. R のススメ
25Saturday, April 7, 12
Agenda
1. R の基本2. 言語データ処理入門3. R による and/but の検索4. R のススメ
26Saturday, April 7, 12
4. R のススメ• すべての処理・分析が R のみで完結
• <-> Concordancer + Editor + Excel (+ UNIX) + R
• プログラミングの基礎養成に有効• --> Python, Perl, Ruby ...
• 作図が美しい(+Macならフォントも)• Excel の作図はオモチャ
27Saturday, April 7, 12
28Saturday, April 7, 12
One more thing...
29Saturday, April 7, 12
Package による付加機能
30Saturday, April 7, 12
Packageとは?
• ある処理・機能に特化したプログラム• base(基本パッケージ)だけでも 1,000 以上• 特殊な処理を行う際は,別の package を追加
• 言語処理に特化したものもある(ex. RMeCab)
31Saturday, April 7, 12
i) tm: Text Mining Package• http://tm.r-forge.r-project.org/
• http://cran.r-project.org/web/packages/tm/tm.pdf
ii) corpora• http://cogsci.uni-osnabrueck.de/~severt/SIGIL/sigil_R/
• http://cran.r-project.org/web/packages/corpora/corpora.pdf
iii) LanguageR• http://www.ualberta.ca/~baayen/software.html
• http://cran.r-project.org/web/packages/languageR/languageR.pdf
言語処理に特化した packages
32Saturday, April 7, 12