おすすめノイズキャンセリングヘッドホンはこちら
テキストマイニング

【R】記事中に使われている言葉のポジティブな割合を表す【RMeCab】

txtファイル分析 (1)

記事を分析していきます。

少しアナログなやり方ですが、許してください。

今回の目的・概要

目的

txtファイルに書いてある文字を分析する。

そこでポジティブな言葉とネガティブな言葉のどちらが多く使われているの分析する。

実行環境

  • Window10
  • R バージョン 3.4.4

MacでもLinuxでも可能です。

必要なもの

  • MeCab
  • RMeCab
  • 分析したい記事をコピーしたtxtファイル
  • PN Table

記事をスクレイピングして分析したかったんですけど、まだできません。

出来るようになったら、また記事にします。

MeCabをインストールしていない方は、【MeCab】を【R】で使えるようにするための【RMeCab】を導入する方法・流れ【Windows編】をご覧ください。

必要なパッケージ

dplyrデータフレームの操作が楽にできる
magrittrパイプ演算子が使える。dplyrと相性良い
RMeCab形態素分析するため

記事のポジティブ率を調べる流れ

  1. PN Tableの読み込み
  2. ①を使いやすい状態にする
  3. txtファイルで品詞を抽出
  4. ③を細分化する
  5. 結合
  6. ポジティブとネガティブの変数作成
  7. ポジティブな割合を求める

txtファイルの名前はなんでもダイジョブです。同じディレクトリにいれておいてください。

①.PN Tableの読み込み

PN Table読み込み

##1
#パッケージの読み込み
library(dplyr)
library(magrittr)

#windowsの方
pn <-read.table(“http://www.lr.pi.titech.ac.jp/~takamura/pubs/pn_ja.dic”,
sep = “:”, stringsAsFactors = FALSE)

#Mac.Linuxの方
pn <- read.table(“http://www.lr.pi.titech.ac.jp/~takamura/pubs/pn_ja.dic”,
sep = “:”, stringsAsFactors = FALSE,fileEncoding = “CP932”, encoding = “UTF-8”)

read.table(URL)URLの表読み込み

Macユーザーの方はもしかしたら、変換しないで良いかもしれません。

表示がおかしくなったら、Windowsの方でお願いします。

②.①を使いやすい状態にする

①を使いやすい状態にする

##2
#一部抽出・名前変更
pn2 <- pn %>% select(V1, V4) %>% rename(TERM = V1)
pn2 %<>% distinct(TERM, .keep_all = TRUE)

#データ表示
head(pn2)

select(V1, V4) %>% rename(TERM = V1)V1,V4を選択し、V1の列名をTERMにする
distinct(TERM, .keep_all = TRUE)TEAMで重複しているものを削除

③.txtファイルで品詞を抽出

品詞抽出

##3
library(RMeCab)
#名詞と形容詞と動詞抽出
txtdata <- docDF(“test.txt”,pos = c(“名詞”,”形容詞”,”動詞”),type = 1)

作ったテキストファイルの「test.txt」から、名詞・形容詞・動詞を取っています。

④.③を細分化する

細分化

##4
# 品詞細分類によるフィルタ
txtdata %<>% filter(!POS2 %in% c(“数”, “サ変接続”,”接尾”,”非自立”))

先ほど取った、「名詞・形容詞・動詞」から「数・サ変接続・接尾・非自立」を外しています。

⑤.結合

結合

##5
#結合
txtdata2 <- txtdata %>% left_join(pn2)

tail(txtdata2)
txtdata2 %>% select(TERM, V4) %>% arrange(V4) %>% head(10)

⑥.ポジティブとネガティブの変数作成

ここにボックスタイトルを入力

##6
#ポジティブ・ネガティブ割合
poji <- txtdata2 %>% summarize( sum (V4 > 0, na.rm = T))
nega <- txtdata2 %>% summarize( sum (V4 < 0, na.rm = T))

summarize( sum (V4 > 0, na.rm = T))V4>0以上はポジティブな言葉の割合。na.rm=Tは欠損値を無視してくれる

PN Tableではポジティブな言葉は0以上、ネガティブな言葉は0以下に設定されています。

⑦.ポジティブな割合を求める

ポジティブな割合

##7
#ネガティブな割合をもとめる
print(poji/(poji+nega))

sum(V4 > 0, na.rm = T)
1 0.119403

結果は11%です。あなたはどうなりました?

スポンサーリンク

全体コード

全体コード

##今回の目的
#txtファイルの言葉を分析するポジティブな言葉の割合をしらべる。

##1
#windows
pn <-read.table(“http://www.lr.pi.titech.ac.jp/~takamura/pubs/pn_ja.dic”,
sep = “:”, stringsAsFactors = FALSE)

#Mac.Linuxの方
pn <- read.table(“http://www.lr.pi.titech.ac.jp/~takamura/pubs/pn_ja.dic”,
sep = “:”, stringsAsFactors = FALSE,fileEncoding = “CP932”, encoding = “UTF-8”)

##2
#一部抽出・名前変更
pn2 <- pn %>% select(V1, V4) %>% rename(TERM = V1)
pn2 %<>% distinct(TERM, .keep_all = TRUE)

#データ表示
head(pn2)

##3
library(RMeCab)
#名詞と形容詞と動詞を抽出
txtdata <- docDF(“test.txt”,pos = c(“名詞”,”形容詞”,”動詞”),type = 1)

##4
# 品詞細分類によるフィルタ
txtdata %<>% filter(!POS2 %in% c(“数”, “サ変接続”,”接尾”,”非自立”))

##5
#結合
txtdata2 <- txtdata %>% left_join(pn2)

tail(txtdata2)
txtdata2 %>% select(TERM, V4) %>% arrange(V4) %>% head(10)

##6
#ポジティブ・ネガティブ割合
poji <- txtdata2 %>% summarize( sum (V4 > 0, na.rm = T))
nega <- txtdata2 %>% summarize( sum (V4 < 0, na.rm = T))

##7
#ネガティブな割合をもとめる
print(nega/(poji+nega))

▼ゼロから始めるR言語に戻る▼

あわせて読みたい
R言語
【随時更新】ゼロから始めるR言語【2018/3/30日更新】RとRStudioのインストールからグラフ・図・分析、テキストマイニング、スクレイピングなどをやっていきます。ネットでRを勉強したい人は是非ご覧ください。...

できれば、スクレイピングを極めて、テキストファイルを作りたい!

以上さぎのみや(@gumimomoko)でした。今日も分析しました。明日からも一生無双でやったりましょう。

参考にさせていただいたこと

R+RMeCabで感情分析

東工大学の高村研究室で公開している「PN Table」を利用させていただきました。 とても便利なツールです。

研究を行う人は必見です。

TwitterでもRのこと発信中

 

ABOUT ME
さぎのみや
さぎのみや
「物事の本質を見抜く」をテーマに発信している19才の理系大学生ブロガー。「R」・「本」・「行動経済学」のことを中心に発信中。グミは100種類以上食べてきました。アイコンは可愛いですけど、男です。お仕事依頼はTwitterからお願いします。 →Polcaで応援Amazonほしいものリスト
おすすめ音楽アプリ「AWA」
  • 新たな音楽の扉が開く
  • 4300万楽曲
  • 最高の音質
  • 参加アーティスト多数

今だけ有料プランが3か月無料です!

詳しくみる