« 昔話の計量テキスト分析――蛇(魅了) | トップページ | 昔話の計量テキスト分析――蛇 »

2026年5月30日 (土)

昔話の計量テキスト分析――蛇(婚姻)

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_021_hebikonin.xlsx

ダウンロード - ca_021_codingrules.txt

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

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

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

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

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

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

◆あらすじ

・「蛇島」(未来社『石見の民話』)
昔、温泉津の釜野の辺りに長者がいた。長者には美しい娘がいた。多くの若者たちは誰でもその娘を欲しいと思った。ところが近くに山の主と言われる大蛇がいた。大蛇も娘を欲しいと思って何度も長者に申し込んだが、長者は承知しなかった。蛇の頼みがあまりにしつこかったので、長者も断りきれなくなって、それでは釜野の沖の島を八回巻け。巻くことができたら娘を嫁にやろう。その代わり、巻くことができなかったら、この土地から出ていってもらうと言った。大蛇は大喜びで沖に出て島を巻きはじめた。そうして七巻き半まで巻いたが、どうしても後の半分ほどが足りない。大蛇は必死にぐいぐい締め付けたが、どうしても八回にならなかった。大蛇はくやし涙を流しながら長者との約束を守って、海を渡ってどこへともなく立ち去った。そのとき蛇が締め付けた跡が島に残った。それで蛇島と言うようになった。


・「蛇聟入り」(未来社『石見の民話』)
昔あるところに大きな百姓がいた。ある年酷い日照りで田が干上がり稲も今にも枯れそうになった。そこで百姓は田の近くにある蛇渕へ行ってこの田へ水を当ててくれれば娘が三人いるから一人をやろうと言った。明くる朝起きてみると広い田に水がなみなみと当たっていた。百姓は喜んだが、昨日約束したことを思い出して心配になって寝込んでしまった。すると姉娘が来て起きて茶を飲みなさいと言ったので、田が干上がってしまったから昨日蛇渕へ行って田に水をためてくれたら娘をやろうと言ったら今朝見るとどの田にも水がいっぱい当たっておる。それで娘をやらねばならないことになって心配していると言うと、姉娘はそんな恐ろしいことはできないと言って逃げてしまった。今度は中の娘が来て茶をおあがりと言ったので訳を話すとこれもやれ恐ろしやと言って逃げた。末の娘が来て茶をおあがりなさいと言ったので訳を話すと、それでは私が行きましょうと言った。その晩蛇が迎えに来たので妹娘は頭のまげに針を三本刺して蛇の頭に飛び乗って行った。蛇の家には広い座敷に青畳が敷いてあって、お婆さんが一人いた。お婆さんはようこそと言って喜んだ。ある日お婆さんが嫁に虱をとってくれと言った。嫁はとってあげようと言ってお婆さんの髪を見ると蛇がいっぱいいた。娘は頭に刺していた針を蛇に投げた。お婆さんはあまり気持ちがいいので、お前、国へ帰りたくはないかいと言った。それは帰りとうございますと言うと、それならば息子は天へ昇って今頃帰るから出逢った時にはこれを被ってニャーゴ、ニャーゴと言って道のほとりへ伏せていろと言って猫化けをくれた。嫁はそれを貰って家へ帰ろうと思って道を急いでいると、天から蛇が下りてきたので猫化けを被って道のほとりに伏してニャーゴ、ニャーゴと言っていた。すると蛇はそのまま通り過ぎてしまったので、家へ帰ってお父さんと仲良く暮らした。


・「蛙の恩返し」(未来社『石見の民話』)
昔、あるところに男がいた。ある日道を歩いていると、蛇が蛙をくわえて呑もうとしていた。男はそれを見ると蛙がかわいそうになって、まあ悪いことをする。その蛙を放してやれ。自分の女房にしてやるからと言った。すると蛇はくわえていた蛙を放してするすると草の中へ入ってしまった。自分の言うことを聞いたものだと男は思った。それと共にえらいことを言ったものだと後悔したが、もうどうすることもできない。どうしたものか思案していた。しばらくして、きれいな女が男のところを訪ねてきた。この間約束したが、蛙を許してやったから、あなたの女房にしてくださいと女は言った。それはまあ、ああして約束したのだから、しないとは言えない。困ったことだと思ったが、約束したので女房にした。ところが男は自分の女房は蛇だ。困ったものだのうと思えば思うほど気持ちが悪くてたまらない。とうとう気病みになって床についてしまった。ある日この家へ一人の男がやって来て、ここには病人がいるということだが悪いことだと言った。それで事情を話したところ、ああ、あなたの病気にはいい薬があるがと言った。何だろうか。それは、これの背戸の大きな松の枝へ鷹が巣をかけている。その卵をとって飲んだら、たちまち良くなると男は言った。それを聞くと、男はいいことを聞いたと思って、鷹の卵をとるというのは容易なことじゃあないがと思って、女房にその話をした。すると女房は、それなら自分がとってあげる。自分なら木へ昇るのは上手だから、必ずとってあげると言った。男は喜んで、それなら取ってきてくれと言って頼んだ。女房は背戸の松の木へ行ってみた。大きな松の木のずっと上に鷹の巣がある。とても高くて女の姿では昇ることはできない。女房は元の蛇になってするすると昇っていった。ところが、巣のところへ行って卵を取ろうとするのを鷹が見つけた。雀のような小さな鳥ならどうすることもできないが、鷹のことである。二羽の鷹は鋭いくちばしと爪で飛びかかって蛇を殺してしまった。これを見たよそから来た男はくっくと笑って草の中へ姿を隠した。それは男が助けてやった蛙であった。


◆コーディングルール

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

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

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

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

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

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

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

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


*釜野
'釜野'
*蛇
大蛇 or 蛇 or 息子
*八回
'八回'
*出ていく
( 出る and いく ) or 立ち去る
*百姓
百姓 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)から点線が伸び交差した箇所が原点となる。原点から離れるほど特徴的なキーワードだと分析される。

原点直下にはキーワードがプロットされていない。離れた位置にプロットされているのは「蛇島」では「巻く」「足りる」「出ていく」、「蛇聟入り」では「逃げる」「猫化け」「日照り」、「蛙の恩返し」では「蛙」「卵」「殺す」といった辺りである。

◆解釈

蛇から求婚されるお話である。主人公は蛇自身だったり、娘や男だったりとまちまちである。約束の履行を迫られ苦しい思いをする内容となっている。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

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

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

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

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 巻く 動詞  5 (0.075)  3 (0.231) 0.2
2 大蛇 名詞  5 (0.075)  3 (0.231) 0.2
3 長者 名詞  5 (0.075)  3 (0.231) 0.2
4 名詞C  5 (0.075)  2 (0.154) 0.125
5 約束 サ変名詞  5 (0.075)  2 (0.154) 0.125
6 思う 動詞  7 (0.104)  2 (0.154) 0.1111
7 感動詞  1 (0.015)  1 (0.077) 0.0769
8 くやし涙 名詞  1 (0.015)  1 (0.077) 0.0769
9 沖の島 固有名詞  1 (0.015)  1 (0.077) 0.0769
10 名詞C  1 (0.015)  1 (0.077) 0.0769

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 恐ろしい 形容詞  2 (0.030)  1 (1.000) 0.5
2 名詞C  2 (0.030)  1 (1.000) 0.5
3 心配 サ変名詞  2 (0.030)  1 (1.000) 0.5
4 逃げる 動詞  2 (0.030)  1 (1.000) 0.5
5 名詞C  11 (0.164)  1 (1.000) 0.0909
6 言う 動詞  23 (0.343)  1 (1.000) 0.0435

蛇に婚姻を迫られて困惑する……といった粗筋となっている。

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

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

・[蛇|巻く:失敗/去る]
・[妹娘|猫化け:被る/帰る]
・[蛇|卵:獲る/殺される]

こういった風にお話を転がしていると分析できる。妹娘は一旦嫁入りするが、猫化けを貰うことで「嫁入り/帰る」と運命が転倒する。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

蛇に求婚されるくだりに関するキーワードを指定したところ、「男」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

トピックの推定

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

« 昔話の計量テキスト分析――蛇(魅了) | トップページ | 昔話の計量テキスト分析――蛇 »

昔話」カテゴリの記事