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

R言語を利用して記事中に使われている言葉のポジティブ割合を調べます。少しアナログなやり方ですが、許してください。

目次

今回の目的・概要

目的

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. 1を使いやすい状態にする
  3. txtファイルで品詞を抽出
  4. 3を細分化する
  5. 結合
  6. ポジティブとネガティブの変数作成
  7. ポジティブな割合を求める

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

1.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.1を使いやすい状態にする

##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で重複しているものを削除

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

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

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

4.3を細分化する

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

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

5.結合

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

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

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

##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.ポジティブな割合を求める

##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+RMeCabで感情分析

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

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

▼おすすめ商品!画像をクリック▼

一生使い続けたい商品・製品
txtファイル分析 (1)

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
鷺ノ宮らび
「Unishar-ユニシャー」編集長
ゲーム開発を手助けするメディア「Unishar-ユニシャー」の編集長です。「Rabbishar-ラビシャー」の運営もしています。

コメント

コメントする

目次