« 福光浅利道路の2026年度予算 | トップページ | 2025年10月~2026年3月の本館実績 »

2026年4月10日 (金)

昔話の計量テキスト分析――千年比丘

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_pb_032_sennenbiku.xlsx

ダウンロード - ca_pb_032_codingrules.txt

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

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

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

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

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

◆あらすじ

・「千年比丘」(未来社『石見の民話』)
昔、国分の里に裕福な家があった。そこの主人は日頃よい行いをしていた報いか、竜宮城へよばれてしばらく行っていた。そこで月日の経つのも忘れていた。ところがその内に飽きて城内をぶらぶら歩いていると料理場へ来てしまった。ふと見るとそこには大きなまな板の上に人間を裸にして載せて料理人がしきりに料理をしていた。びっくりした男はこれまでの楽しかった夢も一時に醒め、竜宮というところは何と恐ろしいところだ、人間を殺して食べるところなのかと思うと、いても立ってもいられなくなり、城門から一目散に駆けだした。これを見た竜宮の人たちは、さぞびっくりしただろうがあれは人間でない、人魚という魚でこれを食べると千年生きられるという珍しい魚だ。あなたに食べさせようと思って料理しているところだと言って引き留めようとしたが、そんなことは男の耳に入らない。そうして国分の姉が浜まで逃げてきた。必死に追いかけてきた竜宮の人たちも陸へ上がることができないので、せめて土産にと持ってきた人魚の肉を男の方へ投げた。肉は男の袴の腰板の間へ入ったが、そんなことは知らず命からがら逃げて帰った。家の人たちは大喜びで出迎えた。男は久々に家族に会い、竜宮の話をした。幼い女の子はそれを聞くと竜宮の土産をねだった。土産はないのだと言って男が袴を脱ぐと、腰板の間から人魚の肉が落ちた。女の子はそれを拾うとすぐ食べてしまった。そのため女の子は千年の長い寿命をもって生きながらえた。力が強く、大きな盤石をも易々と持ち運んだと言われ、人々はこれを千年比丘と呼んだ。昔の国府村役場の隣にあった大きな岩は千年比丘が運んだものと言われ、下府片山にある古墳を千年比丘の穴と言って、千年比丘の住居の跡と言っている。


・「ふしぎな食べ物」(日本標準『島根のむかし話』)
昔々、この辺には講といって神さまや仏さまを拝む仲間があった。この講の仲間にいつの頃か今まで見たことのない人が入ってきた。その内にその見知らぬ人の家が講の順になった。その人は今度は家で講をするからおいでください。初めての所ですから自分が案内します。八幡さまのお宮で待っていてくださいと言った。あくる月になって誰もがどんな所へ行くのかと思って八幡さまへ集まった。そうしたら、その人がやって来て、さあ、これから案内しますからどなたも目をつぶってくださいと言った。皆、おかしな事を言うものだと思っていたが、言われる通りに目をつぶっていた。少ししてから、はい、もう目を開けてください。ここが自分の家ですと言われたので、誰もがそっと目を開けた。そうしたら、誰もがあっと驚いた。それは今まで見たこともない御殿のような家だった。広くて綺麗な所だった。使用人の男が旦那が戻られた。さあ用意するぞとご馳走を並べ始めた。もう誰も神さまや仏さまを拝む気もない。早くご馳走が食べたいのでうろうろしていた。だけど、一人だけ一生懸命拝んでいた者がいた。その内、一人の男がひょいと台所の方を見た。あっと言ってたまげた。台所のまな板の上に人間の赤ん坊に似たようなものが載せてあって、それを台所の男が料理していた。誰も男の声にたまげてそっちを見た。そして誰もがやあと驚いた。まな板の上のもの、あれは人間の赤ん坊だった。もう誰も気分が悪くなって食べる気がしなかった。さあ、何もないけれど食べてくださいと言ったけれど、誰も食べなかった。そのご馳走を見てばかりいた。だけど、一生懸命拝んでいた男は台所の方を見てなかったので、こんなご馳走は初めてだ。これは独りで食べるのはもったいないから持って帰って娘に食べさせてやろうと言って知らぬ顔で懐に入れておいた。どうこうして講も済んだので帰ることになった。土産を持って帰った男は今日は大変なご馳走だった。お前に食べさせようと思って持って戻ったぞと食べさせてやった。そのご馳走を食べた娘はだんだん綺麗になった。十年経っても二十年経っても十八くらいに見えた。父親も母親も皆死んでしまって娘独りになった。その内に娘は髪を切って比丘になった。あちこち歩いて仏さんを拝んだり杉の木を植えたりした。そうして八百年くらい生きていたけれど、誰も知らない。知らないけど長生きした。あと少しで死ぬことが分かった比丘は杉の木で大きな棺桶を作ってその中で死んでしまった。この辺の山の杉はみんなこの比丘が植えたものだそうだが、それにしても八百年も長生きした食べ物って何だったのやら。不思議なこともあるものだ。


・「粟島の八百ベクサン」(みずうみ書房『日本伝説大系』第十一巻)
粟島のある舟のりの家に十八になる食いしん坊の娘がいた。この娘の父が龍宮講に招かれて行った。ところが、講宿に行って台所をちらと見たら、板場で人魚を料理していたので怖ろしい事だと思った。それで誰にも黙ったまま自分さえ食べなければよいと思い箸をつけずにいた。料理を家に持ち帰ったが、人魚の料理を滅多なところへ捨てられず、家の者に話してからにしようと思い、戸棚に入れておいた。ところが、食いしん坊の娘は何か土産がないかと戸棚を探したところ、例の料理が入れてあったので、人魚の煮つけとは知らず、一人で食べてしまった。それからというもの、娘の年は一寸もよらずいつまでも十八の姿のままで、終いには年は八百にもなり、誰一人知った人がいなくなってしまった。そこで米を持って粟島さんの穴に入り、八百ベクサンはそこで定(ジョ)にいった。今でも西伯郡彦名村にある粟島さんの穴を八百ベクサンが定にいった穴だという。


◆コーディングルール

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

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

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

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

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

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

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


*料理場
料理場 or 台所 or 板場
*腰板
'腰板'
*女の子
女の子 or 娘
*怪力
力 and 強い
*盤石
盤石 or 岩
*旦那
旦那 or ( 見知る and ぬ and 人 ) or ( 見る and ない and 人 )
*ご馳走
ご馳走 or 食べ物
*八百年
'八百年' or '八百'
*比丘
比丘 or 'ベクサン'
*竜宮
竜宮 or 龍宮
*食べる
食べる or ( 箸 and つける )
*人間
人間 or 人
*料理
料理 or '煮つけ'
*十八
'十八'
*舟のり
'舟のり'
*怖ろしい
怖ろしい or 恐ろしい
*気分悪い
気分 and 悪い

*ない
ない
*ぬ

*ん

*るな
'るな'
*るまい
'るまい'

*国分
国分
*裕福
裕福
*家

*主人
主人
*まな板
まな板
*人魚
人魚
*千年
千年
*浜

*陸

*土産
土産
*肉

*袴

*寿命
寿命
*古墳
古墳
*穴

*住居
住居
*講

*神さま
神さま
*仏

*仲間
仲間
*順

*八幡
八幡
*目

*御殿
御殿
*赤ん坊
赤ん坊
*拝む
拝む
*男

*死ぬ
死ぬ
*独り
独り
*杉

*棺桶
棺桶
*長生き
長生き
*粟島
粟島
*食いしん坊
食いしん坊
*捨てる
捨てる
*者

*戸棚
戸棚
*まま
まま
*定

*年


◆共起ネットワーク

・[コーディング単位]を[H5]に設定する。

※[描画する共起関係(edge)の選択]で「係数」を「0.2」から「0.3」に修正する。
※[強い共起関係ほど濃い線に]にチェックを入れる。

Jaccard係数が0.3以上はかなり強い共起関係にあることを示しているが、分析対象となる元データの文字数が少ないため係数が高めに出てしまう傾向にあるため、こうしている。

※Jaccard係数は共起関係(※ある言葉に続いて出てくる関係)の強さを表し 0≦係数≦1 の範囲の値をとる。

【Jaccard係数】
・0.1 →関連あり
・0.2 →強い関連あり
・0.3以上 →とても強い関連あり
※ただし、あくまで目安であって絶対ではない。

共起ネットワーク

ざっと確認したところ、共通するキーワードが中央のサブグラフ(バブルが島状に集まった一塊)に表示され、類話によって異なるキーワードがそれぞれのサブグラフとして周辺に表示される形となっている。

※なお、各バブル間の距離や配置に意味はない。

◆対応分析

・[コーディング単位]を[H5]に設定する。

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

対応分析

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

原点付近には「男」「まな板」といったキーワードがプロットされている。未来社版では「怪力」「古墳」「寿命」といったキーワードが原点から離れてプロットされている。日本標準版では「御殿」「赤ん坊」「棺桶」といったキーワードが特徴的とされている。みずうみ書房版では「舟のり」といったキーワードが特徴的とされている。

◆解釈

八百比丘尼型のお話である。未来社版では古墳の穴と関連づけられている。みずうみ書房版では判然としないが、やはり古墳かもしれない。

◆階層的クラスター分析

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

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

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

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

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

◆クロス集計

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

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

クロス集計

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

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

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

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 食べる 動詞  12 (0.169)  7 (0.438) 0.3333
2 知る 動詞  4 (0.056)  4 (0.250) 0.25
3 人魚 名詞  6 (0.085)  4 (0.250) 0.2222
4 名詞C  12 (0.169)  5 (0.313) 0.2174
5 名詞C  8 (0.113)  4 (0.250) 0.2
6 見る 動詞  9 (0.127)  4 (0.250) 0.1905
7 土産 名詞  5 (0.070)  3 (0.188) 0.1667
8 竜宮 名詞  5 (0.070)  3 (0.188) 0.1667
9 思う 動詞  8 (0.113)  3 (0.188) 0.1429
10 言う 動詞  11 (0.155)  3 (0.188) 0.125

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 戸棚 名詞  2 (0.028)  2 (0.500) 0.5
2 入れる 動詞  3 (0.042)  2 (0.500) 0.4
3 知る 動詞  4 (0.056)  2 (0.500) 0.3333
4 人魚 名詞  6 (0.085)  2 (0.500) 0.25
5 一寸 名詞  1 (0.014)  1 (0.250) 0.25
6 姿 名詞C  1 (0.014)  1 (0.250) 0.25
7 持ち帰る 動詞  1 (0.014)  1 (0.250) 0.25
8 捨てる 動詞  1 (0.014)  1 (0.250) 0.25

※「ぬ」はみずうみ書房版との関連が強いようだ。

知らずに長寿をもたらす人魚の肉を食べたところ、長寿を得たものの、それは孤独をももたらした……といった粗筋となっている。

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

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

・[主人|竜宮:人魚/人]
・[娘|人魚の肉:生/長寿]
・[娘|人魚の肉:長寿/孤独]

こういった風にお話を転がしていると分析できる。

竜宮に招かれた主人は大層なもてなしを受けるものの、料理場で見た人魚をヒトと誤認してしまう。安楽な気分は恐怖へと転倒される。

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

招かれた客が料理場で人魚を目撃してしまうくだりに関連したキーワードを指定したところ、「主人」「人魚」がやや離れた位置にプロットされた。

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

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献
・『日本の民話 34 石見篇』(大庭良美/編, 未来社, 1978)pp.251-252.
・『島根のむかし話』(島根県小・中学校国語教育研究会/編著, 日本標準, 1976)pp.236-240.
・『日本伝説大系 第11巻 山陰(鳥取・島根)』(野村純一他, みずうみ書房, 1984)p.112.
・『動かして学ぶ!はじめてのテキストマイニング』(樋口耕一, ナカニシヤ出版, 2022)
・『社会調査のための計量テキスト分析 【第2版】 内容分析の継承と発展を目指して』(樋口耕一, ナカニシヤ出版, 2020)

|

« 福光浅利道路の2026年度予算 | トップページ | 2025年10月~2026年3月の本館実績 »

昔話」カテゴリの記事