Lecture6: Collocation, TwitteR

Collocation

RMecabに便利な関数が用意されている

ディレクトリ内のファイル名を取得

dirName="univ"
files <- list.files(dirName)
files
## [1] "hiroshima.txt" "kufs.txt"      "kyoto.txt"     "osaka1.txt"   
## [5] "osaka2.txt"    "osaka3.txt"    "tokyo.txt"     "waseda.txt"
filesDir <- unlist(lapply(dirName, paste, files, sep = "/"))

特定ファイル名のインデックスを取得

which(files=="osaka1.txt")
## [1] 4

1つのファイルを読み込む(単語単位): scan()

 what = character() or what = “char”でも同じ

filename <- filesDir[1]
txt<-scan(filename, what="")
head(txt)
## [1] "Hiroshima"  "University" "aims"       "to"         "be"        
## [6] "a"

補足:1つのファイルを読み込む(行単位)

バックスラッシュ(): Option + ¥

scan(filename, what="", sep = "\n")
## [1] "Hiroshima University aims to be a world-class hub of education and research, to foster excellent human resources to contribute to the community, and developmentally expand science."                                                                                                                                                                        
## [2] "The main campus, covering 252 hectares, is located in Higashi-Hiroshima (Saijo), in a verdant area which is famous for sake brewing. Including campuses in Hiroshima, known as the International City of Peace and Culture, the University includes 11 faculties, 12 graduate schools, a research institute, a university hospital, and 11 attached schools."
## [3] "Hiroshima University's mission of ongoing growth, as based on the five principles, is to create new forms of knowledge, nurture well-rounded human beings, continue self-development, pursue international peace, and collaborate with the local, regional, and international community."                                                                    
## [4] "I'd like to welcome your questions and comments; please feel free to send them to the President's Office. Though it might not be possible for me to provide feedback for every question, I'd certainly be happy to direct them to university operations, etc. Thank you in advance for your continued support of Hiroshima University. "

文字検索

 

grep("univ",txt, ignore.case = T)
## [1]   2  62  73  80 156 169
grep("univ",txt, ignore.case = T, value=T)
## [1] "University"   "University"   "university"   "University's"
## [5] "university"   "University."
grep("ed$",txt, ignore.case = T, value=T)
## [1] "located"      "attached"     "based"        "well-rounded"
## [5] "continued"

中心語の位置情報

 

node <- "univ"
nodeLst <- grep(node,txt, ignore.case = T, value=T)
nodeIndex <- grep(node,txt, ignore.case = T)
nodeIndex
## [1]   2  62  73  80 156 169

周辺語の抽出

 

(Left1 <- txt[nodeIndex-1])
## [1] "Hiroshima" "the"       "a"         "Hiroshima" "to"        "Hiroshima"
(Left2 <- txt[nodeIndex-2])
## [1] "Culture,"   "institute," "schools."   "them"       "of"
(Right1 <- txt[nodeIndex+1])
## [1] "aims"        "includes"    "hospital,"   "mission"     "operations,"
## [6] NA
(Right2 <- txt[nodeIndex+2])
## [1] "to"   "11"   "and"  "of"   "etc." NA

Collocation Matrix

 

collo <- cbind(Left2,Left1,nodeLst, Right1, Right2)
## Warning in cbind(Left2, Left1, nodeLst, Right1, Right2): number of rows of
## result is not a multiple of vector length (arg 1)
colnames(collo) <- c("L2","L1","node","R1","R2")
rownames(collo) <- rep(1:dim(collo)[1])
collo
##   L2           L1          node           R1            R2    
## 1 "Culture,"   "Hiroshima" "University"   "aims"        "to"  
## 2 "institute," "the"       "University"   "includes"    "11"  
## 3 "schools."   "a"         "university"   "hospital,"   "and" 
## 4 "them"       "Hiroshima" "University's" "mission"     "of"  
## 5 "of"         "to"        "university"   "operations," "etc."
## 6 "Culture,"   "Hiroshima" "University."  NA            NA

Shinyで実装

 

library(shiny)
runApp("app_collocation1")

2つのファイルを読み込む(単語単位): scan()

 what = character() or what = “char”でも同じ

filenames <- c(filesDir[1],filesDir[8])
txt<-unlist(lapply(filenames, scan, what=""))

Shinyで実装

 

runApp("app_collocation2")

日本語ファイル

 what = character() or what = “char”でも同じ

filename <- "osaka-u_ja_wakati.txt"
txt<-scan(filename, what="")
head(txt)
## [1] "この"     "たび"     "、"       "大阪大学" "第"       "18"

頻度表

source("getFreqDir.R")
filename <- "osaka-u_ja_wakati.txt"
head(getFreqMtx(filename))
##    term osaka-u_ja_wakati
## 62   の                34
## 76   を                25
## 57   に                19
## 42   て                18
## 67 ます                15
## 29   し                14

RMecabのインストール

 install.packages ("RMeCab", repos = "http://rmecab.jp/R", type = "source")

頻度表

library(RMeCab) 
freqMtx<-RMeCabFreq(filename)
## file = osaka-u_ja_wakati.txt 
## length = 256
head(freqMtx)
##       Term  Info1      Info2 Freq
## 1 よろしく   副詞       一般    1
## 2     共に   副詞       一般    1
## 3     特に   副詞       一般    1
## 4 これから   副詞 助詞類接続    1
## 5   さらに   副詞 助詞類接続    3
## 6       た 助動詞          *    7

頻度表(頻度順)

freqMtx2<-freqMtx[order(freqMtx$Freq,decreasing = TRUE),]
head(freqMtx2)
##     Term Info1    Info2 Freq
## 253   、  記号     読点   36
## 38    の  助詞   連体化   32
## 36    を  助詞   格助詞   25
## 247   。  記号     句点   19
## 21    て  助詞 接続助詞   18
## 41  する  動詞     自立   18

品詞別情報抽出

freqMtx[freqMtx$Info1 == "助詞",]
##        Term Info1    Info2 Freq
## 13       と  助詞 並立助詞    6
## 14       や  助詞 並立助詞    5
## 15       は  助詞   係助詞   12
## 16       も  助詞   係助詞    1
## 17     とも  助詞   副助詞    1
## 18       に  助詞   副詞化    3
## 19       が  助詞 接続助詞    1
## 20     つつ  助詞 接続助詞    1
## 21       て  助詞 接続助詞   18
## 22       で  助詞 接続助詞    1
## 23   ながら  助詞 接続助詞    1
## 24       ば  助詞 接続助詞    1
## 25     から  助詞   格助詞    1
## 26       が  助詞   格助詞   12
## 27       で  助詞   格助詞    2
## 28       と  助詞   格助詞    6
## 29   という  助詞   格助詞    3
## 30   として  助詞   格助詞    2
## 31       に  助詞   格助詞   16
## 32 において  助詞   格助詞    3
## 33 に対して  助詞   格助詞    1
## 34       の  助詞   格助詞    2
## 35       へ  助詞   格助詞    1
## 36       を  助詞   格助詞   25
## 37 を通じて  助詞   格助詞    1
## 38       の  助詞   連体化   32
freqMtx[grep("助詞",freqMtx$Info1),]
##        Term Info1    Info2 Freq
## 13       と  助詞 並立助詞    6
## 14       や  助詞 並立助詞    5
## 15       は  助詞   係助詞   12
## 16       も  助詞   係助詞    1
## 17     とも  助詞   副助詞    1
## 18       に  助詞   副詞化    3
## 19       が  助詞 接続助詞    1
## 20     つつ  助詞 接続助詞    1
## 21       て  助詞 接続助詞   18
## 22       で  助詞 接続助詞    1
## 23   ながら  助詞 接続助詞    1
## 24       ば  助詞 接続助詞    1
## 25     から  助詞   格助詞    1
## 26       が  助詞   格助詞   12
## 27       で  助詞   格助詞    2
## 28       と  助詞   格助詞    6
## 29   という  助詞   格助詞    3
## 30   として  助詞   格助詞    2
## 31       に  助詞   格助詞   16
## 32 において  助詞   格助詞    3
## 33 に対して  助詞   格助詞    1
## 34       の  助詞   格助詞    2
## 35       へ  助詞   格助詞    1
## 36       を  助詞   格助詞   25
## 37 を通じて  助詞   格助詞    1
## 38       の  助詞   連体化   32
freqMtx[grep("動詞|助詞",freqMtx$Info1),]
##          Term  Info1    Info2 Freq
## 6          た 助動詞        *    7
## 7          だ 助動詞        *    7
## 8        です 助動詞        *    5
## 9        ない 助動詞        *    2
## 10       なり 助動詞        *    1
## 11         ぬ 助動詞        *    3
## 12       ます 助動詞        *   17
## 13         と   助詞 並立助詞    6
## 14         や   助詞 並立助詞    5
## 15         は   助詞   係助詞   12
## 16         も   助詞   係助詞    1
## 17       とも   助詞   副助詞    1
## 18         に   助詞   副詞化    3
## 19         が   助詞 接続助詞    1
## 20       つつ   助詞 接続助詞    1
## 21         て   助詞 接続助詞   18
## 22         で   助詞 接続助詞    1
## 23     ながら   助詞 接続助詞    1
## 24         ば   助詞 接続助詞    1
## 25       から   助詞   格助詞    1
## 26         が   助詞   格助詞   12
## 27         で   助詞   格助詞    2
## 28         と   助詞   格助詞    6
## 29     という   助詞   格助詞    3
## 30     として   助詞   格助詞    2
## 31         に   助詞   格助詞   16
## 32   において   助詞   格助詞    3
## 33   に対して   助詞   格助詞    1
## 34         の   助詞   格助詞    2
## 35         へ   助詞   格助詞    1
## 36         を   助詞   格助詞   25
## 37   を通じて   助詞   格助詞    1
## 38         の   助詞   連体化   32
## 39       れる   動詞     接尾    3
## 40       ある   動詞     自立    5
## 41       する   動詞     自立   18
## 42     たゆむ   動詞     自立    1
## 43     できる   動詞     自立    1
## 44 とらわれる   動詞     自立    1
## 45       並ぶ   動詞     自立    1
## 46     優れる   動詞     自立    1
## 47   取り巻く   動詞     自立    1
## 48   取り組む   動詞     自立    2
## 49     受ける   動詞     自立    1
## 50 受け入れる   動詞     自立    1
## 51     変える   動詞     自立    1
## 52     変わる   動詞     自立    1
## 53     尽くす   動詞     自立    1
## 54     応える   動詞     自立    2
## 55       思う   動詞     自立    1
## 56 押し寄せる   動詞     自立    1
## 57       持つ   動詞     自立    1
## 58       有す   動詞     自立    1
## 59     有する   動詞     自立    1
## 60     活かす   動詞     自立    1
## 61 申し上げる   動詞     自立    1
## 62     目指す   動詞     自立    1
## 63     究める   動詞     自立    1
## 64       築く   動詞     自立    1
## 65       経る   動詞     自立    1
## 66     続ける   動詞     自立    1
## 67     繋げる   動詞     自立    1
## 68   織りなす   動詞     自立    1
## 69     見出す   動詞     自立    1
## 70       謳う   動詞     自立    1
## 71       貴ぶ   動詞     自立    1
## 72       賜る   動詞     自立    1
## 73   重んじる   動詞     自立    1
## 74       いく   動詞   非自立    7
## 75     いたす   動詞   非自立    1
## 76       いる   動詞   非自立    5
## 77       おる   動詞   非自立    1
## 78       くる   動詞   非自立    1
## 79       なる   動詞   非自立    2
## 80       合う   動詞   非自立    1
## 81     続ける   動詞   非自立    1

完全一致検索

freqMtx[freqMtx$Term == "大学",]
##     Term Info1 Info2 Freq
## 151 大学  名詞  一般    4
freqMtx[charmatch("大学",freqMtx$Term),]
##     Term Info1 Info2 Freq
## 151 大学  名詞  一般    4

部分一致検索

freqMtx[grep("大学",freqMtx$Term),]
##               Term Info1    Info2 Freq
## 151           大学  名詞     一般    4
## 180       総合大学  名詞     一般    1
## 194 大阪外国語大学  名詞 固有名詞    1
## 195       大阪大学  名詞 固有名詞    7

Twitterアプリケーションの作成&登録

OAuth 認証用

https://apps.twitter.com/

ROAuth, twitteRのインストール

  install.packages('twitteR')
 install.packages('ROAuth')

ROAuth, twitteRのインストールの読み込み

  library(twitteR)
  library(ROAuth)

twitteRからのOauth認証

cacert.pemをダウンロード

  download.file(url="http://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem")

認証情報(Twitterアプリケーション)

consr_key="***********"
consr_secrt="***********"
req_url ="https://api.twitter.com/oauth/request_token"
acs_url = "https://api.twitter.com/oauth/access_token"
auth_url="https://api.twitter.com/oauth/authorize"
cred<-OAuthFactory$new(consumerKey=consr_key,consumerSecret=consr_secrt,requestURL =req_url,accessURL = acs_url,authURL=auth_url)

handshake: twitterクライアント接続

cred$handshake(cainfo="cacert.pem")

認証情報取得

setup_twitter_oauth(consr_key, consr_secrt, acs_token, acs_token_sec)

検索例

searchTwitter("#DH2018", n=10)
searchTwitter("#永世七冠", n=10)

username = "casualconc"
userTimeline(username)

username = "langstat"
userTimeline(username)