2026年6月 6日 (土)

昔話の計量テキスト分析――嫁と姑

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_027_yometoshutome.xlsx

ダウンロード - ca_027_codingrules.txt

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

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

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

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

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

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

◆あらすじ

・「彼岸」(未来社『石見の民話』)
昔、たいそう仲の悪い嫁と姑とがいた。あるとき、また二人が喧嘩をはじめた。嫁は彼岸を「ひいがん」だと言った。姑はいや、ひいがんではない、「ひがん」だと言った。何遍言っても、どちらも自分の言うのが本当だと言って聞かない。しまいにはつかみ合いになって叩いたり蹴ったりして喧嘩をしたが、それでも勝負がつかない。それでとうとう、それならお寺へ行って和尚に決めてもらおうということになった。嫁と姑とは二人連れでお寺へ行って、和尚に訳を話した。そして、どちらが本当かと言った。和尚は前の三日がひいがんで、後の三日がひがんで、中に一日がお中日と言った。それでどちらも勝ち負けはなかった。


・「みんみん蝉」(未来社『石見の民話』)
昔、嫁と姑があった。あるとき針が無くなったので姑は嫁にお前は知らないかと言った。嫁は「見ん」と言った。それでも姑はお前が取ったのだろうといって、とうとう責め殺した。嫁は死んで蝉になった。それで今でも、みん、みん、と言って鳴くのだそうである。


・「蛙壺」(未来社『石見の民話』)
昔あるところに大変仲の悪い姑と嫁がいた。ある日、姑はおはぎをこしらえて「おはぎや、嫁がきた時には蛙になって、わしが来た時にはおはぎになってくれ」と言った。嫁はそれを聞いて、お母さんはあんなことを言ってるから、自分が食ってやろうと姑が出るのを待っていた。姑がやがてお寺参りにいった。嫁は戸棚からおはぎを出して皆食べて、おはぎのあった壺へ田からとった蛙を二三匹入れておいた。姑が帰ってきておはぎを食べようと思って壺の蓋をとると蛙がピョンピョン飛び出した。そこで姑が「蛙や。嫁じゃない。婆さんだ」と言っても蛙はやはりピョンピョン飛ぶので、「わしがあんまり嫁をいびったので、おはぎが蛙になったのであろう」と後悔した。それからは心を入れ替えて嫁を可愛がり仲良く暮らした。


・「嫁と姑」(未来社『石見の民話』)
昔、仲の悪い姑と嫁がいた。姑は毎日文句ばかり言っている。嫁は姑を殺してしまえば家は無事に治まると思って医者のところへ行って姑を殺す毒薬を作って欲しいと頼んだ。医者はさっそく薬を作った。渡す際にこの薬を飲むと長い間はもたない、その間は精一杯懇ろにせよと言った。嫁は喜んで薬を貰って帰ると、そっと姑に飲ませて、それからは姑を大切にした。姑は喜んで金も着物もお前にやると言った。姑がこれまでとうって変わって優しくするので、嫁はこんないい姑を殺しては済まないと急いで医者に相談して、毒を消す薬を作ってもらうよう頼んだ。すると医者は前の薬は毒ではないと安心させた。それからは嫁と姑はとても仲よく暮らした。


・「肉付きの面」(未来社『石見の民話』)
昔、嫁と姑がいた。嫁は信心深くて毎晩人目を忍んでお寺参りに行った。姑はそんなこととは知らず、別に男でもあって会うのではなかろうかと怪しんでいた。そこである日、姑がお前は毎晩出るが、一体どこへ行くのか訊くと、嫁は遊びに出ているから、どうぞ遊ばしてくださいと言った。姑はいよいよ不審でならないので、ある晩そっと跡をつけると嫁はお寺へ参っていた。姑はお寺へ参ることが嫌でたまらなかったので、今夜こそ嫁をおどしてやろうと思っている。鬼の面を被って竹藪に入って嫁が帰るのを待っていた。そこへ嫁が戻ってきたので姑が飛び出したが、嫁は「南無阿弥陀仏」と唱えてびくともしなかった。姑は嫁が案外落ち着いているので力抜けがした。そして鬼の面をはずそうとしたが、面がどうしても取れない。そのまま家へ帰って布団を被って寝ていた。夜が明けても起き上がれず布団の中にいた。そこへ嫁が来て具合を尋ねた。姑は恥ずかしくてたまらず、これまでのことを話して、どうぞ勘弁してくれと断りを言うと嫁は姑を寺に連れていった。そしてお経をあげてもらって、坊さんからご法話をきかせてもらうと、姑はいよいよ恥ずかしくてたまらず、頭を垂れていると、不思議に面がひとりでに離れて下へ落ちた。それで姑は大変喜んで心を入れ替えて嫁と仲良く暮らした。


◆コーディングルール

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

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

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

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

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

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

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

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

*姑
姑 or お母さん or 婆さん
*毒
毒 or 毒薬
*寺
寺 or お寺
*和尚
和尚 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]に設定する。

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

対応分析

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

原点直下には「嫁」「姑」といったキーワードがプロットされている。近くには「彼岸」では「ひがん」「ひいがん」「中日」、「蛙壺」では「おはぎ」「蛙」「壺」といったキーワードがプロットされている。離れた位置にプロットされているのは「みんみん蝉」より「蝉」「針」「みん」、「肉付きの面」より「鬼」「面」「落ちる」、「嫁と姑」では「毒」「医者」「薬」といった辺りである。

◆解釈

嫁と姑の不仲にまつわる類話である。和解する話が多いものの、「みんみん蝉」の様に嫁を責め殺してしまう話もある。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

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

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

マップとして描画したところ、「蛙」「食べる」「医者」「薬」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「姑」「嫁」が大きく描画された。

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 言う 動詞  16 (0.302)  4 (0.333) 0.1667
2 知る 動詞  2 (0.038)  2 (0.167) 0.1667
3 名詞C  5 (0.094)  2 (0.167) 0.1333
4 つかみ合う 動詞  1 (0.019)  1 (0.083) 0.0833
5 安心 サ変名詞  1 (0.019)  1 (0.083) 0.0833
6 会う 動詞  1 (0.019)  1 (0.083) 0.0833
7 怪しむ 動詞  1 (0.019)  1 (0.083) 0.0833
8 懇ろ 形容動詞  1 (0.019)  1 (0.083) 0.0833
9 取れる 動詞  1 (0.019)  1 (0.083) 0.0833
10 蹴る 動詞  1 (0.019)  1 (0.083) 0.0833

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 恥ずかしい 形容詞  2 (0.038)  2 (0.500) 0.5
2 名詞C  1 (0.019)  1 (0.250) 0.25
3 会う 動詞  1 (0.019)  1 (0.250) 0.25
4 怪しむ 動詞  1 (0.019)  1 (0.250) 0.25
5 勘弁 サ変名詞  1 (0.019)  1 (0.250) 0.25
6 起き上がれる 動詞  1 (0.019)  1 (0.250) 0.25
7 名詞C  1 (0.019)  1 (0.250) 0.25
8 名詞C  1 (0.019)  1 (0.250) 0.25
9 垂れる 動詞  1 (0.019)  1 (0.250) 0.25
10 断る 動詞  1 (0.019)  1 (0.250) 0.25

不仲な嫁と姑が色々あった挙げ句に和解する……といった粗筋となっている。

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

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

・[和尚|嫁姑:不仲/仲裁]
・[姑|嫁:殺す/蝉]
・[嫁|壺:おはぎ/蛙]
・[医者|嫁:毒/薬]
・[姑|面:外れない/外れる]

こういった風にお話を転がしていると分析できる。全般的に嫁と姑は「不仲/和解」と転倒する。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

嫁と姑が和解するきっかけとなるくだりに関するキーワードを指定したところ、「毒」「殺す」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年6月 5日 (金)

昔話の計量テキスト分析――木こり

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_026_kikori.xlsx

ダウンロード - ca_026_codingrules.txt

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

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

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

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

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

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

◆あらすじ

・「山小屋の不思議」(未来社『石見の民話』)
昔、門田の明比谷という大きな山で木挽きが三人で小屋を作って泊まり込んで毎日木を伐ったり板にしたりしていた。ところがある晩、一人が死んだので、近くの集落へ知らせに出ることになった。死んだものを一人おいて二人で出かける訳にはいかないので、一人が死んだ人の番をして、もう一人が出かけることにした。何しろ人里離れた山の中であり、夜のことだから、残って死人の番をしている方も、夜道を一人で出かける方も気持ちの悪いことで、どちらも山には慣れていて度胸がよいので、一人が死人の番をし、一人が出かけた。残った方は囲炉裏の火を消えないように焚きながら仲間が帰ってくるのを待っていた。すると、死人がむくむくと起き上がった。番をしていた木挽きはびっくりした。こんなことは生まれて初めてだ。しばらくすると死人はばったり倒れた。番をしていた男は思わずほっとして胸をなで下ろした。ところがしばらくすると、死人がまた起き上がった。おや、と思って見ているとしばらくするとまた倒れた。いくら度胸のすわった男でも気持ちのいいことではない。それでもどうしようもないので火を焚きながら仲間の帰るのを今か今かと待っていた。知らせにいった方は小屋ではさぞ待っているだろうと思って、一生懸命急いで村へ下りて手前の家に知らせて頼んでおくとすぐ引き返した。そうして小屋の前まで帰ってくると、戸口のところに何か変なものがいて、のびあがったりしゃがんだりしている。男はこっそり裏へ回って、ソマを持ってくるといきなり戸口にいるものに切りつけた。するとギャッという叫び声がして動かなくなった。留守番をしていた木挽きが火をもって出てみると、大きな狸が肩口を切られて死んでいた。それで死人が起きたり倒れたりしたのは狸のしわざだと分かった。


・「五人小屋」(未来社『石見の民話』)
昔、奥山に仕事に入ってはいけないという山があった。ところが五人の木挽きが、何故人が入ってはいけないというのか、そんな馬鹿なことはないと言うので、五人連れでその山へ入って行った。木挽きたちはどんどん入って、そこで仕事をすることになり、小屋をかけて泊まった。夕飯を炊いて食べ、そま(斧)を枕元において寝た。その内に四人の木挽きはいびきをぐうぐうかいて寝入ってしまった。ところが一人の男はどうした訳かなかなか寝つかれない。すると、どこからともなく蝶々が一羽飛んできた。蝶は一人の男の鼻の周りをくるくる廻りはじめた。これはどうしたことだろうと思って見ている内に、その男の鼻からぷうっと血が出てきた。すると蝶は次の男のところへ行って、また鼻のほとりをくるくる廻りはじめた。見ていると、また鼻からぷうっと血が噴き出した。そして、とうとう四人とも鼻から血を出してしまった。男はこれはいけないと思って、他の男を起こしてみると、皆死んでいた。男は恐ろしくなって逃げ出さねばいけないと思ったが、そまを持って蝶を切ってやろうと思って、そまを振り回して蝶々に切ってかかった。しかし蝶々はひらひら身をかわして、なかなかそまが当たらない。その内にくたびれて息が弾んできた。そこで外へ逃げだそうとすると、戸口から御弊をかついだお爺さんが入ってきた。やれしもうた、自分は所の氏神だが、もう少し早く来ようと思ったが、他のところへ出かけていて一足遅れたばかりに四人を死なせてしまった。済まないことをしたが、お前は自分について来い。自分について来れば助かると言ってお爺さんが先に立って歩き出した。男はお爺さんについて山を出たので助かった。それで、所の氏神さまというのは大事にしなければいけない。


・「七人小屋」(未来社『石見の民話』)
昔、七人の者が山の奥へ入って、小屋をかけて仕事をしていた。年の暮れになって、皆は年をとりに家へ帰ることになった。しかし、誰かあとに残って小屋番する者がいなければならないので、一人が残った。しかし皆が帰ってしまってたった一人になると心細くなった。その内に夕方になった。人里離れた山の中の小屋にたった一人いると、四十ばかりくらいの女の人がやって来た。山小屋のことだから戸は無いので、戸口にはただむしろが下げてあるばかりだった。女はそれを上げて内へ入ると、ぼた餅をこしらえてきたから食べなさいと言ってぼた餅をのぞけた。男はぼた餅が大好きであった。しかし、こんな山の奥へ見たこともない者がぼた餅を持ってくるのはおかしいと思って、自分はぼた餅はいらないから持って帰ってくれと言って、とうとう食べなかったので、女は帰っていった。しばらくすると、女は今度は茄子を持ってきて、それではこれを買ってくださいと言う。正月だから茄子のある頃ではないので、これは本当の茄子ではあるまいと思って、いらないと言った。ところが女はどうでも買ってくれと言って聞かない。そこで言い争いをしているところへ、大きな目玉をした、長い髪の真っ白い老人がやってきて、ドサッと座った。そして大きな目玉でギョロギョロ睨みまわしたので、女は出ていってしまった。自分はお前の氏神だ。今ついて帰れ。今きた女はこの奥に堤があるが、その主が化けてきたのだから、自分について帰れば助かるとその人は言った。男はホッとして何もかもほったらかしたまま、すぐその老人について帰った。老人の後ろは明るくて道がよく見えた。一気に家の側まで帰ったとき、氏神さまはパッと見えなくなってしまった。それから男はそこへ氏神さまの祠をこしらえて、お祀りした。


・「呼び子」(未来社『石見の民話』)
昔、木挽きが二人で山へ仕事に入っていた。深い山の中で小屋に泊まり込んで仕事をしていたが、ある日夕方になって一人が帰ってこなかった。どうしたのだろうと思って待ってみたが、暗くなっても帰ってこないので、おーい、××やーいと大きな声で呼んだ。すると向こうの山から、おういと化物が呼び返してきた。男はしまったと思った。これは呼び子という化物で、これに呼び返しをされると、負けない様にこっちからも呼び返ししないと、呼び負けると死ぬということを聞いているからである。それで男はおういと呼び返した。すると、向こうからもやっぱり、おういと呼び返してくる。男は一生懸命に呼び返しをした。その内に次第次第に喉が痛くなり、声がかすれてきた。それでも負けられない。おうい、おうい、そうして呼び返しをしている内にようやく東が白んで夜が明けてきた。そこでようやく呼び子は呼ぶのを止めた。男はぐったりしてへたばった。そこへ連れの男が帰ってきた。お前はゆうべはどこへ行ってたのか。なんぼ待っても戻らないから大声で叫んだ(ひゃこった)が、お前が声をかけてくれないから、とうとう呼び子が声をかけてきた。呼び負けたら死ぬという話を聞いているから夜が明けるまで呼んでおった。それでとうとう息がきれてしまうところだったと男は言った。こういうことがあるから、山では一人では人を呼ぶものではないということである。


◆コーディングルール

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

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

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

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

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

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

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

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


*明比谷
'明比谷'
*番
番 or 留守番
*起きる
起き上がる or 起きる
*ソマ
'ソマ' 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 帰る 動詞  13 (0.155)  6 (0.250) 0.1935
2 思う 動詞  10 (0.119)  5 (0.208) 0.1724
3 名詞C  12 (0.143)  5 (0.208) 0.1613
4 待つ 動詞  5 (0.060)  4 (0.167) 0.16
5 言う 動詞  9 (0.107)  4 (0.167) 0.1379
6 蝶々 名詞  3 (0.036)  3 (0.125) 0.125
7 名詞C  5 (0.060)  3 (0.125) 0.1154
8 死ぬ 動詞  7 (0.083)  3 (0.125) 0.1071
9 呼ぶ 動詞  10 (0.119)  3 (0.125) 0.0968
10 仲間 名詞  2 (0.024)  2 (0.083) 0.0833

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 恐ろしい 形容詞  1 (0.012)  1 (1.000) 1
2 振り回す 動詞  1 (0.012)  1 (1.000) 1
3 逃げ出す 動詞  1 (0.012)  1 (1.000) 1
4 切る 動詞  2 (0.024)  1 (1.000) 0.5
5 名詞C  3 (0.036)  1 (1.000) 0.3333
6 蝶々 名詞  3 (0.036)  1 (1.000) 0.3333
7 持つ 動詞  4 (0.048)  1 (1.000) 0.25
8 思う 動詞  10 (0.119)  1 (1.000) 0.1
9 名詞C  19 (0.226)  1 (1.000) 0.0526

馬鹿なため言われた通りにしか実行できず失敗を繰り返す……といった粗筋となっている。

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

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

・[狸|死人:起きる/倒れる]
・[蝶|木挽き:生/死]
・[氏神|木挽き:女/堤の主]
・[木挽き|連れ:呼び子/連れ]

こういった風にお話を転がしていると分析できる。木こりは氏神によって「女/堤の主」と転倒して正体が明かされる。氏神について帰ることが「生/死」と転倒する危機から免れる結末となっている。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

山小屋で独り番をしていたところ怪異に遭遇するくだりに関するキーワードを指定したところ、「氏神」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年6月 4日 (木)

昔話の計量テキスト分析――馬鹿息子

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_025_bakamusuko.xlsx

ダウンロード - ca_025_codingrules.txt

ダウンロード - ca_025_codingrules_b.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 言う 動詞  42 (0.400)  13 (0.419) 0.2167
2 分かる 動詞  8 (0.076)  6 (0.194) 0.1818
3 和尚 名詞  9 (0.086)  5 (0.161) 0.1429
4 名詞C  10 (0.095)  5 (0.161) 0.1389
5 お姫様 名詞  8 (0.076)  4 (0.129) 0.1143
6 名詞C  8 (0.076)  4 (0.129) 0.1143
7 名詞C  8 (0.076)  4 (0.129) 0.1143
8 弟子 名詞  9 (0.086)  4 (0.129) 0.1111
9 答える 動詞  11 (0.105)  4 (0.129) 0.1053
10 法事 名詞  3 (0.029)  3 (0.097) 0.0968

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 名詞C  1 (0.010)  1 (0.500) 0.5
2 名詞C  1 (0.010)  1 (0.500) 0.5
3 別に 副詞  1 (0.010)  1 (0.500) 0.5
4 名詞C  1 (0.010)  1 (0.500) 0.5
5 名詞C  2 (0.019)  1 (0.500) 0.3333
6 分かる 動詞  8 (0.076)  2 (1.000) 0.25
7 白い 形容詞  4 (0.038)  1 (0.500) 0.2
8 黒い 形容詞  5 (0.048)  1 (0.500) 0.1667
9 お姫様 名詞  8 (0.076)  1 (0.500) 0.1111
10 名詞C  8 (0.076)  1 (0.500) 0.1111

馬鹿なため言われた通りにしか実行できず失敗を繰り返す……といった粗筋となっている。

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

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

・[息子|ばくち打ち:百両/短冊]
・[息子|弟子:小便/お題]
・[母親|息子:聞かせる/聞いたまま]
・[母親|息子:聞かせる/聞いたまま]
・[父親|息子:聞かせる/聞いたまま]


こういった風にお話を転がしていると分析できる。息子はばくち打ちに騙され「百両/短冊」と転倒してしまうが、短冊に書かれた歌によって姫に認められ「小丁稚/若旦那」と立場が転倒する。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

息子と母親、父親との関係に関するくだりに関するキーワードを指定したところ、「馬鹿」「ない」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年6月 2日 (火)

地元からのアクセス

アクセス解析をみていて「???」と思う。同窓生が読んでる可能性は頭からすっぽり抜け落ちていた。

|

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

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_024_bakamuko.xlsx

ダウンロード - ca_024_codingrules.txt

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

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

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

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

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

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

◆あらすじ

・「馬ほめと仏壇ほめ」(未来社『石見の民話』)
昔、馬鹿な聟がいた。嫁の里に泊まりに行くことになったので、家を出るときに嫁が「行ったらお爺さんは馬を買ったから見てくれと言うから、その時には、どっこもさすってみて、これは良い馬だ。どっこも不足はないが、ちとぎり(つむじ)が高いから噛みつかねばよいが」と言いなさいと教えた。聟は嫁の里に行くと嫁が教えた通りにお爺さんが「馬を買ったから見てくれ」と言った。聟はあちこちさすって「これは良い馬だ。どっこも不足がないが、ちとぎりが高いから、噛みつかねばいいが」と言った。お爺さんはそれを聞いて、この聟は馬鹿だと聞いていたが、まんざら馬鹿でもないと喜んで、今度は家の中へ入って「聟どの、良い仏壇を買ったから見てくれ」と言った。そこで聟は仏壇の前へ行って、あちこち撫でていたが「これは良い仏壇だ。どこも不足はないが、ちとぎりが高いから噛みつかねばいいが」と答えた。


・「鼻かけそうめん」(未来社『石見の民話』)
馬鹿聟が姑の家へ初めて呼ばれていった。姑の家ではそうめんをご馳走することにした。聟が見ていると、姑がそうめんが湯だったか箸に一本引っかけて頃合いを見ようとすると、つい鼻の上に落ちた。それを指で落として口に入れたので聟はそうめんはああして食べるものかと思った。そうめんのご馳走が出たので、一本すくい上げては鼻の上にのせ、それを口にかき込んで長い時間をかけて食べた。夕飯も済んだので、明日の朝はテウチ(手打ち:蕎麦)にしようか半殺し(ぼたもち)にしようかと相談されたので、聟はいつも女房を大事にしているのに、初めて来てテウチにされては困ると思って半殺しを望んでおいた。それから疲れたろうと蚊帳を吊って屏風を立てて床を敷いてお休みと言われた。聟が蚊帳の中に飛び込むと、屏風がくるりと廻った。屏風を右に回すと左があき、左へ廻すと右があいた。今度はまた蚊帳の中へ飛び込んで、また出て屏風を廻している内に夜が明けた。聟は朝は半殺しをするに違いない。昨夜も寝ずに廻り屏風に飛び込み蚊帳に、今朝は半殺しとは情けないと思って二階の庇に小さくなって隠れていた。姑は聟が寝床にいないので、どこへ行ったかと思って戸を開けると聟は庇に小さくなってガタガタ震えていた。そして半殺しはこらえてくださいと細い声で泣きながらいったので、そんなに嫌いなら食べなくてもよいと優しく言われて聟はようやく家へ入った。聟に昨夜はよく寝られたか姑が言うと、眠るどころか鼻かけそうめんに油をとられ、廻り屏風に引きずられ、蚊帳に出たり入ったり、半殺しは気にかかるし、眠れなかったと言ったので姑は何が何やらさっぱり分からない。娘よ、何か聞いてみよ。昔の者とは違うし、田舎にもこんな分からず屋がいるか。子供よりまだ酷いと姑が言ったので、女房が優しく尋ねると、来るまいと思っていたのに無理に行ってくれと連れてきて、鼻かけそうめんに油をとられ、廻り屏風に引きずられ、蚊帳に出たり入ったり、今朝は半殺しと言われたり、自分はこんな難儀とは知らずに寝ておられようか。思えば早く去にたくて庇の上に出て下ばかり見て夜を明かした。お前は親と組んで下の方から笑ったり、自分はおる気がしなかったと言って泣いた。それで女房も全く呆れて、それきり離縁してしまった。


・「馬鹿むこ」(未来社『石見の民話』)
昔、馬鹿な聟がいた。あるとき嫁さんの親元へ行ったら団子をこしらえてご馳走した。聟は団子を食べたのは初めてで、あまりに美味かったので腹いっぱい食べた。そして家へ帰ったらこしらえてもらおうと思って、これは大変美味いものだが、何というものかのと尋ねた。これは団子というものだとお母さんがいった。団子、団子と言って聟はしきりにうなずいていたが、忘れてはいけないと思って、帰る道々で団子、団子と言いながら歩いた。家の近くまで帰ったとき。小さな溝があった。聟はうんとこしょと言って飛び渡った。それから今度はうんとこしょ、うんとこしょと言いながら帰った。聟は家に帰ると早速嫁さんに、うんとこしょをこしらえてくれと言った。嫁さんは何のことか分からないので、うんとこしょとは何かと尋ねた。今日お前のところへ行ったら、お母さんがこしえらえてご馳走しなさった。とても美味かったからこしらえてくれと聟は言った。それでもうんとこしょと言っても何やら分からないと嫁さんが言うと、分からないことはない。すぐこしらえよと聟は言った。それでも嫁さんは分からないのでどうしようもない。いくら聞いても分からないので押問答をする内に聟は腹を立てて、そこにあった火吹竹で嫁さんの頭を叩いた。嫁さんはびっくりして額を押さえた。額はみるみる内に団子の様に腫れ上がった。何を無茶なことをするのか。これを見なさい。団子のようなこぶが出来たと嫁さんが言うと、おう、そうだ、団子だった。すぐ団子をこしらえてくれと聟は言った。


◆コーディングルール

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

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

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

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

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

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

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

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


*嫁
嫁 or 女房 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 分かる 動詞  6 (0.111)  6 (0.400) 0.4
2 言う 動詞  19 (0.352)  8 (0.533) 0.3077
3 名詞C  23 (0.426)  7 (0.467) 0.2258
4 嫁さん 名詞  8 (0.148)  4 (0.267) 0.2105
5 噛みつく 動詞  3 (0.056)  3 (0.200) 0.2
6 高い 形容詞  3 (0.056)  3 (0.200) 0.2
7 不足 サ変名詞  3 (0.056)  3 (0.200) 0.2
8 入る 動詞  4 (0.074)  3 (0.200) 0.1875
9 半殺し 名詞  6 (0.111)  3 (0.200) 0.1667
10 何やら 副詞  2 (0.037)  2 (0.133) 0.1333

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 噛みつく 動詞  3 (0.056)  3 (0.500) 0.5
2 高い 形容詞  3 (0.056)  3 (0.500) 0.5
3 不足 サ変名詞  3 (0.056)  3 (0.500) 0.5
4 今朝 副詞可能  2 (0.037)  2 (0.333) 0.3333
5 寝る 動詞  3 (0.056)  2 (0.333) 0.2857
6 蚊帳 名詞  6 (0.111)  2 (0.333) 0.2
7 半殺し 名詞  6 (0.111)  2 (0.333) 0.2
8 屏風 名詞  7 (0.130)  2 (0.333) 0.1818
9 思う 動詞  8 (0.148)  2 (0.333) 0.1667
10 違う 動詞  1 (0.019)  1 (0.167) 0.1667

まんざらでもないと思ったところ、やはり馬鹿だった……といった粗筋となっている。

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

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

・[爺さん|聟:まんざらでもない/馬鹿]
・[嫁|聟:優しい/離縁]
・[聟|嫁:団子/うんとこしょ]

こういった風にお話を転がしていると分析できる。聟は溝を跳び越えた際に「団子/うんとこしょ」と転倒を起こしてしまう。それで女房と押し問答となるが、「こぶ/団子」と再転倒する結果となる。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

聟が団子を嫁に作ってもらおうとするくだりに関するキーワードを指定したところ、「押し問答」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

Ca_024_ter_doc_bakamuko

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年6月 1日 (月)

昔話の計量テキスト分析――古猫

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_023_furuneko.xlsx

ダウンロード - ca_023_codingrules.txt

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

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

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

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

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

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

◆あらすじ

・「化け猫」(未来社『石見の民話』)
昔ある所で若者たちが大勢集まって踊っていると、そこへ見たこともない姉さんが来て皆と一緒に踊った。踊りが済んでそれぞれ家へ帰るとき、姉さんに興味を抱いた一人の若者があとから姉さんの跡をついていった。すると、姉さんは近所のお寺へ入り、ニャンと啼いた。若者はそれを聞くと真っ青になって帰った。明くる日若者はお寺へ行って和尚さんにそのことを話した。お寺には和尚さんが可愛がっている古い猫がいた。和尚さんは若者が帰ると猫を呼んで出ていってくれと言った。猫は出ていけというなら出ていく。自分がいると参詣人も少ないだろうから、これまで長いこと可愛がっていただいた恩返しに参詣人が沢山来るようにしてあげると言った。そして何時何日にどこどこの婆さんが死ぬから葬式の時に自分が火車になって死人を棺から出して空へ吊り上げる。よその坊さんが来てお経をあげると死人は上へあがるが、和尚さんが経をあげると死人は下がって棺へ収まるようにすると言った。猫が言ったその日になるとその婆さんは死んだ。そして葬式をしていると結縁の時に空が曇って火車が来て死人を掴んで空に吊り上げた。葬式に来ていた坊さんは一生懸命お経を読んだが、死人は空に吊されたままだんだん上へ上がっていく。それで近所の寺の和尚さんを呼んでお経をあげてもらうと死人はだんだん下りて来て棺へ収まり、無事に葬式が済んだ。それから和尚さんの評判が高くなって参詣人がどんどん来るようになった。そして猫はいつの間にかいなくなった。


・「猫やだけし」(未来社『石見の民話』)
昔、たいへん身上のよい家があった。その家は旦那さんと奥さんが痩せ猫を一匹飼っていた。旦那さんはその猫をとても可愛がっていたが、奥さんは猫が嫌いで何かといえばいじめていた。ある日、奥さんが魚を買っておいたところ、猫がそれを見つけて取って食べた。それを見た奥さんは傍にあった庖丁を投げつけた。庖丁は猫の目に当たったので猫は鳴きながら逃げた。旦那さんは魚は昔から猫の好くものだから、しまっておかないと猫が喰うと言った。猫はそのままどこへ行ったものか、とうとう帰ってこなかった。それから何日か経って、旦那さんは旅に出かけた。途中道に迷って山の中へ入ったが、その内とうとう日が暮れてしまった。家がないので困ってとぼとぼ行く内に向こうに火が見えてきたので喜んで行ってみると一軒の家があった。そこで道に迷った旨伝えて泊めてくれるよう頼むと、中から白髪のお爺さんとお婆さんが出てきて快く泊めてくれた。奥の一間で寝ていると、夜中頃になって人がぞろぞろ集まってきた。そして口々に今晩はお客さんがあるそうで結構でございますと挨拶するので旦那さんは気味が悪くなってきた。すると障子が開いて、一番しまいにやってきた手拭いを被った女の人が入ってきて旦那さんの顔をじっと見ていた。その内にだんだん夜が更けて皆寝てしまった。すると手拭いを被っていた女が旦那さんと言って小さな声で旦那さんを揺り起こした。目を覚ますと、私は旦那さんに小さい時から可愛がって頂いた猫です。ここは猫やだけしと言って猫の家です。今皆があなたを食べる相談をしているところですから一時も早く逃げて下さい。ここから家まで八里ほどありますが、私が連れて出てあげます。私の背中に負われてくださいと言った。旦那さんは驚いて猫の背中に負われた。猫は一生懸命に走って、ようやく家の近くまで来た。そして、ここからはすぐ家ですからお帰り下さい。私は帰ると他の猫から殺されますからこの松の木へ登って死にますと言った。旦那さんはどうもありがとうと言って別れて家へ帰った。そして明くる朝早く松の木の下へ行ってみると猫が木から落ちて死んでいた。よく見ると片目が潰れていたので旦那さんのところにいた猫だと分かった。


・「岡田の婆」(未来社『石見の民話』)
猟師が山へ猟に行って日が暮れた。それで夜の明けるのを待とうと思って木の上へ登っていた。すると夜中になって猫が沢山やってきた。一匹の猫が木の下へしゃがんで木に抱きついた。次の猫はその猫の背中から肩車(びんぶく)をした。それから次々に猫が肩車をして木へ登って猟師の足を捕まえようとしたが、ちょっと届かない。その猫は、自分は帰って岡田の婆さんを連れてくると言って、ばらっと崩れ落ちて皆いなくなった。猟師が岡田のばばあと言っていたが、あそこにおるばばあは猫かしらんと思っていると、大きな猫が来て、他の猫も木の下に集まった。それから前の様にして木へ登ってきて、一番終いに後から来た大きな猫があがってきた。そして猟師の足を捕まえたので、猟師はすぐ腰へ差している鉈を抜いて手を切った。猫は悲鳴をあげて下へ落ちると、どこへともなくいなくなった。夜が明けると猟師は木から下りてきて、岡田のばばあちゅうのは前から居るが、猫だったのかしらんと思って岡田の家へ行って隙間から見ると婆さんが手の傷を舐めて(ねぶって)いる。それで、これは本当に猫じゃなかろうかと思って隙間から鉄砲で撃ち殺してしまった。その家の人は大騒ぎを始めた。近所の人も来て大騒動になった。これは猫の化物だから撃ったのだ。こうしておくと、そのうち正体を現して猫になると言って、猟師は婆さんの足を縛って庭の上に下げておいた。二日ぶりに猟師が行ってみると、やはり婆さんである。三日ぶりに行ってみると、大きな古猫になっていた。それで猟師には何のこともなかった。戸へ背をすりつけるか、柱へ背をすりつけて通る猫は飼ってもよいが、部屋の真ん中を通る様になると踊りを踊る様になる。そうなると化けるから置いてはいけないと言う。


◆コーディングルール

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

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

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

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

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

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

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

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


*婆さん
婆さん 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 名詞C  32 (0.471)  7 (0.636) 0.1944
2 副詞可能  3 (0.044)  2 (0.182) 0.1667
3 言う 動詞  14 (0.206)  3 (0.273) 0.1364
4 行う 動詞  6 (0.088)  2 (0.182) 0.1333
5 帰る 動詞  8 (0.118)  2 (0.182) 0.1176
6 猟師 名詞  8 (0.118)  2 (0.182) 0.1176
7 いつの間にか 副詞  1 (0.015)  1 (0.091) 0.0909
8 一軒 名詞  1 (0.015)  1 (0.091) 0.0909
9 一緒 サ変名詞  1 (0.015)  1 (0.091) 0.0909
10 名詞C  1 (0.015)  1 (0.091) 0.0909

年を経た猫が人に化けて人を救ったり襲ったり……といった粗筋となっている。

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

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

・[和尚|猫:追放/火車]
・[猫|旦那:危機/脱出]
・[猟師|猫:婆/古猫]

こういった風にお話を転がしていると分析できる。猟師は猫たちの襲撃から逃れた後で訪れた家でそこの婆さんの正体を見破り「婆/古猫」と転倒させる。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

旦那が猫やだけしに迷い込むくだりに関するキーワードを指定したところ、「殺す」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

トピックの推定

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年5月31日 (日)

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

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_022_hebi.xlsx

ダウンロード - ca_022_codingrules.txt

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

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

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

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

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

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

◆あらすじ

・「犬伏山の大蛇」(未来社『石見の民話』)
昔、邑智郡都賀村の都賀西に高橋備前守という城主がいた。備前守に仕える三十六人の小姓の中に松原千代坊師という十七八ばかりの勇士がいた。ある日集まって話をしていると年長の小姓が犬伏山の大蛇の話を持ち出して、誰か嘘かまことか見届けてくる者はいないかという話になった。返事をする者はいなかったが、千代坊が名乗り出た。千代坊は他の小姓たちから妬まれていたのである。大蛇を従えて帰ったら残り三十五人の大小を褒美として進ぜようという話になった。千代坊は褒美は断ったが、これは皆の企みだとすぐ分かった。千代坊は独り犬伏山に向かった。犬伏山に近い向山の出口に一軒家があって老人夫婦が住んでいた。夕方、そこに千代坊がやって来て水を一杯所望した。千代坊はこれから犬伏山を越えると告げた。老人夫婦はここから一里あまり奥に椿の大木があって、そこに年を経た雄雌の大蛇がいる。これまで夜に犬伏山を通って災難に遭った者は数え切れないと引き留めたが、千代坊は礼を言って山へ入って行った。だんだん暗くなり、山は次第に深くなった。椿の木の下で大蛇が出るのを待ち受けた。真夜中になって大蛇が下りてきた。千代坊は大蛇を真っ二つに斬った。次に雌蛇が下りてきた。これも一刀のもとに胴切りにした。夜が明けてきた。しかし、千代坊は大蛇の毒気を全身に浴びて身体が次第にしびれてきた。勇気を奮い起こして谷底へ下りて大蛇の耳を四つ切り取って元のところへ這い上がったが、毒が全身にまわり気を失ってしまった。夜が明けるのを待って老人たちが山へ登ってきた。そして倒れている千代坊を助け起こして家へ連れ帰って介抱をして城へ知らせた。千代坊が目を覚ましたときには乗り物で城中へ迎え入れられた後であった。千代坊の勇気に感心した備前守は三十五人の小姓たちを閉門にし、三十五の大小を改めて褒美に取らせた。千代坊は身体が回復すると暇を願い、都賀東の金東寺に入って坊さんとなった。そして名を教雲と改め仏道の修行にいそしんだ。その子孫は吾郷村に今も続いている。


・「蛇渕」(未来社『石見の民話』)
浜田ダムへ流れ込む長見川の上流約一キロのところに深さ三メートルの渕がある。昔、ある年の夏、子供たちは親たちが止めるのも聞かずいつものように渕へ泳ぎに出かけた。渕の水は青く澄んで青葉に涼しい風が渡っている。子供たちは大騒ぎをしながら時の経つのも忘れて泳ぎまわった。その内に夕暮れになった。その時子供たちは悲鳴を上げながら我先にと岸へ駆け上がった。いつの間にか渕の底から大きな蛇が頭をもたげて子供たちの方をじっと見ていた。子供たちはわめきながら村へ通じる山道をいっさんに駆けだした。「渕、大きな蛇」と子供たちのきれぎれな言葉を聞いた村人たちはびっくりした。話は伝わって下の村は大騒ぎになった。早速村人たちは鍬や鎌や竹槍などを手にもって長い列となって渕へ向かった。生暖かな夜風の吹く中を身じろぎもせず薄暗い水の面を見ている村人たちの頭の上ににわかに黒雲が湧き起こったと思うと、稲妻が光った。この鋭い光に照らし出された水面に大蛇の姿が見えた。男の一人が用意していた石を投げ込むと、てんでに鍬や鎌や竹槍を投げ込んだ。しかしそれは渕の面に空しく落ちるばかりであった。やがて一人の男が村に引き返すと、大きな弓と矢を持ってきた。男は弓を引き絞ると次から次に渕に向かって矢を射こんだ。村人たちがふと我に返った時には、辺りはすっかり暗くなって、渕の上がわずかに夕明かりに白く見えるばかりであった。それから何日か過ぎ、夏も終わりに近づいた。ある日真夜中から大雨が降り出し、雨は明くる日もその明くる日も夜も昼も降り続いた。長見川は濁流となって川下へ押し寄せた。その様子を見に出た一人の男はびっくりした。そこには川向こうの家の柱に巨大な尾を巻きつけて濁流から身を逃れようと必死にもがいている大蛇の姿があった。それを見ると恐ろしさを越えて、この巨大な蛇が激しい濁流と戦う痛ましい姿に心の痛みを感ぜずにはいられなかった。男は村へ駆け戻った。深い森を越えてどうどうと響く濁流の音とともに大蛇の最後のうめきがいつまでも耳について離れなかった。大蛇がそれからどうしたかは誰も知る者がない。大蛇が柱に巻き付いたという家には近頃まで大蛇の鱗を求めにくる人があったということだが、鱗は無いと言う。


・「魚切り渕の大蛇」(未来社『石見の民話』)
昔、村里を遠く離れた山の中にぽつんと一軒の家があった。寂しいところではあったが、山越えをする人は必ずこの家へ立ち寄って、お茶を飲ませてもらったり休ませてもらったりしていた。その家にはこうした人たちの世話をする親切な女中がいた。ある夕方、他の人と同じ様に茶を所望して一人の男が立ち寄った。女中がお茶を持っていくと、ゆっくりと飲み干し、しばらく休んでから立ち上がった。そして日もすっかり落ちて暗くなりかけた山道を灯りももたずに帰っていった。後には草履の音だけがかすかに聞こえた。次の日、昨日と同じ様な時間に男はまたやってきた。そしてお茶を所望してゆっくり飲むと、何を話すでもなくしばらく休んで夕闇の中へ消えていった。それから男は毎日の様に夕方になるとやって来てお茶を飲んでは帰っていった。何日か経って女中はあの男はいったいどこに住んでいるのだろうと思った。毎日来るところを見るとそんなに遠くでもないようだし、毎日お茶を飲みに来るというのもおかしい。そういえば暗い山道を灯りも持たずに帰ってゆくのも変だ。そこである日、いつもの様にやって来た男に思い切って毎日来るが、一体どこに住んでいるのか尋ねた。男はにやにや笑いながら、この道をずっといった所だと言って家の後ろにある小さな道の方へ目をやりながら答えた。女中はここの道をずっとと言えば、魚切りという渕の辺りという事になるが、そこには昔から大蛇が棲んでいると言われているから近づく人もない。まして家などあるはずはないのだがと不審に思った。気にかかるので何とかしてこれを知りたいと思った。色々考えた末に男が帰るときにそっと着物の裾に糸のついた針をつけておき、後から糸を頼りに辿っていこうと思いついた。何も知らない男はその日もやってくると、お茶を飲んで夕闇の中を帰っていった。女中はそっと着物の裾に針を刺した。あくる朝、女中は糸を頼りにどんどん山道を登っていった。しばらく歩いたところ遙かにどうどうという水音が聞こえてきた。あれは魚切りの渕だと思いながら糸を辿っていくと糸は渕の中へ入っていった。男はこの渕に棲む大蛇であったという。


・「河野十内」(未来社『石見の民話』)
昔、鍋石に河野十内という力の強い人がいた。これは天狗に力を授かったものと言うことで、向う倍力と言ってどんな力の強い人が来ても十内はその倍の力がでるのだった。あるとき大阪から三人の力持ちが十内と力比べをしようと言ってやって来た。ちょうど十内は留守で奥さんが一人留守番をしていた。力持ちは十内が留守だということを聞くと、玄関に腰を下ろして休んでいた。すると、そこに曲がった大きな鉄の棒が立てかけてあった。奥さんは旦那さまと言ったら杖を曲げておいてと独り言を言いながら手でつるつるとしごいた。すると曲がっていた棒は何のこともなくまっすぐになった。三人の力持ちはそれを見て、おかみさんさえあの通りなら、主人はとても我々の及ぶところではないと言ってこそこそと逃げ帰った。十内は「もとよのみや」という家に住んでいたが、家を普請する時、奥さんは青竹をすこいで縄のようにして、竹の節がめきめきと割れるのを差し出すと、十内はそれで屋中竹を縛りつけたと言うことで、近年まで竹で縛った屋中竹が残っていたという。昔、芸州の八幡では毎年広島へ萱を年貢の代わりに納めていた。十内は、お前たちは萱を丈夫な輪をもって荷造りしておけ、自分が一荷に負うていってやると言った。皆は十内のいう通りにしたが、中に一人、とても手に合うまいと思って、そのおいこ縄(背負う縄)を自分の家の柱に引っかけておいた。十内は道中の村々に何月何日河野十内が萱を負うて出るから用心しておれとふれをしておいた。その日になると、十内は八幡中で納める萱を一まとめにして、ごっそごっそ負うて出たので、道ばたの木や小屋などは皆箒で撫でたように倒れ、おいこ縄を家の柱に結わいつけておいた家は家ごとどんどん引きずって広島の町へ出たので、広島の町も大変傷んだ。それから広島へ萱を出すことは止めになった。漁山の浅間さんの足ガ鞍にはうわばみがいた。ある日十内はうわばみ退治に出かけた。すると大きな木が倒れていたので、それに腰をかけて休んでいた。十内は鉄砲を足先にかけていたが、小さな蛇が指先を舐めていると思っていたところ、いつの間にか膝まで呑んでいた。そこで十内はドカンと一発鉄砲を口の中へ撃ち込んだので、うわばみは一発で死んでしまった。うわばみの死骸の下には白銀の花が咲くといって、下の土まで人が金を出して買って帰ったという。あるとき百姓が「とりのす」で堆肥を一荷ずつ負うていくのを見て十内は自分が蹴散らしてやろうといって足で田毎に蹴散らしてやった。ところが十内の力はその時から無くなってしまった。堆肥は不浄の物だから、それを天狗が嫌って力を取り上げてしまったのだった。


・「そばの登城」(未来社『石見の民話』)
昔、津和野の城主亀井隠岐守の家中に豊田平内という百二十石取りの侍がいた。平内は蕎麦が大変好きだった。ある年の夏、用事があって供を一人連れて隣の長門国徳佐へ行った。津和野の町を出はずれると野坂の峠へ差しかかった。この峠は約一里半、片側は木がいっぱい茂り、片側は切り立った絶壁である。ちょうど夏の暑い日中のことで、しばらく登ると一人の樵夫がふんどし一つになって道ばたの木陰で昼寝をしていた。すると、さっと生臭い風が吹いて上から大きな蛇が下りてきて樵夫を頭から呑みはじめた。平内も供のものもびっくりした。あまり恐ろしいので身体がすくんで樵夫を助けることも逃げることもできない。ただ、物陰から様子を見ているばかりであった。その内に蛇は樵夫をすっかり呑み込んでしまった。大きな蛇ではあったが、なにしろ一人呑んだので腹がはち切れるばかりに膨らみ、いかにも苦しそうであった。しばらくすると蛇はするすると谷底へ下りていった。平内もようやく元気を出して、その跡をつけていった。蛇は谷底へ下りると水のほとりに茂っている青草を喰いはじめた。すると腹はだんだん小さくなって元のようになり、蛇はするすると山の中へ入って見えなくなった。平内はこれを見て、蛇の食べた草は腹がいっぱいになったときこれを治す神薬であろうと思って、そこらにある蛇が食べた草をとって、腰の印籠に入れた。それから峠を登り、徳佐へ行って用事を済ませて帰った。その年の大晦日になった。平内の家でも年越しの蕎麦を祝った。平内は大好きなので、歩くこともできないほど食べた。一夜明けると元旦である。平内はお正月のお礼にお城へ登らなければならないので麻上下をつけて御殿へ行ったが、まだ早いので誰も来ていない。そこで控えの間で待っていた。ところが昨晩の蕎麦が腹いっぱいで苦しくてたまらない。ふと思い出したのは印籠に入れておいた、野坂の峠の薬草のことであった。さっそく腰の印籠からつまみ出して一口頬張った。しばらくたって第二番目に登場した椋五郎左衛門が控えの間へ入って見ると、一人の侍が座っている。挨拶をしたがいっこうに返事がない。不思議に思ってよく見ると、九枚笹の定紋の麻上下をつけて、大小を差してきちんと座っているのは人間ではなくて蕎麦であった。大勢集まってよく調べてみると、神薬の効き目が強くて身体が溶け、蕎麦だけが残ったのだった。


・「野の池」(未来社『石見の民話』)
須川谷は匹見川のほとりにある、たった七軒ほどの村であった。後ろは切り立った険しい山で、この上に野の池という大きな池があった。川向こうの舟つけの喜左衛門という男が猟に行って、この池のほとりへ来ると、お婆さんが洗い物をしていた。喜左衛門はこんな人里はなれた山の中にお婆さんがいるのはおかしいので、きっと化物に違いない、撃ってやろうと思った。ところが持っている玉は普通の猟に使う玉なので、家へ帰って鉄の二重玉を込めてきた。喜左衛門が池のほとりへ来てみると、お婆さんはいなくなって、向こうから大きな蛇が箕の様な口を開けて池の上を波立たせながらやってきた。喜左衛門はその口めがけて鉄砲を一発撃ち込むと、家へ帰ってはんどうに一杯水を飲んだが、すぐ死んでしまった。蛇はもがき苦しんで池の中をのたうちまわり、とうとう池の縁を破って下の谷底へずり落ちて死んだが、誰も知らなかった。それから何年か経った後のことである。須川谷の川向こうの家へ毎年のように広島の方から来て宿を借りる反物屋がいた。あるとき反物屋がその家の子供が白い石の様なものを持って遊んでいるのでよく見ると、大きな蛇の骨だった。反物屋はびっくりして、これはどこで拾ったかと尋ねると、向こうの谷へ行けば幾らでもあると子供は言う。そこで向こうの谷へ行ってみると沢山ごろごろと転がっていた。反物屋は大喜びでそれを皆拾い、反物はその家へ預けて帰った。蛇の骨は薬になり、とてもいい値で売れるので反物屋は大儲けをした。そこの家では何時まで経っても反物屋が来ないので、預けていった反物を一反出し二反出しとうとう皆使ってしまった。ところがそこへひょっこり反物屋がやってきた。反物屋は思いがけない大儲けをしたので、この家へ礼を言ったり、蛇の骨の残りでもあれば拾って帰ろうと思ったのである。しかしその家ではびっくりした。あんまり来ないので、置いていった反物をきれいに使ってしまったところに来たのだから、これはきっと反物を取りに来たのに違いない、大変なことになったと思った。そして反物屋を前の池へ突っ込んで殺してしまった。それからこの池はいつも血の様に赤く濁っていて、その家では良くないことが絶えないということである。蛇がずり落ちて死んだ谷は蛇落谷と呼ばれている。野の池は今でも雨の降った後などには水がたまって、葦が茂っている。


◆コーディングルール

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

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

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

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

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

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

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

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


*都賀
'都賀'
*備前守
'備前守'
*千代坊
'千代坊'
*犬伏山
'犬伏山'
*大蛇
大蛇 or 蛇 or 'うわばみ'
*大小
'大小'
*長見川
'長見川'
*農具
鍬 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 来る 動詞  9 (0.061)  5 (0.217) 0.1852
2 思う 動詞  11 (0.074)  4 (0.174) 0.1333
3 知る 動詞  5 (0.034)  3 (0.130) 0.12
4 大蛇 名詞  15 (0.101)  4 (0.174) 0.1176
5 お茶 名詞  6 (0.041)  3 (0.130) 0.1154
6 飲む 動詞  6 (0.041)  3 (0.130) 0.1154
7 名詞C  7 (0.047)  3 (0.130) 0.1111
8 名詞C  7 (0.047)  3 (0.130) 0.1111
9 名詞C  18 (0.122)  4 (0.174) 0.1081
10 見る 動詞  11 (0.074)  3 (0.130) 0.0968

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 灯る 動詞  2 (0.014)  2 (0.400) 0.4
2 暗い 形容詞  4 (0.027)  2 (0.400) 0.2857
3 山道 名詞  4 (0.027)  2 (0.400) 0.2857
4 稲妻 名詞  1 (0.007)  1 (0.200) 0.2
5 感ずる 動詞  1 (0.007)  1 (0.200) 0.2
6 起こる 動詞  1 (0.007)  1 (0.200) 0.2
7 激しい 形容詞  1 (0.007)  1 (0.200) 0.2
8 光る 動詞  1 (0.007)  1 (0.200) 0.2
9 黒雲 名詞  1 (0.007)  1 (0.200) 0.2
10 止める 動詞  1 (0.007)  1 (0.200) 0.2

蛇を退治したその後……といった粗筋となっている。

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

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

・[千代坊|企み:退治/しびれる]
・[老人|千代坊:引き留める/救出する]
・[渕の蛇|大雨:いる/行方不明]
・[女中|糸:男/大蛇]
・[十内|うわばみ:呑まれかける/撃つ]
・[平内|薬:体/蕎麦]
・[反物屋|骨:儲け/殺害]

こういった風にお話を転がしていると分析できる。千代坊は小姓たちの企みによって大蛇退治に差し向けられるが「危機/退治」と転倒させる。毒によってしびれて動けなくなるものの救出され「危機/脱出」とも転倒する。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

千代坊が大蛇を退治するくだりに関するキーワードを指定したところ、「毒」「妬む」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

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

自己組織化マップ

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

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)

|

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)

|

2026年5月28日 (木)

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

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_019_ike.xlsx

ダウンロード - ca_019_codingrules.txt

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

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

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

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

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

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

◆あらすじ

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


・「姫野の池」(未来社『石見の民話』)
三瓶山の麓に姫野の池という小さな池がある。ほとりにはカキツバタが生えている。池の近くに長者がいて、お雪という娘がいた。薪を牛に載せて長者の家の前を通る若者がいた。娘と若者は互いに恋をした。その頃、野伏原に山賊がいたが長者の屋敷は襲わなかった。山賊の頭はお雪に目をつけていたのである。山賊の頭はある日屋敷を訪れてお雪を嫁に所望した。相手は山賊の頭で、お雪は若者と恋をしていたので長者は苦しんだ。長者はしばらく待って欲しいと答える。返事がないのに苛立った頭は手下を引き連れてお雪を奪いに長者の屋敷を襲った。そのことを知った若者は山刀をふるって山賊の群れに飛び込んだ。多勢に無勢で追われた若者は姫野の池のほとりまで来て斬り合ったが遂に斬り殺されてしまった。それを見たお雪は若者一人だけ死なせまいと池に身を投げた。池の底は深い泥で埋もれていたので娘が浮かび上がってくることはなかった。雨が降って昼と夜の気温の差の激しい夜には霧が池の辺りに下りてくる。そのときはお雪のすすり泣く声が聞こえるという。六月になると咲くカキツバタはお雪の生まれ変わりという。


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


・「血の池」(未来社『石見の民話』)
島は左鐙から四キロ近く入った山中の寂しいところである。昔、畳へ出た平家の一族のものか、それとも別のものか、ここへ落ちていった平家の落人があった。途中の家で道を教えてもらい、追手が来ても言ってくれるなと口止料を置いていったが、その中に病人が一人いて、それをいたわりながら下島まで辿りついたとき、追手が来た。そこで病人をほとりのケヤキの大木に隠して戦ったが、皆討たれてしまった。ところが病人もケヤキの木の下の池に影が映ったため追手に見つかり、槍で刺し殺されてしまった。その時したたり落ちた血で真っ赤に染まったため、その池は血の池と呼ばれている。落人たちが哀れな最後を遂げたのは、口止料まで貰いながら落人の行き先を教えた途中の家の者のせいであった。そのためこの家では代々よくないことが続いたという。


・「野の池」(未来社『石見の民話』)
須川谷は匹見川のほとりにある、たった七軒ほどの村であった。後ろは切り立った険しい山で、この上に野の池という大きな池があった。川向こうの舟つけの喜左衛門という男が猟に行って、この池のほとりへ来ると、お婆さんが洗い物をしていた。喜左衛門はこんな人里はなれた山の中にお婆さんがいるのはおかしいので、きっと化物に違いない、撃ってやろうと思った。ところが持っている玉は普通の猟に使う玉なので、家へ帰って鉄の二重玉を込めてきた。喜左衛門が池のほとりへ来てみると、お婆さんはいなくなって、向こうから大きな蛇が箕の様な口を開けて池の上を波立たせながらやってきた。喜左衛門はその口めがけて鉄砲を一発撃ち込むと、家へ帰ってはんどうに一杯水を飲んだが、すぐ死んでしまった。蛇はもがき苦しんで池の中をのたうちまわり、とうとう池の縁を破って下の谷底へずり落ちて死んだが、誰も知らなかった。それから何年か経った後のことである。須川谷の川向こうの家へ毎年のように広島の方から来て宿を借りる反物屋がいた。あるとき反物屋がその家の子供が白い石の様なものを持って遊んでいるのでよく見ると、大きな蛇の骨だった。反物屋はびっくりして、これはどこで拾ったかと尋ねると、向こうの谷へ行けば幾らでもあると子供は言う。そこで向こうの谷へ行ってみると沢山ごろごろと転がっていた。反物屋は大喜びでそれを皆拾い、反物はその家へ預けて帰った。蛇の骨は薬になり、とてもいい値で売れるので反物屋は大儲けをした。そこの家では何時まで経っても反物屋が来ないので、預けていった反物を一反出し二反出しとうとう皆使ってしまった。ところがそこへひょっこり反物屋がやってきた。反物屋は思いがけない大儲けをしたので、この家へ礼を言ったり、蛇の骨の残りでもあれば拾って帰ろうと思ったのである。しかしその家ではびっくりした。あんまり来ないので、置いていった反物をきれいに使ってしまったところに来たのだから、これはきっと反物を取りに来たのに違いない、大変なことになったと思った。そして反物屋を前の池へ突っ込んで殺してしまった。それからこの池はいつも血の様に赤く濁っていて、その家では良くないことが絶えないということである。蛇がずり落ちて死んだ谷は蛇落谷と呼ばれている。野の池は今でも雨の降った後などには水がたまって、葦が茂っている。


◆コーディングルール

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

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

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

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

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

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

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

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


*浮布
'浮布'
*にえ姫
'にえ姫'
*大蛇
大蛇 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]に設定する。

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

対応分析

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

原点直下にはキーワードがプロットされていない。近くに「大蛇」がプロットされている。離れた位置にプロットされているのは「野の池」では「反物」「骨」「撃つ」、「血の池」では「平家」「るな」「病人」、「姫野の池」では「カキツバタ」「三瓶山」「嫁」といった辺りである。

◆解釈

池に入水する類話が多いが、そうでないものもある。大蛇がほぼ共通のモチーフとなるが、魅入られるパターンと単に撃ち殺されて骨となるパターンとがある。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

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

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

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

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

Ca_019_rws_ike_02

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 来る 動詞  7 (0.076)  3 (0.200) 0.1579
2 違い ナイ形容  2 (0.022)  2 (0.133) 0.1333
3 襲う 動詞  2 (0.022)  2 (0.133) 0.1333
4 お婆さん 名詞  3 (0.033)  2 (0.133) 0.125
5 屋敷 名詞  3 (0.033)  2 (0.133) 0.125
6 使う 動詞  3 (0.033)  2 (0.133) 0.125
7 名詞C  3 (0.033)  2 (0.133) 0.125
8 名詞C  13 (0.141)  3 (0.200) 0.12

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

N 抽出語 品詞 全体 共起 Jaccard
1 辿る 動詞  1 (0.011)  1 (1.000) 1
2 名詞C  2 (0.022)  1 (1.000) 0.5
3 教える 動詞  2 (0.022)  1 (1.000) 0.5
4 名詞C  2 (0.022)  1 (1.000) 0.5
5 置く 動詞  2 (0.022)  1 (1.000) 0.5
6 追手 名詞  2 (0.022)  1 (1.000) 0.5
7 途中 副詞可能  2 (0.022)  1 (1.000) 0.5
8 名詞C  2 (0.022)  1 (1.000) 0.5
9 名詞C  2 (0.022)  1 (1.000) 0.5
10 病人 名詞  3 (0.033)  1 (1.000) 0.3333

大蛇に魅入られたり山賊に追われたりして入水する……といった粗筋となっている。

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

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

・[にえ姫|恋:成就/死]
・[お雪|恋:成就/死]
・[姫|池:思慕/入水]
・[病人|池:映る/見つかる]
・[反物屋|骨:儲ける/殺される]

こういった風にお話を転がしていると分析できる。池に入水する、あるいは姿が映ってしまうことで「生/死」へと運命が転倒する。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

大蛇に魅入られた姫が池に身投げするくだりに関するキーワードを指定したところ、「主」が離れた位置にプロットされた。

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

«昔話の計量テキスト分析――えんこう(約束)