SlideShare a Scribd company logo
1 of 22
hijiyama.R The Final 2017.11.26
@show_55 / 月司祥
1
音楽(歌)の魅力の一つ=「歌詞」
今回の題材はこちら!
→それぞれ約20曲分の歌詞をテキスト化
2
下準備(パッケージ読み込み)
# 今回使うパッケージを読み込んでおく
library(RColorBrewer)
library(RMeCab)
library(wordcloud)
library(dplyr)
library(magrittr)
# この他 rvest というパッケージを使って、うまくいけば
# スクレイピングが一気にサクッとできる可能性もある
# っぽいのですが、今回そこは省略 (・∀・;)
3
RMeCabText関数を使った例(簡単!)
# (ダイアログで対象のテキストファイルを指定)
RMeCabText.result <- RMeCabText(file.choose())
# RMeCabText関数の結果の確認 【省略可】
head(RMeCabText.result, 8)
# 単語ベクトルの作成
RMeCabText.result.2 <- unlist(sapply(RMeCabText.result, "[[", 1))
# 単語ベクトルの確認 【省略可】
head(RMeCabText.result.2, 8)
# とにかくワードクラウドを描画してみる
wordcloud(RMeCabText.result.2)
4
・・・。
ほら
なれる
遠.
乗り越え
た.
なく
絶対
ね.
ライ
fly
しま.
light
さあ ずっと
love
傷つ.
sterpiece
素敵alright
向こ.
っと
じゃ
start
抱きしめる
来る
なんて
よ.
こと
you
もっと
ひとり
ずつ
見れ
これから
全体
られ
だけど
思.
自分
そ.
なら
大切
叶え
諦め
自由
みよ
あれ
幸せ
願っ
始め
生まれ
diamond
まだ
探し
歌声
続.
遠く
飛ぶだっ
歌.
変え
目覚める
never
あなた
両手
界中
shiny
地球
きっと
でも
踊ろ
ひとつ
そっと
そば
もの
lady
ゆく
っぱ.
言葉
ちゃ.
まま
キラメキラリ
最後
゚キラ
忘れ
コト
見え
なれ
抱.
すぐ
なさ.
ど.
たく
約束
泣.
land
まで
ため
ぐっと
別れ
already
やる
たった
頑.
蒼.
果て
やれ
翔ば
我慢
見つける
もし
輝く
です
大好き
song嗚 呼
わけ
shine
live
思っ
ペ.
だけ
だって
フレ.
仲間
信じ
トキメキラリ
眩しく
想.
ready
dear
way
キラ
一番
レイン.
ましょ
明日
笑っ
あげる
追.
あの
始めよ
大丈夫
どんな
モノ
抱きしめ
込め
呼ぼ
dream
歩.
坂道
たり
みんな
この
れる
喜び
あっ
all
stage
憧れ
カッコ
なっ
smile
かけ
ゆき
さえ
踊り
泣き
流し
悪.
輝き
歌お
パ.
な.
メロディ.
好き
願 .
てる
言わ
み出そ
また
けど
笑顔
are
眠 り
向かっ
叶える
なきゃ
歩こ
最高
ちゃ
only
より
感じ
晴れ
それ
なり
届き
ねえ
も.
どこ
ブレ.
知ら
ある
ア.
覚え
悲 しみ
たら
その
だろ
なる
叶.
希.
届け
オ.
つか
意.
新し.
進め
行く
テキパキラリ
でしょ
行 こ
日々
から
って
まっすぐ
言.
場所
ヤツ
キス
出 来 る
眩し.
し.
輝 .
5
最低限のオプションを追加
max.words = 100, random.order = FALSE
な.
た.
から
この
まで
だって
じゃ
なく
ずっと
どんな
自分
なら
たら
だけ
てる
なる
どこ
あなた
フレ.
そ.
もっと
さあ
きっと
まま
でしょ
頑.
all
明日
モノ
shine
なり
好き
よ.
でも
って
あの
こと
より
笑顔
思.
ある
幸せ
lady
ましょ
way
行こ
られ
それ
song
願 .
diamond
です
キラメキラリ
すぐ
輝 .
出 来 る
love
悲 しみ
ね.
you
ready
なんて
眠 り
嗚 呼
れる
つか
傷つ.
新し.
ひとつ
叶える
ねえ
smile
約束
始め
抱きしめ
dream
ちゃ.
alright
最高
たく
信じ
行く
never
生まれ
も.
歌お
その
希.
ほら
light
絶対
なれる
only
だけど
悪.
なさ.
ため
ライ
みよ
ゆき
な.
whoa
この
break
let
jungle
funk
say
streets
get
watch
feet
one
まで
から
now
make
yeah
mighty
life
waytake
jump
wet
can
も.
you
その
なんて
だけ
って
gonna
てる
time
clap
こと
all
くれ
無.
heart
breakergotta痛み
die
ここ
around
run
wanna
strawberry
warriors
higher
night
raise れる
the
た.
上 げ
town
なら
どこ
生 き
name
day
bad
chain
縲 €
消 え
や る
like
louder
for
burn
そ.
自分
する
まだ
信じ
サディ
スティック
dem
fly
brah
put
every
lucifer
beat
hear
pick
this
find
boy
maria
派手
じゃ
あの
行こ
言わ
ララララ.
gun
high
な.
た.
から
この
まで
だって
じゃ
なく
ずっと
どんな
自分
なら
たら
だけ
てる
なる
どこ
あなた
フレ.
そ.
もっと
さあ
きっと
まま
でしょ
頑.
all
明日
モノ
shine
なり
好き
よ.
でも
って
あの
こと
より
笑顔
思.
ある
幸せ
lady
ましょ
way
行こ
られ
それ
song
願 .
diamond
です
キラメキラリ
すぐ
輝 .
出 来 る
love
悲 しみ
ね.
you
ready
なんて
眠 り
嗚 呼
れる
つか
傷つ.
新し.
ひとつ
叶える
ねえ
smile
約束
始め
抱きしめ
dream
ちゃ.
alright
最高
たく
信じ
行く
never
生まれ
も.
歌お
その
希.
ほら
light
絶対
なれる
only
だけど
悪.
なさ.
ため
ライ
みよ
ゆき
6
RMeCabFreq関数を使った例→品詞指定
# さっきと同様のダイアログでファイル指定
Freq1 <- RMeCabFreq(file.choose())
# 名詞・動詞に絞る
Freq1x <- subset(Freq1, ( (Info1 == "名詞") | (Info1 == "動詞") ))
# 更にInfo2(品詞情報の下位区分)の「非自立」・「接尾」を除外
type <- c("非自立","接尾")
Freq1x <- subset(Freq1x, !Info2 %in% type)
# 出現頻度で並び替えて、上位100までを取る。
Freq1x <- Freq1x[order(Freq1x$Freq, decreasing = T),]
Freq1x <- head(Freq1x, n=100)
7
英文テキストは別途処理!
# 英語のみのファイルは、別途、英文用の形態素解析を行う。
# 英語の文章を形態素解析するフリーソフト「TreeTagger」を使用。
# http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/
# 出力結果のTSVファイルを外部エディタで開いて
# 品詞も「形容詞、名詞類、副詞、動詞」に絞り込んだものを
# 出現頻度降順にソートしたものをCSV保存するところまで
# バッチファイル等を用いて「Rの外」で実施済(^^;
# このCSVを読み込み、
E3freq <- read.delim("E3freq.csv", header=TRUE, sep=",")
# 出現頻度の上位100までを取る。
E3frex <- head(E3freq, n=100)
8
TreeTagger の出力内容イメージ
9
英文の品詞指定(例)
10
改良版ワードクラウド例:im@s
11
改良版ワードクラウド例:HiGH&LOW (J)
12
改良版ワードクラウド例:HiGH&LOW (E)
13
改良版ワードクラウド表示の準備
# 背景色を設定
par (bg="black")
# フォントファミリー追加(メイリオ&游明朝)
windowsFonts(MER = windowsFont("Meiryo"))
windowsFonts(YUM = windowsFont("Yu Mincho"))
14
# im@s
wordcloud(Freq3x$Term, Freq3x$Freq, scale = c(3, .5),
random.order = FALSE, rot.per = 0, random.color = FALSE,
family="MER", colors = brewer.pal(9, "RdPu"))
# HiLO:HiGH&LOW (J)
wordcloud(Freq1x$Term, Freq1x$Freq, scale = c(3, .4),
random.order = FALSE, rot.per = 0, random.color = FALSE,
family="YUM", colors = brewer.pal(9, "YlOrRd"))
# HiLO:HiGH&LOW (E)
wordcloud(E3frex$Term, E3frex$Freq, scale = c(3, .7),
random.order = FALSE, rot.per = 0, random.color = FALSE,
family="serif", colors = brewer.pal(9, "YlGnBu"))
15
改良版ワードクラウド表示
単語感情極性対応表(PN Table)
16
単語と感情特性辞書の連結(コード)
# それぞれの語の代表表記(Term)と
# PNスコア(V4)を取り出してくっつける。
Jdic2 <- Jdic %>% select(V1, V4) %>% rename(Term = V1)
Jdic2 %<>% distinct(Term, .keep_all = TRUE)
# ワードクラウドを作るときに使ったデータと連結
Freq1PN <- Freq1x %>% left_join(Jdic2)
17
単語と感情特性辞書の連結(データ)
18
ポジティブ/ネガティブ語彙 【頻度順】:im@s
19
ポジティブ/ネガティブ語彙 【頻度順】:HiGH&LOW
20
お世話になったウェブページ [1/2]
●【Rでテキストマイニング】他人のタイムラインをWord Cloudで
可視化してみる in 「これで無理なら諦めて!世界一やさしいデータ分析教
室」 by Np-Ur氏 >> http://www.randpy.tokyo/entry/r_wordcloud
●RMeCab in 「RとLinuxと...」 by 石田基広氏 >>
http://rmecab.jp/wiki/index.php?RMeCab
●Package wordcloud in CRAN >> https://cran.r-
project.org/web/packages/wordcloud/index.html
●TreeTagger - a part-of-speech tagger for many languages in
Helmut Schmid氏 website >> http://www.cis.uni-
muenchen.de/~schmid/tools/TreeTagger/
●【TreeTagger】TreeTagger入門 in kazu56氏 Qiita ページ >>
https://qiita.com/kazu56/items/58e49ffe312ac6c28737
●英文の形態素解析ツール「TreeTagger」の品詞コードの,意味・
日本語訳の一覧表(完全版) in 「モバイル通信とIT技術をコツコツ勉強
するブログ」 >> http://computer-
technology.hateblo.jp/entry/20150824/p1
21
お世話になったウェブページ [2/2]
●R+RMeCabで感情分析 in rmecab氏 Qiita ページ >>
https://qiita.com/rmecab/items/b1a55a0e3a0a8637a461
●単語感情極性対応表 in 高村大也氏 website >>
http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.html
●統計グラフの色 in 奥村晴彦氏 website >> https://oku.edu.mie-
u.ac.jp/~okumura/stat/colors.html
●総称ファミリ名分類のフォント名一覧 in W3G website >>
https://w3g.jp/sample/css/font-family
●10進、16進文字コードin HTMLユニコード(コンバータ) in
code.cside.com >>
http://code.cside.com/3rdpage/jp/unicode/converter.html
●THE IDOLM@STER データベース >> http://imas-db.jp/
●歌ネット >> https://www.uta-net.com/
●歌詞タイム >> http://www.kasi-time.com/
●歌詞GET >> http://www.kget.jp/
22

More Related Content

What's hot

PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介sters
 
Active record query interface
Active record query interfaceActive record query interface
Active record query interfaceTomoya Kawanishi
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Joe_noh
 
php7's ast
php7's astphp7's ast
php7's astdo_aki
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回Joe_noh
 
スクリプトで文字コード変換
スクリプトで文字コード変換スクリプトで文字コード変換
スクリプトで文字コード変換1000 VICKY
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Joe_noh
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 
Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Joe_noh
 
JavaOne Tokyo JVM言語BOF ベンチマーク JRuby
JavaOne Tokyo JVM言語BOF ベンチマーク JRubyJavaOne Tokyo JVM言語BOF ベンチマーク JRuby
JavaOne Tokyo JVM言語BOF ベンチマーク JRubyHiroshi Nakamura
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
20年越しで Perl 4 to 5 した話
20年越しで Perl 4 to 5 した話20年越しで Perl 4 to 5 した話
20年越しで Perl 4 to 5 した話outerinside
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたMoriyoshi Koizumi
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたYoshio Hanawa
 
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Kenta USAMI
 

What's hot (20)

PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
 
Active record query interface
Active record query interfaceActive record query interface
Active record query interface
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
 
php7's ast
php7's astphp7's ast
php7's ast
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回
 
スクリプトで文字コード変換
スクリプトで文字コード変換スクリプトで文字コード変換
スクリプトで文字コード変換
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
Perl io layer
Perl io layerPerl io layer
Perl io layer
 
Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -
 
JavaOne Tokyo JVM言語BOF ベンチマーク JRuby
JavaOne Tokyo JVM言語BOF ベンチマーク JRubyJavaOne Tokyo JVM言語BOF ベンチマーク JRuby
JavaOne Tokyo JVM言語BOF ベンチマーク JRuby
 
Php2 s1
Php2 s1Php2 s1
Php2 s1
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
20年越しで Perl 4 to 5 した話
20年越しで Perl 4 to 5 した話20年越しで Perl 4 to 5 した話
20年越しで Perl 4 to 5 した話
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
 
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
 
Php2 s2
Php2 s2Php2 s2
Php2 s2
 

Similar to 【簡単テキストマイニング】歌詞から作品世界の魅力を探る

普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語RShuyo Nakatani
 
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)Shirou Maruyama
 
Material
MaterialMaterial
Material_TUNE_
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Koji Matsuda
 
第一回ゆるふわーる
第一回ゆるふわーる第一回ゆるふわーる
第一回ゆるふわーるSachiko Hirata
 
Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!
Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!
Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!近藤 嘉雪
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
Racc でおてがる構文解析
Racc でおてがる構文解析Racc でおてがる構文解析
Racc でおてがる構文解析morphine57
 
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行monglee
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門Takeshi Arabiki
 
JavaScriptの正規表現
JavaScriptの正規表現JavaScriptの正規表現
JavaScriptの正規表現yaju88
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JPSercan Ahi
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章Tomonobu_Hirano
 
高位合成友の会第四回(2016/11/22)スライド
高位合成友の会第四回(2016/11/22)スライド高位合成友の会第四回(2016/11/22)スライド
高位合成友の会第四回(2016/11/22)スライド一路 川染
 

Similar to 【簡単テキストマイニング】歌詞から作品世界の魅力を探る (17)

普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語R
 
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
 
Material
MaterialMaterial
Material
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
 
第一回ゆるふわーる
第一回ゆるふわーる第一回ゆるふわーる
第一回ゆるふわーる
 
Rでreproducible research
Rでreproducible researchRでreproducible research
Rでreproducible research
 
Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!
Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!
Perlの勘所をマスターしよう! コンテキストとリファレンスを我が物に!
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
Racc でおてがる構文解析
Racc でおてがる構文解析Racc でおてがる構文解析
Racc でおてがる構文解析
 
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
 
Rcppのすすめ
RcppのすすめRcppのすすめ
Rcppのすすめ
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門
 
JavaScriptの正規表現
JavaScriptの正規表現JavaScriptの正規表現
JavaScriptの正規表現
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
 
高位合成友の会第四回(2016/11/22)スライド
高位合成友の会第四回(2016/11/22)スライド高位合成友の会第四回(2016/11/22)スライド
高位合成友の会第四回(2016/11/22)スライド
 

【簡単テキストマイニング】歌詞から作品世界の魅力を探る