R言語を利用して記事中に使われている言葉のポジティブ割合を調べます。少しアナログなやり方ですが、許してください。
目次
今回の目的・概要
目的
txtファイルに書いてある文字を分析する。
そこでポジティブな言葉とネガティブな言葉のどちらが多く使われているの分析する。
実行環境
- Window10
- R バージョン 3.4.4
MacでもLinuxでも可能です。
必要なもの
- MeCab
- RMeCab
- 分析したい記事をコピーしたtxtファイル
- PN Table
記事をスクレイピングして分析したかったんですけど、まだできません。
出来るようになったら、また記事にします。
MeCabをインストールしていない方は、【MeCab】を【R】で使えるようにするための【RMeCab】を導入する方法・流れ【Windows編】をご覧ください。
必要なパッケージ
dplyr | データフレームの操作が楽にできる |
magrittr | パイプ演算子が使える。dplyrと相性良い |
RMeCab | 形態素分析するため |
記事のポジティブ率を調べる流れ
- PN Tableの読み込み
- 1を使いやすい状態にする
- txtファイルで品詞を抽出
- 3を細分化する
- 結合
- ポジティブとネガティブの変数作成
- ポジティブな割合を求める
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言語
UdemyでR言語について学ぶ>> こちらではプログラミング言語【R】を使って、様々なことをしていきます。 Rを勉強にしている人に、参考にしていただければ嬉しいです。 ...
参考にさせていただいたこと
東工大学の高村研究室で公開している「PN Table」を利用させていただきました。 とても便利なツールです。
研究を行う人は必見です。
コメント