2018/06/17
TreeTaggerを使う(2)
前回の続きです。今回は、RからTreeTaggerを利用してみました。以前ワードクラウドで遊んだ際の、Steve JobsのStanfordスピーチの題材を使って細かく見ていきます。9行目以降を追記しました。
# パッケージの読み込みまず、10行目で全単語を集計し、12行目で降順にソートします。14行目で棒グラフを表示すると以下の通りになります。
library(wordcloud)
# 単語ベクトルの作成
corpus.en <- tolower(scan("jobs.txt", what = "char", sep = "\n", quiet = TRUE))
word.vector.en <- unlist(strsplit(corpus.en, "([^-a-z0-9]+|--)"))
# ワードクラウドを作成
wordcloud(word.vector.en, min.freq = 2, color = c("blue","green","yellow","pink", "red" ), random.order = FALSE)
#全単語集計
tbldata <- table(word.vector.en)
#ソート
sorted.tbldata <- sort(tbldata,decreasing = TRUE)
#棒グラフ
barplot(sorted.tbldata[1:30], las=2, ylab="Frequency")

RでTreeTaggerを使用するには、koRpusパッケージを使います。2行目の「set.kRp.env」は環境設定です。tree-tagger-englishの場所と、分析する言語 ("en"glish) を指定しました。3行目で解析対象ファイルを読み込み、解析を行います。解析結果は、$tokenでワード(4行目)、$tagで品詞(5行目)を取り出すことができます。
library(koRpus)8行目でファイルに落とした解析結果を見るとこんな感じです。分かりやすく品詞別に色付けしています。
set.kRp.env(TT.cmd="~/R/x86_64-pc-linux-gnu-library/3.4/treetagger/cmd/tree-tagger-english",lang="en")
tagged.text <- taggedText(treetag("~/ドキュメント/R_code/jobs.txt", treetagger="manual", lang="en", TT.options = list(path= "~/R/x86_64-pc-linux-gnu-library/3.4/treetagger", preset="en")))
words_token <- tagged.text$token # word
words_tab <- tagged.text$tag # NN etc.
# Analysis output
write.csv(tagged.text, "res.csv", quote=FALSE, row.names=FALSE)
tbl_words_tab <- table(words_tab)
sorted_tbl_words_tab <- sort(tbl_words_tab, decreasing = TRUE)
barplot(sorted_tbl_words_tab[1:30], las=2, ylab="Frequency")
# Noun pick-up
words_nn <- words_token[words_tab=="NN"]
words_nns <- words_token[words_tab=="NNS"]
words_np <- words_token[words_tab=="NP"]
ana_data <- c(words_nn,words_nns,words_np)
# Delete "n’t" and "’m"
words_temp <- ana_data
words_temp1 <- words_temp[words_temp!="n’t"]
words_temp <- words_temp1[words_temp1!="’m"]
ana_data <- words_temp
# Result output
ana_data_tbl <- table(ana_data)
sorted_ana_data_tbl <- sort(ana_data_tbl, decreasing = TRUE)
barplot(sorted_ana_data_tbl[1:30], las=2, ylab="Frequency")




TreeTagger、使いこなせていませんが、色々できそうです。また、遊んでみようと思います。