昨日のつづきで、KH Coder の練習をしようと思ったんですが、原因不明の不具合があり、形態素解析をすると落ちてしまいました。データ準備から分析結果出力までかなり早いステップで終わるので、かなり便利なソフトですが、今回はあきらめて、RMeCabという統計ソフトRのテキストマイニングパッケージを利用しました。
雑誌『英語教育』
『英語教育』という雑誌がありまして、現在刊行されている英語教育雑誌のなかではもっとも歴史が古いものです。直接の起源は、1952年(当時は研究社刊、後大修館書店に移行)で、戦後をだいたいカバーしています。(ただし、系統関係も含めればルーツは戦前までさかのぼれる)
この雑誌に関する細々したこと、とくに通時的なトレンドは次の記事に書いてあります。
- 雑誌『英語教育』(戦後)の量的傾向をざっと見る - こにしき(言葉、日本社会、教育)
- 『英語教育』タイトルによく使われる語 - こにしき(言葉、日本社会、教育)
- 大修館『英語教育』執筆者ランキング(年代別) - こにしき(言葉、日本社会、教育)
この雑誌の「記事タイトル」のデータを用いて計量テキスト分析(テキストマイニング)してみようというのが、今回の記事。ツイッターのように最近の話だけでなくて、「時代」という変数が新たに投入できるのがこの分析の強みです。
そんなわけで、「歴史的計量テキスト分析」などという言葉を思いつきました。ご自由にお使い下さい。私は使いません。
年代によってよく用いられる語は変わるか?
どれが特定の時代を表す語で、どれがそうでないか(つまりいつの時代もそれなりに使われる語)というのを対応分析でチェックしてみましょう。なお、連載物はがっつり省いて、特集・単発とカテゴライズされている記事のみを扱います。
この図は、年代別に頻出語を再集計したものです。赤い時の年代に、近くプロットされていればされているほど、その年代に特徴的な語だということがわかります。逆に、原点(0,0)真ん中にあるものは、大した特徴はなく、いろんな年代に見られる語ということになります。
ちなみに「頻出語」は、名詞・動詞に限定し、また、たとえば「性」「化」のようなイメージ困難な語は削除しています。また、「一覧」や「座談」のような、雑誌の編集方針と深く関係がありそうな語もがっつり削除しています。この作業は、恣意的に思えるかも知れませんが、これはあくまでアイディアを得るための探索的な分析であり、「科学的/中立的/記述的」な作業をとくに目指していないので、むしろよいと考えます。もちろん、探索的分析で得たアイディアは、後にきちんと実証する必要があります。
全体の構図を見ると、左側が古いキーワード、右に行くほど新しいキーワードということが言えそうです。上下の軸の意味はちょっとよくわかりません。
まず、2000年代(00s)のすぐそばに、「コミュニケーション」が位置しているのはよくわかります。学習指導要領にとりあげられたり、応用言語学でもコミュニケーション関連の研究が盛んになるのが80年代〜90年代以降だからです。そのそばに、「理解」「国際」という語もありますが、これも80年代以降の「国際理解」「異文化理解」というスローガンの流行の反映でしょう。
一方で、古い時代、60年代のプロットのそばに「文学」があります。近年「英語教育研究の文学離れ」が指摘されることがありますが、いちぶ裏付けていると言えるでしょう。
以下、実際のデータを再チェックしていない、単なる邪推
何かの足しになればとスクリプトを公開しておきます
#RMeCabによる形態素解析 library(RMeCab) # パッケージの読み込み # データフレーム(x)の一行目に、記事タイトルが入っているとして、それを形態素解析 res <- RMeCabDF(x,1,1) #高頻度語のチェック res0 <- unlist(res) res1 <- res0[names(res0)=="名詞"|names(res0)=="動詞"] # 名詞と動詞のみ抽出 (tb1 <- table(res1)[rev(order(table(res1)))]) # 頻出語リスト作成 # 上記の出力結果を確認しながら、イメージ困難な語はがっつり削除 word <- c("英語","教育","指導","授業","問題","研究","表現","学習","教師" ,"英","言語","生徒","文法","外国","教材","高校","教科書","大学" ,"関係","入試","アメリカ","English","学校","文化","力","私" ,"テスト","中学校","日本","英文","評価","活動","比較","作文" ,"文学","国際","工夫","意味","能力","コミュニケーション","時間","考える" ,"教授","化","利用","米","教える","中学","読む","学力","論文","語法" ,"Teaching","実践","方法","学ぶ","理解","日本人","音声" ,"発音","日本語","辞書") # 対応分析 下準備 # # 年代ごとに、上記の頻出語リスト内の語がいくつあるか集計 tb <- table(unlist(res[x$years=="1950s"])) tb50 <- replace(tb[word], which(is.na(tb[word])), 0) # word該当のもの、NAは0を代入 tb <- table(unlist(res[x$years=="1960s"])) tb60 <- replace(tb[word], which(is.na(tb[word])), 0) # word該当のもの、NAは0を代入 tb <- table(unlist(res[x$years=="1970s"])) tb70 <- replace(tb[word], which(is.na(tb[word])), 0) # word該当のもの、NAは0を代入 tb <- table(unlist(res[x$years=="1980s"])) tb80 <- replace(tb[word], which(is.na(tb[word])), 0) # word該当のもの、NAは0を代入 tb <- table(unlist(res[x$years=="1990s"])) tb90 <- replace(tb[word], which(is.na(tb[word])), 0) # word該当のもの、NAは0を代入 tb <- table(unlist(res[x$years=="2000s"])) tb00 <- replace(tb[word], which(is.na(tb[word])), 0) # word該当のもの、NAは0を代入 #各年度を統合 TB <- rbind(tb50,tb60,tb70,tb80,tb90,tb00) rownames(TB) <- c("50s","60s","70s","80s","90s","00s") colnames(TB) <- word # 対応分析 library(MASS) #パッケージの読み込み res.ca <- corresp(TB[,],nf=2) biplot(res.ca,col=2:1,cex=c(1.5,1))