« ロピアが広島に進出とのこと | トップページ | 昔話の計量テキスト分析――舌切雀 »

2026年4月 4日 (土)

昔話の計量テキスト分析――猿婿

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_pb_026_sarumuko.xlsx

ダウンロード - ca_pb_026_codingrules.txt

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

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

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

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

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

◆あらすじ

・「猿の嫁さん」(未来社『石見の民話』)
昔、あるところにお爺さんがいた。ある日山へ行って畑をうっていたが、何分年をとっているので骨が折れて仕方ない。少しうっては休み、少しうっては休みしていた。その内にとうとうくたびれ込んでしまって、ああ、何ともしんどくていけない。誰か来てうってくれないかと独り言を言った。すると、ほとりの山から猿が一匹出てきた。お爺さん、あんたの娘をわしの嫁にくれ。畑をうってあげるからと言った。お爺さんはもうすっかりくたびれてしんどくていけないので喜んで、それはありがたい。娘はやるからうってくれと言った。猿は大喜びで、お爺さんの鍬をとると一寸の間にその畑をうってしまった。夕方になってお爺さんは猿を連れて家へ帰ってきた。二人の娘たちは湯を沸かして待っていた。お爺さんは足を洗ってあがると、今日のことを詳しく話して、姉娘にこういう訳だから、お前猿の嫁に行ってくれと言った。姉娘はすっかり腹をたてて、馬鹿を言うな、自分は一生涯嫁にいかなくても猿の嫁になど行きはしないと言った。お爺さんは仕方がないので、今度は妹娘に頼むと、それでは自分が行くから、鏡と大きな水瓶を一つ買ってくださいと言った。お爺さんが鏡と大きな水瓶を買ってやると、娘は鏡を懐に入れて、猿の婿に水瓶を負わせた。そして婿と花嫁は連れだって猿の家へ行った。途中に川があって橋がかかっていた。橋の中ほどまで行くと、嫁の鏡が川の中へ落ちた。早く行って取ってきてください。早く行かないと流れると言って大騒ぎをした。猿はびっくりして大きな水瓶を背負ったまま川へ入ったので、水瓶の中へ水が入って上がることができない。とうとう溺れ死んでしまった。そこで娘は家へ帰ってきた。姉娘はとうとう一生涯嫁入りをしなかった。


・「ひょうたん五十こ」(日本標準『島根のむかし話』)
昔、あるところに爺さんと三人の娘がいた。ある日、爺さんが広い広い畑を打っていたら、猿がやって来て、自分が畑を打つから娘をくれと言った。爺さんは承諾して猿に畑を打ってもらった。それから爺さんは家に帰って寝た。ところが朝になっても中々起きてこなかった。そこで一番上の娘が爺さんのところへ来て調子を訊いた。爺さんはどこも悪くないが、お前、猿のところに嫁に行ってくれないかと言ったら、誰が行くものかと逃げてしまった。今度は中の娘が来たのでまた言ったら、嫌だ。誰が行くものかと言って中の娘も逃げた。今度は一番末の娘が来たので、また言ったら、それでは行くから、ひょうたんを五十ほど買ってくださいなと言ったので、爺さんは喜んで買った。猿が迎えに来たので、娘はひょうたんを持ってついて行った。途中に川があったので、持って来たひょうたんを川へ流し、猿にあのひょうたんを拾ってくれたら本当にあなたの嫁になると言った。猿は娘の言う通り川へ飛び込んだが、ひょうたんが水の中でくるり、くるりと回ってよく拾えなかった。それでとうとう猿は溺れて死んでしまった。


・「猿婿」(ハーベスト出版『夕陽を招く長者』)
昔々、あるところに爺さんと婆さんがいた。爺さんは畑を耕しに行った。暑い日で、爺さんはくたびれていた。そこへ猿がやって来て、爺さんの娘を自分にくれたらこの畑をみんな耕してあげると言った。爺さんはあまりにしんどいので、それなら一人やるから耕してくれと頼んだ。そうしたら、猿は一生懸命になってその畑をみんな綺麗に耕した。爺さんは家に帰って娘に頼まなければいけない。一番姉の娘が朝、爺さんを起こしにいった。爺さんはお前が猿の女房になってくれれば目も覚めようが、そうでなければ茶も喉を通らないと言ったら、「あかいやのとうべい」と姉娘は尻を叩いて逃げた。それで大変なことだと思っていたら、中の娘が起こしに来たので、またお前が猿の女房になってくれれば目も覚めようが、そうでなければ茶も喉を通らないと言ったら、「あかいやのとうべい」と言って中の娘も駆けて逃げた。いよいよ爺さんは猿に申し訳がない。どうしたらよいかと途方に暮れていた。そこへ一番下の妹がやって来たので、爺さんはお前が猿の女房になってくれれば目も覚めようが、そうでなければ茶も喉を通らないと言ったらと言った。そうしたら、それは楽なことだ。自分が猿の女房になると言った。爺さんは喜んで何か欲しいものはないかと聞くと、大きな瓶が一つ欲しい。もう一つ、鏡が欲しいと妹娘は言った。それは楽なことだと爺さんは大きな瓶と鏡を持たせた。そうしたら、約束通りに猿が迎えに来た。いよいよ嫁に行くというので、猿が何か下げていくものはないかと聞くと、妹娘は親に貰った大きな瓶があるから、ひとつそれを負うてくれないかと言った。そこで、大きな瓶を猿へがんじがらめに結いつけて、どんどん奥へ行ったら、大きな川へ行きかかった。そこで猿がここを向こうへ渡ると言うと、妹娘はそれならあなたが先に渡りなさいと答えた。猿がだんだん深い所へ行くと、嫁が泣き出した。何が悲しいのか問うと、形見に貰った鏡が落ちたと泣いた。心配するな、自分が取ってやると猿が聞くと、妹娘は鏡を下げていて、だんだん他の方へ向けて鏡を映していくから、どこまででも鏡が行くので、猿はそれを拾おうと思う。一生懸命ずっと追って行ったら、背に負った瓶に水ががぶがぶと入って沈んだ。そうして妹娘はさもやったような顔をして、婿が死んだからもう行くことはないと戻った。


◆コーディングルール

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

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

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

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

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

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

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


*打つ
打つ or うつ or 耕す
*しんどい
( 骨 and 折れる ) or しんどい
*嫁
嫁 or 花嫁 or 女房
*姉娘
'姉娘' or ( 上 and 娘 ) or ( 中 and 娘 ) or ( 一番 and 姉 and 娘 )
*馬鹿
馬鹿 or 'あかいやのとうべい'
*妹娘
'妹娘' or ( 末 and 娘 ) or ( 下 and 妹 )
*瓶
水瓶 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)から点線が伸び交差した箇所が原点となる。原点から離れるほど特徴的なキーワードだと分析される。

原点付近に「猿」「姉娘」「畑」「死ぬ」といったキーワードが多数プロットされている。未来社版では「橋」「嫁入り」「独り言」といったキーワードが原点から離れてプロットされている。日本標準版では「ひょうたん」「溺れる」といったキーワードが特徴的なキーワードとされている。ハーベスト出版版では「婆さん」「泣く」といったキーワードが特徴的なキーワードとされている。

◆解釈

いずれも同じような内容である。ハーベスト出版版では婆さんが登場するが特に活躍しない。未来社版では姉妹二人であるところ、日本標準版とハーベスト出版版では三人娘であるといった違いがある。「あかいやのとうべい」という言葉は意味不明だが魅力的である。

◆階層的クラスター分析

・[コーディング単位]を[文]に変更、実行するとデンドログラム(樹状図)で可視化される。

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

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

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

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

※当ブログの場合、[コーディング単位]が[段落][H5]だと、コードを全て選択するとエラーが返される結果となった。

◆クロス集計

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

※「タイトル」で集計をかけた。

クロス集計

クロス集計をかけたところ、「爺さん」「ひょうたん」といったキーワードでカイ(χ)2乗値で相関関係を示す結果(※マーク)が得られた。

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

マップとして描画したところ、「ひょうたん」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「爺さん」「娘」が大きく描画された。

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 言う 動詞  22 (0.328)  10 (0.500) 0.3125
2 名詞C  27 (0.403)  9 (0.450) 0.2368
3 名詞C  28 (0.418)  9 (0.450) 0.2308
4 行く 動詞  15 (0.224)  6 (0.300) 0.2069
5 爺さん 名詞  19 (0.284)  6 (0.300) 0.1818
6 名詞C  7 (0.104)  4 (0.200) 0.1739
7 覚める 動詞  3 (0.045)  3 (0.150) 0.15
8 名詞C  3 (0.045)  3 (0.150) 0.15
9 名詞C  3 (0.045)  3 (0.150) 0.15
10 通る 動詞  3 (0.045)  3 (0.150) 0.15

爺さんの独り言が思わぬ難題となってしまうが、末娘の知恵で解決する……といった粗筋となっている。

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

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

・[爺さん|畑:独白/難題]
・[末娘|爺さん:難題/解決]
・[猿|水:生/死]

こういった風にお話を転がしていると分析できる。末娘は「娘/花嫁」と転倒してしまうが、難題を解決することで「花嫁/娘」へと再転倒する。

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

・[コーディング単位]を[文]に変更して実行。
・共起関係を確認したいキーワードを指定。
・次元を「2」から「3」に変更して実行、三次元のマップとした。

多次元尺度構成法

姉娘の粗筋に関連したキーワードを指定したところ、「嫁入り」が離れた位置にプロットされた。これは妹娘に関する言葉だからと思われる。

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

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

◆自己組織化マップ

[コーディング単位]を[文]に変更して実行。

自己組織化マップ

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

※当ブログの事例では「文」以外、「段落」と「H5」ではエラーが返される結果となった。
※クラスター化の計算を繰り返すため処理に時間がかかるので要注意。
※クラスターの配置、距離に意味はない。

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献
・『日本の民話 34 石見篇』(大庭良美/編, 未来社, 1978)pp.409-411.
・『島根のむかし話』(島根県小・中学校国語教育研究会/編著, 日本標準, 1976)pp.199-201.
・「夕陽を招く長者 山陰民話語り部シリーズ1」(民話の会「石見」/編, ハーベスト出版, 2013)pp.71-75.
・『動かして学ぶ!はじめてのテキストマイニング』(樋口耕一, ナカニシヤ出版, 2022)
・『社会調査のための計量テキスト分析 【第2版】 内容分析の継承と発展を目指して』(樋口耕一, ナカニシヤ出版, 2020)

|

« ロピアが広島に進出とのこと | トップページ | 昔話の計量テキスト分析――舌切雀 »

昔話」カテゴリの記事