テキストマイニング(text mining)とは、テキスト(text:文章)とマイニング(mining:採掘)を合わせた言葉です。
計量国語学はテキストマイニングによって文献を統計的に分析する学問であり、元産業能率大学教授 安本美典 先生はこの方法によって「邪馬台国はどこにあったか」という問題を研究しておられます。(私と邪馬台国)また安本先生は、『源氏物語』54帖のうち「宇治十帖」が、本当に紫式部の作であるかを文体の統計的分析によって研究されたそうです。
ここでは、高等学校情報科「情報Ⅰ」教員研修用教材(本編):文部科学省 学習23「質的データの分析」
をもとに、テキストマイニングの一端に触れたいと思います。
RMeCabは日本語のテキストマイニングのパッケージです。
unlistで文章を単語に分割・品詞分解します。
library(RMeCab)
unlist(RMeCabC("隣の客はよく柿食う客だ"))
## 名詞 助詞 名詞 助詞 副詞 名詞 動詞 名詞 助動詞
## "隣" "の" "客" "は" "よく" "柿" "食う" "客" "だ"
R に「青空文庫」から作品を読み込むための Aozora 関数を用い「杜子春」を読み込みます。
#「杜子春」を x に読み込む
source("http://rmecab.jp/R/Aozora.R")
x<-Aozora("https://www.aozora.gr.jp/cards/000879/files/43015_ruby_17393.zip")
## example: folder_name <- Aozora('http://www.aozora.gr.jp/cards/000081/files/462_ruby_716.zip')
形態素解析を行います。Info1 は品詞の大分類,Info2 は品詞の細分類です。
glove<-RMeCabFreq(x)
## file = ./NORUBY/toshishun2.txt
## length = 1150
データを整理します。
glove2 <- subset(glove,Info1 %in% c("名詞","動詞"))
glove3 <- subset(glove2,!Info2 %in% c(" 数 "," 非自立 "," 接尾 "))
glove3 %>% head()
## Term Info1 Info2 Freq
## 162 させる 動詞 接尾 2
## 163 す 動詞 接尾 3
## 164 せる 動詞 接尾 11
## 165 られる 動詞 接尾 2
## 166 れる 動詞 接尾 14
## 167 あく 動詞 自立 1
glove4 <- glove3[order(glove3$Freq,decreasing=T),]
glove4 %>% head()
## Term Info1 Info2 Freq
## 466 いる 動詞 非自立 79
## 991 子 名詞 接尾 78
## 667 春 名詞 一般 69
## 679 杜 名詞 一般 67
## 181 する 動詞 自立 61
## 1039 の 名詞 非自立 56
library(ggplot2)
par(family = "HiraKakuProN-W3")
glove4 %>%
filter(Freq >=9) %>%
mutate(Term=reorder(Term,Freq)) %>%
ggplot(aes(Term,Freq))+
geom_col()+
theme_gray(base_family="HiraKakuProN-W3")+
coord_flip()#軸の入れ替え
library(wordcloud)
## 要求されたパッケージ RColorBrewer をロード中です
wordcloud(glove4$Term,glove4$Freq,min.freq=4,color=brewer.pal(8,"Dark2"),family="HiraKakuProN-W3")
頻度の多い単語は、大きく表されています。