霞と側杖を食らう

ほしいものです。なにかいただけるとしあわせです。[https://www.amazon.jp/hz/wishlist/ls/2EIEFTV4IKSIJ?ref_=wl_share]

怪異・妖怪伝承との衝動遊戯:第1ゲーム

【ABSTRACT】

怪異の専門家に手っ取り早くなるために、怪異・妖怪伝承データベースのデータに対して、Rとテキストマイニング(自然言語処理データマイニング)の手法を用いて、怪異について学習する。

【OBJECTIVE】

モラトリアムが終わろうとしている。このまま就職して本当に良いのだろうか。そんな疑問が頭を過ぎる。就活をしているとき、自分の過去と向き合って、やりたいことを探していた。面接でしゃべるためだけの志望理由を探すために。
そんな過去への省察をもう一度やってみた。すると、一人の男が思い浮かんだ。忍野メメである。忍野メメは、西尾維新の『化物語』と、それに続くシリーズの登場人物で、怪異・妖怪変化の類の専門家である(化物語は、高校生の頃、初めて見た深夜アニメだったように思う。表現の仕方が独特で、アニメが面白いものだと気付くきっかけだった。このままでは脱線してしまうので、これ以上は語らない。)。 忍野メメは一見、胡散臭いが、実際は頼りになる人物で、とても魅力的に感じていた。そうだ、怪異の専門家になってみよう。それが今回の遊びの目的である。
ところで、怪異とは何なのか。忍野メメによると、
「人間がそこにあると思うからそこにあるもの、それが怪異」
とのことである。

【METHODS】

データは、国際日本文化研究センターが作成した『怪異・妖怪伝承データベース』を利用する。 国際日本文化研究センター | 怪異・妖怪伝承データベース
データを検索すると、それぞれのカードに、番号、呼称、出典、話者(引用文献)、地域、要約、貼り付け事例がある。要約の項の説明に、「貼り付け事例からピックアップした民俗語彙や特徴、行為、怪異・妖怪現象の本質などを、100字程度の文章形式にまとめたもの。なお、データには現在の観点からみて不適切と判断される表現も含まれているが、データの資料性を重視して、貼り付け事例に従って表記した。」とある。要約のところだけをスクレイピングで抽出して集めることにする。

データベースには、全部で35701件の事例データがあるが、さすがに全部扱うのは厳しい。代表的な怪異である「オニ」を取り扱う。「オニ」には「ウシオニ」、「オニババ」、「オニビ」などあるが、「オニ」として登録されているものだけを取り扱う。全部で496件である。

そのうちの1件を具体的に見てみることにする。これはオニの検索結果で一番上に表示されたデータである。 http://www.nichibun.ac.jp/YoukaiCard/0640010.shtml
要約の項目には、「昔、鬼が毎年現れて田畑を荒らした。村人は困り、もし一夜のうちに100段の石段を作れなければ、以後、姿を現さないと鬼に約束させた。ある夜、鬼が石段をつくり、あと一つで100段というところで、一番鶏が鳴いたので、鬼は姿を隠してしまった。」とある。

これらの要約部分を抽出して集めていく。スクレイピングはrvestパッケージで、read_html()とhtml_table()で、できると思ったのだが、496件中105件、謎の文字化けが発生してしまった(文字化けって怪異では?)。解決方法が分からなかったので、別の方法を探すことに。XMLパッケージのreadHTMLTable()も使えるみたいなので、やってみたら、文字化けを起こさずに上手くいった。無事、要約を抽出した496件のtxtデータが入手できた。このへんのコードは第2ゲームに載せる予定。

さて、データは得られた。35701件を496件に絞り込んだと言えども、全部を読んで頭に入れている時間は無いので、テキストマイニングの力を借りて、オニという怪異の特徴を把握する。頻度集計、ワードクラウドでオニ全体の特徴をつかみ、トピックモデルを用いて、各オニを分類してみて、傾向をつかんでみる。

【RESULTS】

頻度集計

オニ全体の特徴をざっくりと把握するため、496件のデータをひとまとめにして頻度集計を行う。 まず、自立語(動詞、形容詞、形容動詞)についての頻度集計の結果がこちら。
f:id:moratoriamuo271:20181024033654p:plain
食べる、死ぬ、殺す 、さらうなどのおどろおどろしい言葉が見られる。
次に、名詞についての頻度集計の結果がこちら。
f:id:moratoriamuo271:20181024034149p:plain
鬼が多いのは当然として、退治するケースが多そう。他に、節分、豆、正月、菖蒲といった言葉が目立ち、鬼の来る季節というのがありそう。月が気になってデータベースを検索してみたら、月と関係する話もあるが、大半は何月の話かという月が多かった。夜という言葉も多い。オニは夜行性のようだ。目や首は、オニの話なのか、人の話なのか、ここからは分からない。

ワードクラウド

はてなブログ映えを意識して、ワードクラウドによる可視化も行ってみた。これもひとまとめにしたデータで行った。
f:id:moratoriamuo271:20181024035104p:plain
オニのイメージはこんな感じということだ。

トピックモデル

496件のオニに関する怪異・妖怪伝承データをトピックモデルによる分類を行った。
トピック数は30にして、よく出る言葉を並べたものを用意した。30にしたのは、3,4,5,10,20,30と色々やってみて、解釈しやすかったから。 f:id:moratoriamuo271:20181024050434p:plain
トピック1は夫婦ものの話だろう。金と血が出ているのが少し怖い。トピック2は季節は秋で兄弟ものだ。
トピック3は鬼の形相を書いているものだろうか。赤や青、角、歯と鬼の描写かと思われる。トピック4は晩に山からやってきて妹か息子を鬼が殺してしまった話か。 トピック5は自然と関係する。トピック6は池周辺の家の話か。 トピック7は正月の話で、ショウブが関係する。菖蒲といえば、端午の節句では、と思ってググってみたら、食わず女房という話が日本にはあるらしい。これだ。
食わず女房 - Wikipedia
トピック8は山と狐と集落と仕業が気になる。トピック9はトイトイが気になったが、麻雀は関係なく、鳥のことらしい。
トピック10は正月に門松で厄除けという話だろう。トピック11は部落の神社と弓の話か。
トピック12は退治の話だろうか。トピック13は節分の話だ。トピック14はお地蔵さんに団子でもお供えして鬼から身を守ったのだろうか。トピック15は鬼は外、福は内の話だ。
トピック16は僧が鬼を追い払うかと。トピック17は旅人が泊まった家の山姥の正体が鬼だったとかではないか。天井から隠れて見ていた話かもしれない。
トピック18は綱が気になってデータベースを見てみたら、綱と名がつく人の話がいくつか見られた。渡辺綱という名前がよく出てきて調べてみると、
渡辺綱 - Wikipedia
平安時代の武将で、源綱ともいう。羅生門の話と関係があり、一条戻橋が舞台の話の書き換えなんだとか。
トピック19は霧のかかった川を船で渡っていたら子供が連れ去られたとかだろうか。トピック20は節分にイワシの頭と柊を戸口にって話だ。トピック21は剣で目玉を刺したとかか。
トピック22は端午の節句だ。菖蒲。ヨモギ。トピック23は罪人が地獄に落ちて、鬼にいじめられているところを神が救おうとしたとかではないか。
トピック24は大晦日が気になった。データベースを覗いてみると、大晦日は鬼が家に入らないように各地でいろんな工夫をしているみたいだった。
トピック25は相撲が気になった。鬼と相撲するケースがいくつかあるようだ。 朝鮮の話では、鬼と箒が関係あるらしい。中でも笑ったのが、この話で、
http://www.nichibun.ac.jp/YoukaiCard/1231055.shtml
「ある人が鬼と相撲を取った。倒してみると、正体は便所の箒に鼻血がついたものだった。」というものだ。
トピック26は庄屋が気になる。庄屋とは村長のような存在らしい。村に鬼がやってきて困ったとかって話か。
トピック27は勅命。退治する命令でも下ったのだろう。トピック28は山鳥が気になる。夢のお告げや山鳥の尾で作った矢が関係するらしい。
トピック29は酒呑みが関係しそうである。興味深い。トピック30は鶏の鳴きと博打が気になる。博打を調べてみると鬼が博打してる話が何件も出た。
トピックの解釈はこんな感じだろう。分類してみると、新しい発見もあるものだ。

【CONCLUSIONS】

スクレイピングでは、文字化けという名の怪異に憑りつかれて、なかなか眠りにつけなかった。周囲の友人からも、最近元気ないねと心配される次第であった。
分析上の課題としては、盛り沢山である。
word2vecは試してみたい。時間の制約上、今回は、できなかった。
トピックモデルについては、LDAでトピック数を雰囲気で決めてしまったが、ldatuningというパッケージがあるらしいので、これを使って、トピック数を決定してみるべきだった。
ディリクレ過程を使ったノンパラベイズによるトピックモデルならば、トピック数を事前に決めなくても良いらしいのだが、まだキャッチアップできていない。というか、そもそもトピックモデルを理論的に把握していないので、学習に努めたいところ。
解釈には、やはりドメイン知識が不可欠だ。柳田國男あたりを読んで伝承に詳しくなるべきかもしれない。
今回はオニにのみ注目したが、他の知らない怪異を見てみるのもよいかもしれない。さらに、最近発見したのが、 まんが日本昔ばなしのデータベースだ。
まんが日本昔ばなし〜データベース〜 - 1975年〜1994年、TBS系列で放送されたTVアニメ「まんが日本昔ばなし」の全話総まとめ、全話あらすじデータベースです。
これを使ってスクレイピングして、分析するのも面白そうだ。

コードや分析の詳細は別記事に追記する予定で、第2ゲームで、RMarkdownでHTML変換して貼り付ける予定。
【2018/10/25に貼り付けました。】
怪異・妖怪伝承との衝動遊戯:第2ゲーム - 霞と側杖を食らう

スクレイピングテキストマイニングの入門には多少成功したようには思うし、スクレイピングテキストマイニングの力を借りて、怪異の専門家に少しは近付けたように思う。怪異の専門家の力を借りたくなったら、ご連絡ください。力は貸します。助けはしません。一人で勝手に助かってもらうだけですが。

ところで、
「人間がそこにあると思うからそこにあるもの、それが怪異」
という怪異の説明を最初に挙げた。
これは統計モデリングと似ていないだろうか。
何か不思議な現象があったとする。怪異の専門家ならば、現象を、見えない何かによるものとして、その何かを怪異と呼ぶだろう。 統計家ならば、現象を、確率分布(統計モデル)によるデータ発生と捉えるだろう。怪異の専門家も統計家もやっていることの本質は同じなのであった。

【REFERENCES】

・『R Advent Calendar 2017 rvestを用いてポケモンデータをスクレイピング&分析してみた』
R Advent Calendar 2017 rvestを用いてポケモンデータをスクレイピング&分析してみた | かものはしの分析ブログ
スクレイピングの際に、参考にしました。

・『readHTMLTable:R から HTML の表を読み込む』
readHTMLTable:R から HTML の表を読み込む - 廿TT
XMLパッケージのreadHTMLTable()で、tableの読み取りができることに気付かせていただきました。

・小林『Rによるやさしいテキストマイニング: 機械学習編』
Amazon CAPTCHA
これを読んでテキストマイニングの仕方を学びました。読んだときの記録は昔書きました。
Rによるテキストマイニング(機械学周編)の学習記録 - 霞と側杖を食らう

・石田・市川・瓜生・湯谷『Rによるスクレイピング入門』
http://amzn.asia/d/clK9Tjm
スクレイピングの学習に使っています。

国際日本文化研究センター『怪異・妖怪伝承データベース』
国際日本文化研究センター | 怪異・妖怪伝承データベース
データベースを利用させていただきました。