« 昔話の計量テキスト分析――桃太郎 | トップページ | 昔話の計量テキスト分析――隣の爺(模倣者) »

2026年5月11日 (月)

昔話の計量テキスト分析――桃太郎&瓜姫(異常出生譚)

◆はじめに

以下はKH Coder(無償版:version 3.Beta.08e)を用いた昔話の計量テキスト分析である。昔話の類話の比較にツールを利用できないか試行してみた。

手持ちの資料が限られるため、分析の対象となる元データの文字数が少ないものの(※本来であれば5000字以上は欲しい)、分析自体は正常に処理されていると判断した。

KH Coderの操作に慣れる目的も兼ねて行った作業で、コーディングルールの記述の事例集、あるいは速習用のチュートリアルとしてでも読んで頂ければ……といったところである。

なお、KH Coderでよく用いられるのは共起ネットワークと対応分析とのことで、それ以外はおまけパートと思って頂いて構わない。操作に習熟するにはコーディングルールの記述に慣れるのが第一である。

◆ファイル

各ファイルをダウンロードしてKH Coderに読み込ませれば同様の分析が再現可能である。

ダウンロード - ca_008_momotaroandurihime.xlsx

ダウンロード - ca_008_codingrules.txt

ダウンロード - ca_008_codingrules_b.txt (※否定詞の比較検討用)

ダウンロード - kh_coder_startingedition_sagyotejunsho.txt (※作業手順書)

※「H5」とはHTMLでいうところのヘッダー(見出し)・レベル5で本文に相当すると考えればよい。
※[コーディング単位]は「文/段落/H5」から選べるが、状況に応じて適切と思われるものを選択する必要がある。処理が上手くいかないと感じた場合、コーディング単位を切り替えると上手く処理されるケースがままある。

※公式マニュアルでは「集計単位」という用語が使われている。共起関係について、

・「文」では一文単位での分析
・「段落」では段落単位の分析
・「H5」では表計算ソフトのセル単位とされ、改行を含めた一セルの中身全体が分析単位となる

※レファレンスでも索引で「コーディング単位」の項目は設けられていない。操作性に関わる重要項目であるものの、その仕様について不明瞭な感はある。
※当ブログの場合、表計算ソフトのフォーマットで読み込ませているからH5固定でいいだろうと思い込んでいたら、さにあらずだった。

◆あらすじ

・「桃太郎」(未来社『石見の民話』)
昔、爺さんと婆さんがいた、爺さんは山へ木を伐りに、婆さんは川へ洗濯に行った。婆さんが川で洗濯していると上流から大きな桃が流れてきた。あまりに大きな桃なので爺さんと一緒に食べようと思って持って帰った。婆さんが包丁で桃を切ろうとすると桃がひとりでに割れ、中から大きな男の子が生まれた。たらいに湯を入れて洗ってやると、力の強い子でたらいを高くさしあげた。桃から生まれた桃太郎と名づけられた。桃太郎は成長して力の強い息子となった。ある日桃太郎はこれから鬼ヶ島へ征伐に行くから、きび団子を作ってくれと言った。婆さんはきび団子をこしらえて爺さんは鎧や兜をこしらえて持たせ、刀も持たせ大きな幟をこしらえてやった。桃太郎は爺さん婆さんと別れて弁当を食べていると犬が来てどこに行くか訊いた。鬼ヶ島へ行くと答えて、きび団子を与えると犬はお供となった。次に猿がやって来た。猿もきび団子を与えてお供にした。今度は雉子がやって来た。雉子もきび団子を与えてお供にした。それから丸木舟に乗って鬼ヶ島へ渡った。鬼ヶ島に行ってみると鬼が門番をしていた。雉子が鬼の目や鼻をつついて門番は中に逃げた。猿が門をよじ登って中から門を開けた。桃太郎が中へ攻め込んだ。犬はワンワン吠えて噛みつく。桃太郎は一番大きな鬼に刀を抜いて斬りかかった。鬼は金棒を振り回して桃太郎と戦ったがとうとう負けて降参した。助命する代わりに鬼たちが取った宝物を出させた。これを船に積み込んで戻った。爺さん婆さんは大喜びで、鬼からとった宝物や金を村の人に分けた。


・「桃太郎」(未来社『石見の民話』)
昔々、お爺さんとお婆さんがいた。二人の間には子供がなかったので、毎朝神さまに子供を授けてくださいと祈っていた。そうする内に一年過ぎ、二年過ぎた。ある日、お爺さんとお婆さんがいつものように神さまに祈っていると、どこからともなく、ここより北へ北へと進む内に大きな川の渕に出る。そこに大きな桃の木があって桃がなっているが、その中に一つ大きな桃がある。それを川へ落とさないように取って割ると子供が出るという声が聞こえてきた。お爺さんとお婆さんは喜んで、早速北へ北へと歩いて行った。しばらくすると大きな川があって、ほとりに大きな桃の木があった。桃が沢山なっていて、中に一つ大きな桃があった。お爺さんが木へ登って、桃を取ろうとすると枝が折れて、桃は川の中へ落ちて流れていったので、お爺さんとお婆さんはがっかりして家へ帰った。それからしばらく経って、ある日お爺さんは山へ木こりに、お婆さんは川へ洗濯に行った。お婆さんが洗濯をしていると、そこへ桃が流れてきた。


・「瓜姫」(未来社『石見の民話』)
昔あるところに爺さんと婆さんがいた。ある日爺さんは木を伐りに行った。婆さんは川へ洗濯に行った。婆さんは川で着物をすすいでいると、上の方から瓜が流れてきた。婆さんがそれを拾って食べたところ旨かったので、もう一つ流れよ、爺さんに持って帰ろうと言うと、また大きなのが流れてきた。持って帰るには難儀な大きな瓜だった。その瓜を婆さんは櫃の中に入れて爺さんが戻るのを待っていた。爺さんが帰ってきたので瓜を包丁で割ろうとすると瓜がぽっかり割れて中から可愛いお姫様が出てきた。瓜の中から出てきたから瓜姫という名にして可愛がって育てた。瓜姫が大きくなると、婆さんは糸を紡ぎ、爺さんは杼やくだをこしらえて機を織った。瓜姫は毎日機を織っていた。ある日、爺さんと婆さんは外出するので、留守中にあまんじゃくが来ても戸を開けるなと言い付けて出ていった。それで瓜姫は独りで機を織っていた。そこへあまんじゃくがやって来て姫さん、ちいと開けちゃんさいと言った。瓜姫が嫌だと言うと、そう言わんと指の入るほど開けちゃんさい。叱られたらわしが詫びるからと言って指の入るほど戸を開けさせた。今度は手の入るほど開けちゃんさいと言ったので手の入るほど開けてやった。次に頭の入るほど開けちゃんさいと言ったので頭の入るほど開けてやった。今度は身がらの入るほど開けちゃんさいと言った。瓜姫は嫌だと言ったが、あまんじゃくが自分が侘びるからと言ってとうとう中に入ってしまった。それから話をしていたが、これから柿を採りに行こうと言った。瓜姫はここから出たら爺さん婆さんに叱られるから嫌だと言ったが、爺さん婆さんの居ない内に戻ればいいと言って瓜姫を連れて柿の木谷へ出した。あまんじゃくは高い柿の木に登って採っては食いしたが瓜姫には一つもやらなかった。瓜姫には渋柿ばかり投げてよこした。瓜姫がせっかく来たのだから柿が食べたいというと、瓜姫を上がらせて、瓜姫の着ていた着物とあまんじゃくのぼろの汚い着物を交換して姫を高いところへ登らせて、葛を持ってきて姫を柿の木に縛りつけてしまった。あまんじゃくは瓜姫のきれいな着物を着て姫に化けて戻ってきて機を織っていた。そのうちに瓜姫はよいところに嫁にもらわれた。嫁入りの日が来て瓜姫に化けたあまんじゃくを駕籠に乗せて出かけた。柿の木谷を通ろうか栗の木谷を通ろうかと言うとあまんじゃくが栗の木谷を通ろうと言った。そこで栗の木谷を通ったが、栗のいがが足にたってやれないので引き返して柿の木谷を通った。柿の木の下を通ると瓜姫があまんじゃくが嫁入りすると言って泣いた。爺さんが上を見ると瓜姫が縛られているので、駕籠の中のはあまんじゃくが化けていることに気づいて、瓜姫は縄を解いて下ろして、あまんじゃくは引きずり出して三つに切った。粟の木に一切れ、麦の根に一切れ、蕎麦の根に一切れ埋めた。するとそれらの根は赤くなった。瓜姫はきれいな着物に着替えて嫁入りをした。


・「蛤姫」(未来社『石見の民話』)
昔、一人の若い漁夫がいた。毎日海へ出て魚を獲って、それを町で売って生計を立てていた。ある日、いつもの様に舟で漁をしたが、一尾もかからなかった。もう一度釣ってかからなかったら今日はやめようと思って最後の糸を投げ込んだ。しばらくすると手応えがある。やっとのことで引き上げてみると、見たこともない様な珍しい蛤だった。びっくりして見とれていると、蛤が二つに割れて中からきれいな女の子が出てきた。漁夫は喜んで家へ連れて帰り、蛤姫と名をつけて大切に育てた。姫は大きくなるにつれてますます美しくなった。そして姫は機を織ることが大変上手で、その織物は何ともいえぬ美しさだった。漁夫はそれからは漁をやめ、姫の織った反物を町に売りに出て、たくさんの金を儲け、楽しく暮らした。姫は美しい反物を織るばかりでなく、機を織る音がまるで美しい音楽のようだった。それを聞いた人たちが姫の機を織る様子を見ようと漁夫の家に押しかけてきたが、姫はなぜか一室に閉じこもって、戸を固く閉め、機を織る姿を誰にも見せなかった。ある日、漁夫はいつも通り、反物をもって町へ出かけた。ある一軒の大きな家で呼び止められ、たくさんの金で買い取られた。よい物を買った。お礼にと座敷に上げ、ご馳走やお酒でもてなした。漁夫はよい気分で酔い潰れてしまった。家では蛤姫が今日も一人、一室で美しい音をたてながら、とんとんからりと機を織っていた。すると近所の人たちがやって来て、今日は漁夫が帰っていないから、戸を開けてみようではないかと相談して、部屋へそっと近寄るといきなり戸をあけてのぞき込んだ。蛤姫はびっくりして機を織る姿を見られたら、もうここにいることはできない。蛤の中へ帰ると言って消えてしまった。


※「桃太郎」は邑智篇と石央篇とに同一タイトルで収録されている。便宜上、abと分記した。

◆コーディングルール

※コーディングルールのキーワードは重要と判断したものを人力でピックアップしている。そのため、恣意性を伴う分析となる。

※活用形でなく基本形で入力する。

※[前処理]→[語の抽出結果を確認]でキーワードがどのように分節されているか検索すると結果の一覧[語の抽出結果]が表示される。

※[Result]から確認したい行をクリックして選択、画面下の[詳細表示]ボタンをクリックするとサブ画面が表示され、活用形や基本形が確認できる。

※昔話では「否定/肯定」「肯定/否定」と属性が変化することが多いと考え、否定詞「ない」「まい」「ぬ」「ん」、また禁止を意味する「な」を共通のコードとして設定している。

※「できる」「やる」「られる」「せる」といった動詞も共通のコードとして追加してみた。

※[関連語検索]で否定詞の共起語の一覧を表示させたところ、日本の昔話のように掌編レベルのボリュームだと、物語の動因となる箇所に関する語句が上位に表示される傾向が強いのではないか……といった印象があり、検証作業中である。

※無償版では強制抽出語の指定が機能制限で事実上使用できないため以下のような手法をとっている。


*爺さん
爺さん or お爺さん
*婆さん
婆さん or お婆さん
*鬼ヶ島
'鬼ヶ島'
*きび団子
'きび団子'
*舟
舟 or 船
*瓜姫
'瓜姫' or 'お姫様'
*あまんじゃく
'あまんじゃく'
*柿
柿 or 渋柿
*漁夫
'漁夫'
*蛤姫
'蛤姫'
*開ける
開ける or あける
*酔いつぶれる
酔いつぶれる or 酔い潰れる

*ない
ない
*ぬ

*ん

*るな
'るな'
*るまい
'るまい'

*できる
できる
*やる
やる
*られる
られる
*せる
せる

*山

*川

*洗濯
洗濯
*大きい
大きい
*桃

*割れる
割れる
*男の子
男の子
*強い
強い
*桃太郎
桃太郎
*征伐
征伐
*お供
お供
*宝物
宝物
*子供
子供
*神さま
神さま
*祈る
祈る
*北

*渕

*木

*落ちる
落ちる
*流れる
流れる
*がっかり
がっかり
*瓜

*機

*織る
織る
*入れる
入れる
*戸

*着物
着物
*縛る
縛る
*嫁入り
嫁入り
*切る
切る
*根

*赤い
赤い
*蛤

*女の子
女の子
*反物
反物
*儲ける
儲ける
*見せる
見せる
*のぞく
のぞく
*消える
消える


◆共起ネットワーク

・[ツール]→[コーディング]→[共起ネットワーク]でオプション画面が表示される。
・[コーディング単位]を[H5]に設定する。

※[描画する共起関係(edge)の選択]で「係数」を「0.2」から「0.3」に修正する。
※[強い共起関係ほど濃い線に]にチェックを入れる。

Jaccard係数が0.3以上はかなり強い共起関係にあることを示しているが、分析対象となる元データの文字数が少ないため係数が高めに出てしまう傾向にあるため、こうしている。

※Jaccard係数は共起関係(※ある言葉に続いて出てくる関係)の強さを表し 0≦係数≦1 の範囲の値をとる。

【Jaccard係数】
・0.1 →関連あり
・0.2 →強い関連あり
・0.3以上 →とても強い関連あり
※ただし、あくまで目安であって絶対ではない。

共起ネットワーク

ざっと確認したところ、共通するキーワードが中央のサブグラフ(バブルが島状に集まった一塊)に表示され、類話毎に異なるキーワードが上下のサブグラフに表示される形となっている。

※なお、各バブル間の距離や配置に意味はない。

◆対応分析

・[ツール]→[コーディング]→[対応分析]でオプション画面が表示される。
・[コーディング単位]を[H5]に設定する。

※[外部変数]は[タイトル]のまま続行。
※[差異が顕著なコードを分析に使用]で上位「40」とした。また[バブルプロット]にチェックを入れている。これらは文字の重なりを極力避けるためである。
※文字が重なって読みづらい場合、オプション画面の[コード選択]で不要なコードのチェックを外してもよい。

対応分析

x、y軸上の原点(0.0)から点線が伸び交差した箇所が原点となる。原点から離れるほど特徴的なキーワードだと分析される。

原点付近には「川」「洗濯」「婆さん」といったキーワードがプロットされている。離れた位置にプロットされているのは邑智篇の「桃太郎」では「桃太郎」「鬼ヶ島」「きび団子」、石央篇の「桃太郎」では「落ちる」「がっかり」「神さま」、「瓜姫」では「あまんじゃく」「瓜姫」「るな」、「蛤姫」では「蛤姫」「漁夫」「できる」といった辺りである。

◆解釈

特殊な出生、異常出生譚に関するお話である。男児は英雄、女児は織姫といった風に立ち位置が異なるが、いずれも尋常でない能力を発揮する。また、「瓜姫」では戸を「開けるな」、「蛤姫」では「見るな」といった禁止が侵犯される展開となっているのも特徴である。

◆階層的クラスター分析

・[ツール]→[コーディング]→[階層的クラスター分析]でオプション画面が表示される。
・[コーディング単位]を[文]に変更、実行するとデンドログラム(樹状図)で可視化される。

※キーワード指定しても可。

階層的クラスター分析・デンドログラム(樹状図)
階層的クラスター分析・デンドログラム(樹状図)

概ねストーリー展開に沿った形でクラスター化されている。

◆クロス集計

・[コーディング単位]を[文]に変更、[タイトル]で[集計]する。

クロス集計

クロス集計をかけたところ、「鬼ヶ島」「きび団子」「瓜姫」といったキーワードでカイ(χ)2乗値で相関関係を示す結果(※マーク)が得られた。

クロス集計・バブルマップ

マップとして描画したところ、「瓜姫」「あまんじゃく」「漁夫」「蛤姫」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「婆さん」「瓜」が大きく描画された。

◆KWICコンコーダンス

現状ではテキストマイニングのツールに文脈を読む性能はないため実際に該当箇所を読んで人力で判断する他ない。KWICコンコーダンスでキーワード指定すれば指定したキーワードがどのような文脈で用いられているか一覧で抽出される。

KWICコンコーダンス
KWICコンコーダンス・文書表示

◆関連語検索

・[集計単位]を[文]に変更、[集計]する。
・[Search Entry:]の一覧からキーワードを選択してダブルクリックすると[Result]に指定したキーワードの品詞や共起関係が表示される。

関連語検索

※[Result:]から行指定してダブルクリックするとKWICコンコーダンスに遷移する。
※[Result:]の一覧から範囲指定して[コピー]したものを表計算ソフトやテキストファイルにペーストすることも可能である。

[#直接入力]を指定して「出る」といったキーワードで検索すると関連語が一覧で表示される。

関連語検索

◆属性の転倒

・「ない」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 見る 動詞  4 (0.042)  3 (0.231) 0.2143
2 柿の木 地名  6 (0.063)  3 (0.231) 0.1875
3 名詞C  8 (0.084)  3 (0.231) 0.1667
4 出る 動詞  9 (0.095)  3 (0.231) 0.1579
5 祈る 動詞  2 (0.021)  2 (0.154) 0.1538
6 姿 名詞C  2 (0.021)  2 (0.154) 0.1538
7 子供 名詞  2 (0.021)  2 (0.154) 0.1538
8 神さま 名詞  2 (0.021)  2 (0.154) 0.1538
9 織る 動詞  10 (0.105)  3 (0.231) 0.15
10 今日 副詞可能  3 (0.032)  2 (0.154) 0.1429

・「るな」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 外出 サ変名詞  1 (0.011)  1 (1.000) 1
2 言い付ける 動詞  1 (0.011)  1 (1.000) 1
3 留守 サ変名詞  1 (0.011)  1 (1.000) 1
4 名詞C  4 (0.042)  1 (1.000) 0.25
5 来る 動詞  4 (0.042)  1 (1.000) 0.25
6 開ける 動詞  6 (0.063)  1 (1.000) 0.1667
7 出る 動詞  9 (0.095)  1 (1.000) 0.1111
8 婆さん 名詞  14 (0.147)  1 (1.000) 0.0714
9 爺さん 名詞  14 (0.147)  1 (1.000) 0.0714

特別な生まれ方をした男児や女児が活躍する……といった粗筋となっている。

短いお話の中で属性の転倒を多用するのが昔話の特徴の一つと考えられる。

ここで「/」(スラッシュ)を「転倒」を意味する記号として用いる。スラッシュは様々な場面で用いられていて文脈依存的な記号という欠点もあるが、視覚的にはイメージしやすいと判断した。

・[婆さん|桃:拾う/誕生]
・[婆さん|瓜:拾う/誕生]
・[漁夫|蛤:釣る/誕生]
・[桃太郎|鬼:略奪/退治]
・[あまんじゃく|瓜姫:化ける/斬られる]
・[蛤姫|姿:見られる/消える]

こういった風にお話を転がしていると分析できる。婆さんが拾った瓜は「瓜/女の子」と転倒、以降の瓜姫の粗筋へと繋がっていく。蛤姫は機織りの姿を見られた結果、「いる/いられない」と転倒し、消えてしまう。

※なお、図式化には分析対象のテキストに含まれない語句も用いているので要注意。

※関連語検索、強制抽出語を設定しないと狙い通りに処理されないケースが見られる。

◆類似度行列

・[コーディング単位]を[文]に変更して[集計]。Jaccard係数がマトリクス形式で確認できる。

類似度行列

「あまんじゃく」には禁止の「な」が共起していることが分かる。

・ある列を選択して画面右下の[コピー(選択列)]をクリックすると、当該のキーワードに関するJaccard係数がコピーされるので、それを表計算ソフトにペーストするといった利用が可能となる。

※当ブログでは[コーディング単位]が[段落][H5]の場合、Jacccard係数が1.0~0.5といった結果がほとんどで、意味のない結果となった。

◆多次元尺度構成法

・[ツール]→[コーディング]→[多次元尺度構成法]でオプション画面が表示される。
・[コーディング単位]を[H5]から[文]に変更。
・[クリア]ボタンをクリックしてコード選択を一旦リセット、共起関係を確認したいキーワードを指定。
・次元を「2」から「3」に変更して実行、三次元のマップとした。

多次元尺度構成法

「見るな」「開けるな」といった禁止のくだりに関連したキーワードを指定したところ、「るな」が離れた位置にプロットされた。

※選択するキーワードによって相対的な位置関係は変わり得る。

※実行すると指定したキーワードの幾つかが除外されるとメッセージが表示される。テキストのボリューム不足のためか無償版の仕様によるものか判断がつかない。
※当ブログの事例では「文」以外、「段落」「H5」では除外されるキーワードが増える傾向となった。

◆自己組織化マップ

・[ツール]→[コーディング]→[自己組織化マップ]でオプション画面が表示される。
・[コーディング単位]は[文]で固定。

自己組織化マップ

記述内容が視覚的に整理され、類似性の高い内容が近くに配置される。概ねストーリーに沿った形で各クラスターが表示される。

※クラスター化の計算を繰り返すため処理に時間がかかるので要注意。
※クラスターの配置、距離に意味はない。

◆トピックの推定

・[ツール]→[文書]→[トピックモデル]→[トピックの推定]を選択。
・[集計単位]は[文]で固定。
・[OK]ボタンをクリックすると、[トピックの推定結果]画面が表示される。

トピックの推定

・各トピックで高い確率で出現する語句がリストアップされる。
・[#1]といった欄をクリックすると、文書検索画面が表示される。

トピックの推定・文書検索

◆ベイズ学習による分類

・[ツール]→[文書]→[ベイズ学習による分類]→[外部変数から学習]を選択。
・[分類の単位]を[文]に変更。
・[学習する外部変数]は「利用不可」。
・[OK]ボタンをクリックすると、ファイルの保存画面が表示されるので、任意のファイル名を記述して保存する。

・[ツール]→[文書]→[ベイズ学習による分類]→[学習結果ファイルの内容を確認]を選択。ファイル選択画面が開くので、先ほど保存したファイルを指定して開く。すると[学習結果ファイル]画面が開くので内容の確認を行う。

ベイズ学習による分類

※[学習結果を用いた自動分類]については割愛する。

※[トピックの推定]と[ベイズ学習による分類]は固有名詞などを強制抽出語としてあらかじめ指定しておかないと正確に分析されないケースが生じる。正式に利用したい際は有償版の購入をお勧めする。当ブログのはあくまでテストケースとしてのものである。

※[トピックの推定]と[ベイズ学習による分類]はコーディング・ルールに依らない分析手法となるが、筆者の能力的に追及はしない。

◆参考文献

・『日本の民話 34 石見篇』(大庭良美/編, 未来社, 1978)pp.46-48, 123-128, 129-133, 284.
・『動かして学ぶ!はじめてのテキストマイニング』(樋口耕一, ナカニシヤ出版, 2022)
・『社会調査のための計量テキスト分析 【第2版】 内容分析の継承と発展を目指して』(樋口耕一, ナカニシヤ出版, 2020)

|

« 昔話の計量テキスト分析――桃太郎 | トップページ | 昔話の計量テキスト分析――隣の爺(模倣者) »

昔話」カテゴリの記事