【计量语言分析・日语】不同小说类型的感情值考察

【日本語タイトル】

             ジャンル別の小説における感情極性値の考察


1.調査目的 

 本調査は、異なるジャンルの小説を3つ取り上げ、小説の感情極性値を調査することを目的としたものである。対象としたジャンルは、ホラー小説、歴史小説、推理小説である。

2.データ

2-1 調査データ

 本調査における、対象となる小説ジャンルはホラー小説、歴史小説、推理小説である。コーパスとして、青空文庫から各ジャンルの小説任意1つを取り出すものである。

【歴史小説】菊池寛『厳島合戦』

【推理小説】江戸川乱歩『赤い部屋』

【ホラー小説】夏目漱石『夢十夜』

2-2 日本語極性辞書

 本調査は、単語感情極性対応表(高村他2006)を使用し、ジャンル別の小説の感情極性値を分析する。感情極性値は、「岩波国語辞書(岩波書店)」を参照し、語彙ネットワークを利用して計算されたものである。極性値は、-1に近いほど「消極的(negative)」と認定され、1に近いほど、「積極的(positive)」と認知される。
PN Tableicon-default.png?t=N7T8http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.html

2-3 手法

 手法は、およそ3つのステップが分けられる。1つ目は、単語極性対応表をRに取り込み、可読性を高める基本処理を行う。2つ目は、小説データの読み込み、テキストデータの下処理を行う。3つ目は、極性値辞書の適用及び結果の可視化である。具体的に、

1つ目は、単語極性対応表をRで読み込み、基本処理を行う。

#日本語極性辞書の読み込みhis<-readLines(history)
dic <- read.table("http://www.lr.pi.titech.ac.jp/ ~takamura/pubs/pn_ja.dic", sep = ":", stringsAsFactors = FALSE, fileEncoding = "CP932", encoding = "UFT-8")
#先頭15行目の内容確認
dic%>%head(15)
#lemma(V1)列を並び替えてグループ化し、重複なものを取り出し、最大値と最小値の差で要約し、その結果をDiff列に記録
dic %>% group_by(V1) %>% filter(n() > 1) %>%arrange(desc(V1))
#極性値の平均値の算出/lemma列と極性値列のみ残す/lemma列と極性値列をそれぞれの名前をTeamとSCOREに変更する
dic2 <- dic %>% arrange(V1) %>% group_by(V1) %>% summarize(SCORE =mean(V4)) %>% select(TERM = V1, SCORE)
head(dic2)

2つ目は、小説データの読み込み、テキストデータの下処理を行う。

source("http://rmecab.jp/R/Aozora.R")
#推理小説 江戸川乱歩『赤い部屋』の読み込み
detective<-Aozora("https://www.aozora.gr.jp/cards/001779/files/57181_ruby_59529.zip")
#歴史小説 菊池寛『厳島合戦』の読み込み
history<-Aozora("https://www.aozora.gr.jp/cards/000083/files/1356_ruby_35290.zip")
#ホラー小説 夏目漱石『夢十夜』の読み込み
thriller<-Aozora("https://www.aozora.gr.jp/cards/000148/files/799_ruby_6024.zip")
#下処理(歴史小説を例に)
his<-readLines(history)
head(his)
#文字処理ためのパッケージ有効化
library(stringr)
#全角スペースを削除して文単位に分割
ichibun_his<-his%>%str_remove_all(" ")%>% str_split(pattern = "(?<=。)") %>% unlist()
ichibun_his <- ichibun_his %>% str_remove_all("「|」")
ichibun_his <- ichibun_his[ichibun_his != ""]
head(ichibun_his)
#文番号を追加する
ichibun_his<-tibble(S=ichibun_his)%>%mutate(ID=row_number())
head(ichibun_his)
#最短と最長の文を提示する
ichibun_his %>% mutate(N = nchar(S)) %>% filter(N == max(N) | N == min(N))
library(RMeCab)
#反復処理を簡潔に行うパッケージ
library(purrr)
rmecabc<-function(id,sent){
#解析結果をリスト形式で返す
x<-unlist(RMeCabC(sent,1))
#tibbleを作成し、ID列・TERM列の作成
#文ごとに形態素解析をかけて、結果をデータフレームとして保存する
tibble(ID=id,TERM=x)
}
terms_his <- map2_dfr(ichibun_his$ID,ichibun_his$S, ~ rmecabc(..1, ..2))
terms_his

3つ目は、極性値辞書の適用及び結果の可視化である。

#小説のDataframeと、感情極性値辞書のDataframeを結合する
terms_his <- terms_his %>% left_join(dic2)
#結合したDataframeを文番号ごとにグループ化して、それぞれの極性値の合計を計算し、その結果を、EM列として保存する
em_his <- terms_his %>% group_by(ID)%>% summarise(EM = sum(SCORE, na.rm =TRUE))
#summary関数で要約
em_his %>% select(EM) %>% summary()
#文ごとの感情極性値合計を可視化する
em_his %>% ggplot(aes(x = ID, y=EM)) + geom_line()

3. 結果:ジャンル別の小説の感情極性値

【歴史小説】菊池寛『厳島合戦』:感情極性値の特徴値

【推理小説】江戸川乱歩『赤い部屋』:感情極性値の特徴値

【ホラー小説】夏目漱石『夢十夜』:感情極性値の特徴値

#箱ひげ図の作成
boxplot(em_his$EM,em_thr$EM,em_det$EM,names=c("history","thriller","detective"),col="grey",pch=18)

 全体的に見ると、歴史小説、ホラー小説、推理小説の文全体の感情極性値が高くとは言えない、ネガティブより近い文体である。感情極性値が最も低いのは推理小説であり(-51.0494)、3つのジャンルのうち最もネガティブなものだと言える。そして、歴史小説とホラー小説の数値はあまり差が見られないものの、多数文の感情極性値から観察すると、歴史小説はホラー小説よりネガティブだとわかった。

 また、特徴値から見ると、推理小説には感情極性値の幅が広く、最小値の「-51.0494」から最大値の「0.7618」の間に、約「52」の差が読み取れる。これは、作家の個人性が考えられるものの、推理小説は感情極性値の差が大きければ大きいほど、先の展開が読めないひねりの効いたストーリー展開ができ、読者をアピールできるのではないかと思われる。その一方、歴史小説は、ストーリーの展開より、歴史背景を説明するための説明文が他のジャンルより多いので、感情極性値の差があまり大きくないと考えられる。また、ホラー小説の平均値は、3者のうち最も高く、分析する前に予測しにくい結果だと言える。つまり、平均値と見ると、ホラー小説は最もポジティブな感情極性値を持つ小説ジャンルである。

 今回の調査は、各ジャンルの小説を1つのみ抽出して、分析されたものであり、データ量は少ないので、作者の個人性がおそよ入っていると考える。しかし、全体的な傾向としては、推理小説の感情極性値の差が最も大きいという結果が納得できるものだと考えられる。また、今後の注意点として、文章間の感情極性値を比較する際に、文長をできるだけ統一した方がいい結果の説明性が高まると思われる。

【歴史小説】菊池寛『厳島合戦』:感情極性値の特徴値

【ホラー小説】夏目漱石『夢十夜』:感情極性値の特徴値 

【推理小説】江戸川乱歩『赤い部屋』:感情極性値の特徴値

#感情極性値が最も低い文の抽出(歴史小説を例に)
> em_his %>% filter(EM == min(EM)) %>%left_join(ichibun_his) %>% select(S) %>% pull()

【歴史小説】菊池寛『厳島合戦』:Min(原文)

[1] "隆景は之より先、漁船に身を隠して、宮尾城の急を救う為、宮尾城へ入ったと書いてあるが、これは恐らく俗説で、当夜熊谷信直の部下を従え、厳島神社の大鳥居の方面から敵の兵船の間を乗り入れて、敵が咎めると、お味方に参った九州の兵だと言って易々と上陸し、塔の岡の坂下に陣して、本軍の鬨の声のあがるのを待っていた。"

【ホラー小説】夏目漱石『夢十夜』:Min(原文) 

[1] " 一通り夫の身の上を祈ってしまうと、今度は細帯を解いて、背中の子を摺りおろすように、背中から前へ廻して、両手に抱きながら拝殿を上って行って、好い子だから、少しの間、待っておいでよときっと自分の頬を子供の頬へ擦りつける。"

【推理小説】江戸川乱歩『赤い部屋』:Min(原文)

[1] "ある時はサーカスの見物人の中に混っていて、突然、ここで御話するのは恥しい様な途方もない変てこな姿勢を示して、高い所で綱渡をしていた女芸人の注意を奪い、その女を墜落させて見たり、火事場で、我子を求めて半狂乱の様になっていたどこかの細君に、子供は家の中に寝かせてあるのだソラ泣いている声が聞えるでしょうなどと暗示を与えて、その細君を猛火の中へ飛込ませ、つい焼殺して了ったり、或は又、今や身投げをしようとしている娘の背後から、突然待ったと頓狂な声をかけて、そうでなければ、身投げを思いとまったかも知れない其娘を、ハッとさせた拍子に水の中へ飛込ませて了ったり、それはお話すれば限りもないのですけれど、もう大分夜も更けたことですし、それに、皆さんもこの様な残酷な話はもうこれ以上御聞きになりたくないでしょうから、最後に少し風変りなのを一つ丈け申上げてよすことに致しましょう。"

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值