1 形態素解析によるテキストマイニング

テキストマイニング(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")

頻度の多い単語は、大きく表されています。