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

2026年5月29日 (金)

昔話の計量テキスト分析――蛇(魅了)

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_020_hebimiryo.xlsx

ダウンロード - ca_020_codingrules.txt

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

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

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

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

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

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

◆あらすじ

・「浮布の池」(未来社『石見の民話』)
三瓶山の麓にある浮布の池はもとは浮沼池という。昔、池の原の長者の子ににえ姫という美しい姫がいた。古くから池に住む池の主がいつしか姫に思いを寄せるようになった。姫は池のほとりで美しい若者と出会った。姫は若者に心を惹かれた。姫は若者の誘いで池に行くと気を失ってしまう。そして空を飛ぶ夢を見る。気づくと一人で池のほとりに座っていた。着物は濡れていなかった。このようなことが度重なって、姫の顔に生気が無くなってきた。人々の心配を他所に姫は池のほとりを歩く。ある日、通りかかった武士が大蛇に巻き付かれた姫を見た。武士は弓で大蛇を射る。浮布の池はざわめいたが、池の主の姿はなかった。意識を取り戻した姫だったが、池に身を投げて死んでしまった。姫が着ていた衣の裾が白く帯のように池の中央に浮かんでいた。この日は六月一日で、それから毎年六月一日にはこの白い波の道が光って池の表に現れるところからこの池を浮布の池と呼ぶようになった。にえ姫を祀るにえ姫神社は池の東側の中ノ島にある。


・「谷田池の蛇姫」(未来社『石見の民話』)
昔、出雲国意宇郡矢田村の豪族の娘に美しい姫がいた。姫は物心つくにつれて石見国の国分村にある谷田の池を恋い慕うようになった。谷田の池は広さ十町三反(一〇・三ヘクタール)ばかり、深さは数十尋もある青い水をたたえた大きな池だった。姫がどうしてこの池を恋い慕うのか姫自身にも分からなかった。しかし不思議な因縁でその思いはつのるばかり、独り部屋に立て籠もって物思いに沈んでいる日が多くなった。姫が十六歳になった卯月(四月)、思い詰めた姫は、自分はどうしても心が塞いでならない。石見の谷田池のほとりにある祠は霊験あらたかであると聞いているので、ぜひ一度お参りして念願をかけたいと思うので行かせてほしいと父に願った。父や母や侍女たちも遠い石見路への長旅は大変なので口をそろえて思いとどまる様に勧めたが、姫は目に涙をためてどうしても行かせて下さいと言う。それで父や母もとうとう姫の願いを叶えてやることにした。姫の乗物と行列は日数を重ねて国分村へ着いた。ちょうど日が落ちようとして、広い池の面は音もなく静まりかえっていた。姫はほとりの祠に詣でると心も晴れ晴れとした様に、池のみぎわへ降りて水を手にすくった。と、その時、姫は吸われるように池の中へ沈んでいった。姫はもともとこの池の蛇の化身であったと言い、またこの池にすむ年ふる雄蛇に魅入られたのだとも言う。その後、谷田家の先祖の尾崎藤兵衛は谷田の池を埋め立てて田を開いた。この工事は中々難しく、水害のためせっかく作った新田が流れて元の池になったり土砂に埋まったりした。これは大蛇が住むところが狭くなったため田を荒らすからだというので、承応二年、谷田家の主人は池のほとりの鐘堂におこもりして工事が無事に出来上がるよう祈願をした。すると満願の夜池の大蛇が池を譲り渡す証として鱗を一枚残して立ち去った。これによって工事は無事に出来上がった。それ以来この蛇を竜神として祀ることにしたが、元禄八年には下府村光明寺の亮音法印や上府村の神職千代延直真らによって盛大な法要祭典が営まれた。すると池の上空から美しい音楽が聞こえて「石見潟千代ふる里の梢まで よくぞ守らん三つのともしび」という歌声が聞こえた。また、大蛇が水害を起こしたりして工事を妨げるのをなだめるため、一人の百姓が自分の頬の肉を切り取って池に投げ込んで大蛇に祈ると大蛇は天へ昇っていったとも言う。また、谷田の池が狭くなったので、大蛇は底の続いている上府の安国寺の門前の池に現れ、説教を聴いて涙を流し、成仏して鱗を一枚残して天へ昇った。それで門前の池を涙が池という様になったとも言われている。


・「女と蛇」(未来社『石見の民話』)
昔、三渡八幡宮の神主に美しい女房があった。神主は主税という人だったとも言うが、確かなことは分からない。ある年のこと、神主の女房は青原祭へ行ったが、その帰りに穴ノ口まで帰ると不浄があった。下は青黒い水をたたえた大きな渕だったから、女房は渕へのぞいてそれを洗った。ところが、その下に一匹の小さな蛇がいて、その水をぺろぺろと舐めた。そうではなく、女房が小便をしたらそこに小さな蛇がいて、それを舐めたのだとも言う。ともかく、その晩から、女房は夜中になるとどこへともいなくなった。神主は不審に思ったが、朝になると女房は何事もなかった様に寝ていた。そして庭先に、びっしょり濡れた紙緒の草履が脱ぎそろえてあった。そういうことが幾夜も続いた。神主が密かに様子を調べてみると、女房は夜中になると一キロもある川下の穴ノ口の渕へ、たった一人で暗い夜道を通うのであった。神主はびっくりした。そして、これはただ事ではない、何か魔性のもののさせることに違いないと思った。そこで神主は八幡宮に一口の刀を供えて、この刀で魔性のものを打ち取らせてくださいと、火のもの断ちの祈願をたてて一心不乱に祈った。いよいよ七日七夜が過ぎて、満願の日の夜明け方、神主が連日連夜の祈願に疲れて燭にもたれたまま、うとうととまどろむと神主の前に八幡さまが現れて、今家へ帰ってみよとお告げがあった。神主ははっと目を覚ますと、刀をとって家へ飛んで帰った。家には烏帽子直垂の立派な男が来て女房と寝ていた。男は神主を見ると正体を現し、大きな蛇になって自在鍵に巻きついて破風から出ようとした。神主は刀を抜いて一打ちに打ち落とした。蛇は七つに切って前の戸隠谷へ棄てた。頭はほとりの畠へ埋めた。それでその畠を蛇頭畠と呼ばれるようになり、戸隠谷の水は日に七度変わるという。女房はしばらく経って子を産んだ。蛇は女房が子をはらんでから、自分は人間でない。蛇体であるから、お前の腹にいる子はみんな蛇である。産むときにはたらいに水を入れてその中へ産むがよいと言ったので、その通りにして産んだ。子供は七たらい半あったが、遠く離れた川端に埋めた。そこでここをこずと呼ぶ様になった。また、一つの話では子は紙洗い笊に三杯あったのを、ほとりの竹藪へ捨てた。それからその竹藪には首に白い環のある蛇がいるようになったと言う。女房は子を産むと間もなく死んだと言うことである。だから女というものは道端へ小便をしたり、蛇をまたいだりしてはいけない。年よりたちはこの話をした後では、必ずこういって若い娘たちをいましめた。


◆コーディングルール

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

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

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

※[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 女房 名詞  11 (0.169)  4 (0.333) 0.2105
2 自分 名詞  2 (0.031)  2 (0.167) 0.1667
3 小便 サ変名詞  2 (0.031)  2 (0.167) 0.1667
4 分かる 動詞  2 (0.031)  2 (0.167) 0.1667
5 名詞C  10 (0.154)  3 (0.250) 0.1579
6 形容動詞  3 (0.046)  2 (0.167) 0.1538
7 思う 動詞  4 (0.062)  2 (0.167) 0.1429
8 言う 動詞  7 (0.108)  2 (0.167) 0.1176
9 ただ事 名詞  1 (0.015)  1 (0.083) 0.0833
10 違い ナイ形容  1 (0.015)  1 (0.083) 0.0833

蛇に魅入られて入水したり蛇の子を産んだり……といった粗筋となっている。

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

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

・[にえ姫|恋:成就/死]
・[姫|池:思慕/入水]
・[蛇|不浄:舐める/魅入る]

こういった風にお話を転がしていると分析できる。蛇に魅入られてしまうことで「生/死」へと運命が転倒する。

・[女/蛇→不浄/接→離/接]

こんな風に模式図化することもできるか。不浄は身体から離れたものだが、それに接することで相手の身体へ接したことになると考える呪術的思考の一種である。

離:-
接:+

とすると、

・[女:女-不浄]
・[蛇:蛇+不浄]
・[蛇:蛇+女]

とでも置けるか。要約すれば、

・[蛇|女:離/接]

とも置ける。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

神主の女房が蛇に魅入られてしまうくだりに関するキーワードを指定したところ、「神主」「子」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

トピックの推定

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

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

昔話」カテゴリの記事