読者です 読者をやめる 読者になる 読者になる

RとApache OpenNLPではじめる自然言語処理

 本日、リクルートで開催される第61回R勉強会@東京 (Tokyo.R) において、「RとApache OpenNLPではじめる自然言語処理」というLTをします。発表スライドは、こちらから見ることができます。*1

 LTなので、非常にざっくりとしか説明していません。Rによるテキスト処理については、手前味噌ですが、以下の本などをご参照ください。Kindle版PDF版もあります。

Rによるやさしいテキストマイニング

Rによるやさしいテキストマイニング

*1:普通にPDFをアップロードすると文字化けしたので、全てのスライドを画像に変換してからアップロードしています。その結果、スライドの解像度が若干落ちています。申し訳ございません。

特定の品詞の共起語だけをワードクラウドに描画する

 拙著『Rによるやさしいテキストマイニング』の読者の方から、以下のような質問を頂きました。

 最初に「RMeCabパッケージのcollocate関数で品詞を指定することができるか?」を確認したのですが、どうやらできないようです。*1 仕方がないので、とりあえず、以下のように、RMeCabText関数の出力として得られる品詞の情報を使ってみました。恐らくもっと洗練されたやり方があると思いますが、何かのご参考までに。*2 なお、「形容詞の共起語」だけを集計したいというご質問でしたが、以下では「名詞の共起語」を集計しています(原理的にはまったく同じです)。

# パッケージの読み込み
library(RMeCab)
library(stringr)
library(wordcloud)

# 単語と品詞の情報を抽出
# 以下の例では、『Rによるやさしいテキストマイニング』の付属データであるAbe.txtを使用
RMeCabText.result <- RMeCabText(file.choose()) # Abe.txtを指定
word <- unlist(sapply(RMeCabText.result, "[[", 1)) # 単語の情報を抽出
pos <- unlist(sapply(RMeCabText.result, "[[", 2)) # 品詞の情報を抽出
word.vector <- paste(word, pos, sep = "_") # 単語の情報と品詞の情報を結合し、「単語_品詞」のベクトルを作成

# 検索語とスパンを指定
search.word <- "^国民_名詞$" # 検索語を指定する際に「単語_品詞」という形式で指定
span <- 5 # スパンの指定(ここでは、左右5語まで)
span <- (-span : span)

# 共起語の集計
positions.of.matches <- grep(search.word, word.vector, perl = TRUE)
results <- NULL
for(i in 1 : length(span)) {
  collocate.positions <- positions.of.matches + span[i]
  collocates <- word.vector[collocate.positions]
  results <- append(results, collocates)
}
results <- str_replace_all(string = results, pattern = search.word, replacement = "")
not.blank <- which(results != "")
results <- results[not.blank]

# 特定の品詞の共起語だけを抽出
positions.of.matches.2 <- grep("_名詞", results, perl = TRUE) # ここでは名詞
results.2 <- results[positions.of.matches.2]
results.3 <- str_replace_all(string = results.2, pattern = "_名詞", replacement = "") # 品詞の情報(ここでは、"_名詞"の部分)を削除

# ワードクラウドを描画
wordcloud(results.3, min.freq = 1, colors = brewer.pal(8, "Dark2"))

 上記のコードを実行すると、以下のような図ができます。繰り返しになりますが、もっと洗練されたやり方があるかも知れません。

f:id:langstat:20170509100027p:plain

 Rとテキストマイニングに関する詳しい解説は、以下の本などを参照してください。

Rによるやさしいテキストマイニング

Rによるやさしいテキストマイニング

 なお、今回はたまたまお答えできる内容の質問でしたが、必ずしも読者の方の質問全てに対応できるとは限りません。内容的、タイミング的に難しい場合も多々あるかと存じます。どうかご了承くださいませ。

*1:ヘルプにある引数etcの使い方がよく分かりませんでしたが。。。

*2:以下のコードの説明はあまり細かくないので、適宜作成したオブジェクトの中身を確認しながら進めてください。

2017年4月に購入した本・ご恵贈頂いた本

 以下の本を購入しました。

テストは何を測るのか―項目反応理論の考え方

テストは何を測るのか―項目反応理論の考え方

Rによるスクレイピング入門

Rによるスクレイピング入門

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによる機械学習 (Programmer's SELECTION)

Rによる機械学習 (Programmer's SELECTION)

パーフェクトR

パーフェクトR

はじめよう!統計学超入門 (知識ゼロでもわかる統計学)

はじめよう!統計学超入門 (知識ゼロでもわかる統計学)

流れるようにわかる統計学

流れるようにわかる統計学

 そして、以下の本をご恵贈頂きました。心より感謝を申し上げます。

坂本真樹先生が教える 人工知能がほぼほぼわかる本

坂本真樹先生が教える 人工知能がほぼほぼわかる本

2017年度に採択された科研費

 本年度は、以下の3つの科研費が採択されました。

 代表者分の科研は、特別研究員奨励費(PD) 「パターン認識と自然言語処理の技術を用いた習熟度判定」(2012-2014年度)と若手研究(B)「機械学習によるスピーキングの基準特性抽出と習熟度推定」(2014-2016年度)の続きです。自動採点、自動基準特性抽出、自動フィードバックという流れですが、そろそろ自動評価の研究に一区切りをつけたいところです(と言いつつ、また続けて取り組みたい課題が出てくるかも知れませんが)。

Rによる感情分析

 本日、サイバーエージェントで開催される第60回R勉強会@東京 (Tokyo.R) において、「Rによる感情分析」というLTをします。発表スライドは、こちらから見ることができます。*1

  • 林雄一郎 (2017). 「Rによる感情分析」 第60回R勉強会@東京. slide

 LTなので、Rによるテキスト処理については殆ど説明していません。テキスト処理については、手前味噌ですが、以下の本などをご参照ください(本記事執筆直後にAmazonなどで紙版が品切れになってしまいましたが、kindle版PDF版なら今すぐに購入できます。*2

Rによるやさしいテキストマイニング

Rによるやさしいテキストマイニング

*1:普通にPDFをアップロードすると文字化けしたので、全てのスライドを画像に変換してからアップロードしています。その結果、スライドの解像度が若干落ちています。申し訳ございません。

*2:(追記)現時点では、楽天ブックス紀伊国屋ウェブストアにも在庫が若干あるようです。

広告を非表示にする