« 山陰のインバウンド 2025 | トップページ | データセンターの光と影 »

2026年3月 6日 (金)

昔話の計量テキスト分析――妾を妬む

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_pb_006_netamu.xlsx

ダウンロード - ca_pb_006_codingrules.txt

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

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

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

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

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

◆あらすじ

・「鏡が渕」(未来社『石見の民話』)
鳴美の堤から切り立った岩の上に登ると、小さな祠がある。竜の明神で、祠の前の岩角に立っている松を髪かけの松という。弘安正応の頃、阿波麻生庄の領主小笠原長親は海辺防備の功によって村之郷に移封されて海を渡った。後に川本温湯城三原丸小城を中心にして十五代およそ三百年間この辺りを治めた小笠原氏の先祖である。長親は村之郷に来ると南山城を築いて根拠地とした。重臣に何々太夫宗利という武士がいた。まだ若年であったが優れた武士だったので軍師として重く用いた。足利の勢が攻め寄せた時、川を上って魚断りに押し寄せると味方の軍勢は天嶮によってこれを防ぎ敵は意を断って引き返したので魚断りというようになった。この戦いで最も手柄を立てたのは軍師の宗利だった。それで長親は宗利に自分の娘を妻に与えた。ところがしばらく経って疫病にかかり生まれもつかぬ醜い女になった。その頃小間使いに美しい女があって、宗利は次第に本妻を避けるようになった。本妻はこれを恨んで、ある日宗利を動かして小間使いを連れて魚断りの景色を見に出かけた。そして景色のよい明鏡台へいって、しばらく休息していると、小間使いは懐中から小さな鏡を取り出してほつれた髪をかきあげた。その時後ろから忍び寄った本妻はいきなり小間使いを岩の上から突き落とした。この時小間使いは手鏡に映った本妻の顔からそれと察したので、本妻の袖をしっかり掴んだ。それで、あっという間に二人の女は相重なって落ちていった。驚いた宗利が駆け寄ってみると、数十丈の岩壁を悲鳴をあげて落ちていく二人の黒髪はどちらも竜となって互いにもつれ争いながら途中の松の枝にかかって抜け、二人はそのまま遙か谷底の深さも知れぬ渕に呑まれてしまった。宗利は意外のことに驚くとともに、深く嘆き悲しんで蟇田まで帰り、自刃して果てた。二人の女を呑んだ渕を鏡が渕といい、以来二人は竜となって永遠に相戦ったと言われている。古くから三人を神に祀ってあったのを昭和九年の明神勧請のときに合祀した。


・「小沙夜淵」(ハーベスト出版『夕陽を招く長者』)
匹見の小虫に住んでいた斎藤家は七百年以上続いた旧家であるが、その十二代の斎藤治朗左衛門が長者を務めていた時代のこと。治朗左衛門は近くから、お楽という人を妻として迎えた。夫婦仲はよく、周りから羨ましがられていたが、跡継ぎが生まれなかった。そこでお楽は治朗左衛門と相談して、小沙夜を妾として同居することになった。やがて小沙夜に待ち望んだ子供が生まれた。治朗左衛門の愛情は子供を通して自ずと小沙夜に移っていった。そのため、お楽は小沙夜を妬む気持ちが芽生えてきた。悶々とした日々が続き、終いには小沙夜を亡きものにしようと思うようになった。ある日、お楽と小沙夜は匹見川の渓谷に遊びに出かけた。小沙夜が淵の水しぶきを眺めていた時、お楽はここぞとばかりに短剣で小沙夜を刺し、すかさず淵に突き落とした。すると小沙夜は激流の中に消えていった。このとき、淵が小沙夜の鮮血で一面朱に染まったので、この淵を赤淵と呼ぶようになった。良心の呵責にさいなまれたお楽には、その後平穏な日は一日も無かった。ついに錯乱したお楽は赤淵に身を投げた。と、見る間にお楽の姿は竜に変わり、火炎を岸壁に吹きつけて縦につんざき、女陰の形を残して昇天した。後世、この岸壁からたぎり出る水をお楽の滝と呼ぶようになった。二人の妻妾を失った治朗左衛門は沈んでいたが、遂に発心して懺悔のため諸国行脚に出かけた。やがて身をはかなんで近くの淵に身を投げて二人の跡を追った。この淵を治朗左衛門淵と呼ぶようになった。お楽は昇天の際、火炎を吹きつけて作ったという岸壁の縦皺は世に弁天様と称し、性病にご利益があるとして人々の信仰を集めた。


◆コーディングルール

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

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

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

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

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

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

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


*宗利
'宗利'
*妻
妻 or 本妻 or 'お楽'
*小間使い
'小間使い'
*鏡
鏡 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 疫病 名詞  1 (0.024)  1 (0.500) 0.5
2 駆け寄る 動詞  1 (0.024)  1 (0.500) 0.5
3 経つ 動詞  1 (0.024)  1 (0.500) 0.5
4 互いに 副詞  1 (0.024)  1 (0.500) 0.5
5 黒髪 名詞  1 (0.024)  1 (0.500) 0.5
6 名詞C  1 (0.024)  1 (0.500) 0.5
7 醜い 形容詞  1 (0.024)  1 (0.500) 0.5

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

N 抽出語 品詞 全体 共起 Jaccard
1 周り 名詞  1 (0.024)  1 (1.000) 1
2 跡継ぎ 名詞  1 (0.024)  1 (1.000) 1
3 羨ましい 形容詞  1 (0.024)  1 (1.000) 1
4 名詞C  1 (0.024)  1 (1.000) 1
5 夫婦 名詞  1 (0.024)  1 (1.000) 1
6 生まれる 動詞  2 (0.049)  1 (1.000) 0.5


「鏡が渕」では疫病のため醜くなってしまった正妻に対し夫は美しい小間使いに心を移してしまう。「小沙夜淵」では跡継ぎがいない夫が妾をとって生まれたため正妻の嫉妬が生じる。

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

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

・[宗利の妻|疫病:美しい/醜い]
・[小沙夜|跡継ぎ:生まれない/生む]

こういった風にお話を転がしていると分析できる。それぞれが異なる話だが、夫の心が離れたことをきっかけに正妻の嫉妬が生じている。夫婦関係が「円満/疎遠」と転倒してしまい、争いの遠因となる。

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

◆類似度行列

・[コーディング単位]を[文]に変更して[集計]。

類似度行列

Jaccard係数がマトリクス形式で確認できる。

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

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

◆多次元尺度構成法

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

多次元尺度構成法

「渓谷」がやや離れた位置にプロットされた。

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

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

トピックの推定・文書表示

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

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

|

« 山陰のインバウンド 2025 | トップページ | データセンターの光と影 »

昔話」カテゴリの記事