2026年5月14日 (木)

昔話の計量テキスト分析――異類婚姻譚

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_011_iruikonintan.xlsx

ダウンロード - ca_011_codingrules.txt

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

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

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

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

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

◆あらすじ

・「しの田の森の白狐」(未来社『石見の民話』)
昔、炭焼きがいた。女房もおらず貧乏をしていた。ある日いつものように炭焼きをしていると、やせた狐がやってきたので炭焼きはむすび飯の残りを与えた。それから四五日経って、美しい女房がやってきて嫁にして欲しいと頼んだ。炭焼きは貧乏だからと断ったが、女房が頼み込んだので嫁にした。女房はよく働き反物も織ったので暮らしも楽になり男児が生まれた。男児が三歳になったある日、母親が昼寝をしているのを見ると、着物の裾から尻尾が覗いていた。母親は誤魔化した。びっくりした男児は父親にそのことを話した。母親は書き置きを残して逃げた。父親は書き置きを読んでびっくりして子供を連れてしの田の森へいった。書き置きにあった歌の返歌を読む。すると母狐の親の婆さんが出てきた。婆さん狐は人間の孫はお前一人だけだと懐かしがる。爺さん狐も母狐も出てきた。孫に何かやりたいと婆さん狐が言ったので母狐が知恵と言えと子供に教えた。それで爺さん狐は耳とくをくれた。耳にかけると鳥や獣の言葉が分かる、三里先のことでも聞こえる便利なものだった。子供はその耳とくを得たので世の中のことが何でも分かる様になると評判となった。ある時天子が病気になったとき、この子供を召して病気を治させた。子供は大層なご褒美を得た。


・「一本草」(未来社『石見の民話』)
夫婦の狐がいた。ところが雄狐が猟師にとられてしまった。これを悲しんだ雌狐は何とかして夫の仇をとろうと思って、女に化けて猟師のところへ訪ねていった。そして妻にして欲しいと頼んだ。猟師は独り者だったから妻にした。そのうちに子供ができた。子供はすくすくと大きくなった。ある日いつものように男は猟に出た。そして夕方になって帰って家へあがると何か大きな尻尾のようなものを踏んだ。すると女房がキャッといって急いで尻尾を隠した。男はびっくりしてお前は獣だろうと言った。女房は自分は男に殺された狐の妻である。何とかして夫の仇を討ちたいと思って人間に化けて男の妻にしてもらった。そして隙を狙って殺そうと思ううちに可愛い子供が生まれて、それもできず今日までこうして暮らしていた。しかしこうなってが仕方がない。男を騙したことはお詫びする。子供はどうか立派に育てて欲しい。きっと恩返しすると言ってコンコンと啼いて逃げていった。そのうち田植え時期になった。妻がいなくなった男は小さい子供を連れて一人で田植えをしなければならない。代をかいて苗を配って昼飯を食べて来て見ると、田にはいつの間にかきれいに苗が植えてあった。次の日もその次の日も同じことが続いた。不思議に思って誰が植えてくれるのか見ようと思って、山へ登って弁当を食べながら見ていると狐がたくさん出てきて箒柴をかついでまたたく間に植えてしまった。女房になった狐が仲間をつれて来て植えてくれるのかと男は喜んだ。秋になると余所の稲は皆穂が出たがこの男の稲には穂が出ない。そこで地頭がお前の田は穂が出ないから年貢はいらぬと言った。男はその稲を刈ってこいでみると穂がないのに籾がどんどん出て大変な収穫であった。それが一本草という稲で、一本草の稲の穂は袴より上には出ないのだそうだ。


・「蛤姫」(未来社『石見の民話』)
昔、一人の若い漁夫がいた。毎日海へ出て魚を獲って、それを町で売って生計を立てていた。ある日、いつもの様に舟で漁をしたが、一尾もかからなかった。もう一度釣ってかからなかったら今日はやめようと思って最後の糸を投げ込んだ。しばらくすると手応えがある。やっとのことで引き上げてみると、見たこともない様な珍しい蛤だった。びっくりして見とれていると、蛤が二つに割れて中からきれいな女の子が出てきた。漁夫は喜んで家へ連れて帰り、蛤姫と名をつけて大切に育てた。姫は大きくなるにつれてますます美しくなった。そして姫は機を織ることが大変上手で、その織物は何ともいえぬ美しさだった。漁夫はそれからは漁をやめ、姫の織った反物を町に売りに出て、たくさんの金を儲け、楽しく暮らした。姫は美しい反物を織るばかりでなく、機を織る音がまるで美しい音楽のようだった。それを聞いた人たちが姫の機を織る様子を見ようと漁夫の家に押しかけてきたが、姫はなぜか一室に閉じこもって、戸を固く閉め、機を織る姿を誰にも見せなかった。ある日、漁夫はいつも通り、反物をもって町へ出かけた。ある一軒の大きな家で呼び止められ、たくさんの金で買い取られた。よい物を買った。お礼にと座敷に上げ、ご馳走やお酒でもてなした。漁夫はよい気分で酔い潰れてしまった。家では蛤姫が今日も一人、一室で美しい音をたてながら、とんとんからりと機を織っていた。すると近所の人たちがやって来て、今日は漁夫が帰っていないから、戸を開けてみようではないかと相談して、部屋へそっと近寄るといきなり戸をあけてのぞき込んだ。蛤姫はびっくりして機を織る姿を見られたら、もうここにいることはできない。蛤の中へ帰ると言って消えてしまった。


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


◆コーディングルール

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

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

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

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

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

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

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

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


*女房
女房 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]に設定する。

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

対応分析

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

原点付近には「女房」といったキーワードがプロットされている。離れた位置にプロットされているのは「しの田の森の白狐」では「炭焼き」「耳とく」「治す」、「一本草」では「雌狐」「一本草」「猟師」、「蛤姫」では「蛤姫」「あける」、「蛙の恩返し」では「ぬ」といった辺りである。

◆解釈

異類婚姻譚の多くは動物の嫁入りと別離とが描かれているが、「蛙の恩返し」では蛙を助けるという約束で蛇を嫁にしたため病んでしまうといった展開となっている。蛙の復讐譚とも解釈できる。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

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

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

マップとして描画したところ、「母親」「しの田」「機」「織る」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「女房」「母親」「ない」「狐」「漁夫」「男」が大きく描画された。

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 名詞C  4 (0.038)  4 (0.222) 0.2222
2 名詞C  3 (0.029)  3 (0.167) 0.1667
3 出る 動詞  11 (0.105)  4 (0.222) 0.16
4 姿 名詞C  4 (0.038)  3 (0.167) 0.1579
5 名詞C  5 (0.048)  3 (0.167) 0.15
6 織る 動詞  7 (0.067)  3 (0.167) 0.1364
7 見る 動詞  8 (0.076)  3 (0.167) 0.1304
8 名詞C  20 (0.190)  4 (0.222) 0.1176
9 名詞C  2 (0.019)  2 (0.111) 0.1111
10 名詞C  2 (0.019)  2 (0.111) 0.1111

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 何とも 副詞  1 (0.010)  1 (0.250) 0.25
2 可愛い 形容詞  1 (0.010)  1 (0.250) 0.25
3 名詞C  1 (0.010)  1 (0.250) 0.25
4 織物 名詞  1 (0.010)  1 (0.250) 0.25
5 狙う 動詞  1 (0.010)  1 (0.250) 0.25
6 地頭 名詞  1 (0.010)  1 (0.250) 0.25
7 年貢 名詞  1 (0.010)  1 (0.250) 0.25
8 上手 形容動詞  2 (0.019)  1 (0.250) 0.2
9 生まれる 動詞  2 (0.019)  1 (0.250) 0.2
10 大変 形容動詞  2 (0.019)  1 (0.250) 0.2

動物が嫁入りしたものの別離してしまう……といった粗筋となっている。

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

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

・[雌狐|むすび飯:飢え/嫁入り]
・[雌狐|子供:復讐心/情]
・[一本草|穂:出ない/豊作]
・[蛤姫|姿:見られる/消える]
・[蛇|卵:採る/殺される]

こういった風にお話を転がしていると分析できる。蛇は夫の病を治すため「女房/蛇」と転倒、元の姿に戻って鷹の卵を採ろうとするが攻撃され「生/死」と転倒する。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

動物が嫁入りするくだりに関するキーワードを指定したところ、「漁夫」「男児」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

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

[コーディング単位]は[文]で固定。

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年5月13日 (水)

昔話の計量テキスト分析――狐女房(異類婚姻譚)

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_010_kitsunenyobo.xlsx

ダウンロード - ca_010_codingrules.txt

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

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

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

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

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

◆あらすじ

・「しの田の森の白狐」(未来社『石見の民話』)
昔、炭焼きがいた。女房もおらず貧乏をしていた。ある日いつものように炭焼きをしていると、やせた狐がやってきたので炭焼きはむすび飯の残りを与えた。それから四五日経って、美しい女房がやってきて嫁にして欲しいと頼んだ。炭焼きは貧乏だからと断ったが、女房が頼み込んだので嫁にした。女房はよく働き反物も織ったので暮らしも楽になり男児が生まれた。男児が三歳になったある日、母親が昼寝をしているのを見ると、着物の裾から尻尾が覗いていた。母親は誤魔化した。びっくりした男児は父親にそのことを話した。母親は書き置きを残して逃げた。父親は書き置きを読んでびっくりして子供を連れてしの田の森へいった。書き置きにあった歌の返歌を読む。すると母狐の親の婆さんが出てきた。婆さん狐は人間の孫はお前一人だけだと懐かしがる。爺さん狐も母狐も出てきた。孫に何かやりたいと婆さん狐が言ったので母狐が知恵と言えと子供に教えた。それで爺さん狐は耳とくをくれた。耳にかけると鳥や獣の言葉が分かる、三里先のことでも聞こえる便利なものだった。子供はその耳とくを得たので世の中のことが何でも分かる様になると評判となった。ある時天子が病気になったとき、この子供を召して病気を治させた。子供は大層なご褒美を得た。


・「一本草」(未来社『石見の民話』)
夫婦の狐がいた。ところが雄狐が猟師にとられてしまった。これを悲しんだ雌狐は何とかして夫の仇をとろうと思って、女に化けて猟師のところへ訪ねていった。そして妻にして欲しいと頼んだ。猟師は独り者だったから妻にした。そのうちに子供ができた。子供はすくすくと大きくなった。ある日いつものように男は猟に出た。そして夕方になって帰って家へあがると何か大きな尻尾のようなものを踏んだ。すると女房がキャッといって急いで尻尾を隠した。男はびっくりしてお前は獣だろうと言った。女房は自分は男に殺された狐の妻である。何とかして夫の仇を討ちたいと思って人間に化けて男の妻にしてもらった。そして隙を狙って殺そうと思ううちに可愛い子供が生まれて、それもできず今日までこうして暮らしていた。しかしこうなってが仕方がない。男を騙したことはお詫びする。子供はどうか立派に育てて欲しい。きっと恩返しすると言ってコンコンと啼いて逃げていった。そのうち田植え時期になった。妻がいなくなった男は小さい子供を連れて一人で田植えをしなければならない。代をかいて苗を配って昼飯を食べて来て見ると、田にはいつの間にかきれいに苗が植えてあった。次の日もその次の日も同じことが続いた。不思議に思って誰が植えてくれるのか見ようと思って、山へ登って弁当を食べながら見ていると狐がたくさん出てきて箒柴をかついでまたたく間に植えてしまった。女房になった狐が仲間をつれて来て植えてくれるのかと男は喜んだ。秋になると余所の稲は皆穂が出たがこの男の稲には穂が出ない。そこで地頭がお前の田は穂が出ないから年貢はいらぬと言った。男はその稲を刈ってこいでみると穂がないのに籾がどんどん出て大変な収穫であった。それが一本草という稲で、一本草の稲の穂は袴より上には出ないのだそうだ。


◆コーディングルール

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

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

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

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

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

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

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

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


*女房
女房 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]に設定する。

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

対応分析

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

原点付近にはキーワードがプロットされていない。離れた位置にプロットされているのは「しの田の森の白狐」では「むすび飯」「歌」「炭焼き」、「一本草」では「雌狐」「一本草」「猟師」といった辺りである。

◆解釈

狐が人間の嫁となるという異類婚姻譚である。動物の声が分かる耳とくは呪物としていいだろう。一本草という稲は呪物とまでは言えないが、背が低く収穫量が見込める品種があるのだろうか。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

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

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

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

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 名詞C  4 (0.082)  4 (0.667) 0.6667
2 名詞C  3 (0.061)  3 (0.500) 0.5
3 出る 動詞  8 (0.163)  4 (0.667) 0.4
4 名詞C  9 (0.184)  3 (0.500) 0.25
5 刈る 動詞  1 (0.020)  1 (0.167) 0.1667
6 名詞C  1 (0.020)  1 (0.167) 0.1667
7 仕方 ナイ形容  1 (0.020)  1 (0.167) 0.1667
8 収穫 サ変名詞  1 (0.020)  1 (0.167) 0.1667
9 副詞可能  1 (0.020)  1 (0.167) 0.1667
10 小さい 形容詞  1 (0.020)  1 (0.167) 0.1667

狐が嫁入りしたものの別離してしまうが、幸せがもたらされる……といった粗筋となっている。

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

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

・[雌狐|むすび飯:飢え/嫁入り]
・[雌狐|子供:復讐心/情]
・[一本草|穂:出ない/豊作]
・[天子|耳とく:病/回復]

こういった風にお話を転がしていると分析できる。雌狐は嫁入りすることで「女房/母親」と属性が変化するが、それに伴って心情も「復讐心/情」と転倒する。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

狐が嫁入りするくだりに関するキーワードを指定したところ、「父親」「夫婦」「猟師」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

[コーディング単位]は[文]で固定。

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年5月12日 (火)

昔話の計量テキスト分析――隣の爺(模倣者)

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_009_tonarinoji.xlsx

ダウンロード - ca_009_codingrules.txt

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

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

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

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

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

◆あらすじ

・「ぶいが谷の酒」(未来社『石見の民話』)
昔あるところに良い爺さんと悪い爺さんがいた。良い爺さんがあるとき山の中で木を伐っていると、木を伐るたびに「ぶいぶいぶいが谷に酒が湧く」という音がする。ぶいが谷に行ってみると谷から酒が湧き出ていた。良い爺さんが飲んでみると、とても旨いので、夢中になって飲むうちにすっかり酔って寝込んでしまった。すると、猿がたくさん出てきて、ここに地蔵さんが寝ている。どこかへ持っていってお祀りしようと言って良い爺さんをかついで走っていった。その内に良い爺さんの金玉がぶらりと下がった。猿たちはこれを見て、ぶらりと下がった。何だろうと言ったので、良い爺さんはお香の袋と言った。しばらく行くと良い爺さんが屁をひった。ぷうんと出たのは何だろう。良い爺さんはお香の匂いと言った。良い爺さんは山の中のどこかへ連れて行かれて地蔵にされた。猿たちは爺さんを座らせると供物をたくさん供え、拝んでどこかへ行ってしまった。良い爺さんは猿がいなくなると供物を持って帰って近所の人たちに配った。隣の悪い爺さんはそれを聞いて、自分もそんな目に遭おうと思って、ぶいぶい谷へ行って酒を飲んで寝ていた。すると猿がまた出てきて悪い爺さんをかついで行った。その内に屁の方が先に出たので、悪い爺さんがおかしくてくすくす笑うと、猿たちは怒ってまた昨日の様に地蔵さまの真似をして供物だけをとって行こうとするふとい奴だと言って、よってたかってかきむしったので悪い爺さんは血だらけになってしまった。悪い婆さんは夕方になっても悪い爺さんが帰らないので山へ迎えに行くと遠くに悪い爺さんが見えた。悪い爺さんと同じ様に欲張りの悪い婆さんは悪い爺さんが赤いきれいな着物を着て帰ったと思って大喜びしたが、近寄ってみると、悪い爺さんは血だらけになってうんうん苦しんでいた。


・「屁ひり爺」(未来社『石見の民話』)
昔あるところに爺さんがいた。ある日お殿さまの山で木を伐っていたら、お殿さまの行列が通った。お殿さまが人の山で木を伐るのはどいつだと言った。爺さんは日本一の屁ひりじいと言った。それなら屁を一つひってみよとなり、ここには尻にとげがたってひられない、板の間は冷たくてひられない、畳はつるつるしてひられないとなり、毛氈ならひられるとなった。毛氈の上で錦ざらざら黄金ざらざら五葉の松原はスッポロポンのポンと大きな屁を見事にひった。お殿さまは大層喜ばれて、まさしく日本一の屁こき爺だ。褒美をとらせると言った。爺さんは褒美をもらった。それを聞いた隣の欲張り爺さんが自分も褒美を貰わねばと、お殿さまの山で木を伐っていた。お殿さまの行列が通って人の山で木を伐るのはどいつだと言った。欲張り爺さんは日本一の屁ひり爺と言った。それでは屁をひとつひってみせよとなった。ここには尻にとげがたってひられない、板の間は冷たくてひられない、畳はつるつるしてひられないとなり、毛氈ならひられるとなった。毛氈の上で錦ざらざら黄金ざらざら五葉の松原とやったが屁が出ない。そこで隣の爺さんは錦ざらざら黄金ざらざら五葉の松原はスッポロポンのポンとやったが、出たのは屁ではなく大きな黄色なのがポン。お殿さまは怒って、よくも嘘をついたなと一刀のもとに尻を切ってしまった。だから欲張りをして人まねをしてはいけない。


・「えんこうの一文銭」(未来社『石見の民話』)
昔あるところに川の東の岸と西の岸に一軒ずつ家があって、それぞれ爺さんと婆さんが住んでいた。東岸の爺さんは正直者で一匹の猫を飼っていたが貧乏なので十分食べさせることができなかった。ところがある日、竜宮さまがえんこうの一文銭をやるから天井の裏へ下げて祀れとお告げになった。朝起きてみると果たして東岸の爺さんの枕元にえんこうの一文銭がおいてあった。その一文銭を天井の裏に吊すと、これまで貧乏だった東岸の爺さんの家は日増しに身上が良くなった。反対に欲張りな西岸の爺さんの家は次第に身上が悪くなっていった。女はとかく口さがなく東岸の爺さんがえんこうの一文銭を授かってから日ごと身上が良くなったということを西岸の婆さんに話したので、これを聞いた西岸の爺さんは早速東岸の家へ行ってえんこうの一文銭を貸してくれないかと頼んだ。正直者の東岸の爺さんは長い間は貸せられないが一時なら貸してあげようと言って貸した。西岸の爺さんはその一文銭を持って帰って天井裏に吊しておくとその日から身上が次第に盛り返してきた。東岸の家は一文銭を貸した日からまた昔のように目に見えて貧乏になっていった。そこで西岸の爺さんに貸した一文銭を返してくれと催促にいったが、何とか理由をつけてどうしても返さないので、東岸の爺さんは困って戻ってきた。東岸の婆さんは考えあぐねた末に家の飼い猫に一文銭をとって来るようにいいつけた。猫は川が渡れないので困っていると、一匹の犬が来た。犬に訳を話して川を背負って渡してくだされと頼んだので、猫は犬に負われて川を渡ることができた。猫が西岸の家に行ってみると、鼠がいたので猫はすかさずこの鼠を捕って、お前の命を助けてやるから天井裏にある一文銭を取ってこいと頼んだ。鼠は天井裏に上がって一文銭を落として持ってきた。猫はそれを貰って、また犬に川を渡してもらうように頼んだ。犬の背に負われて川の中程まで来たとき、犬がくわえた物を落とすなよと言ったので猫はハイと返事した。その調子で一文銭が水の中へ落ちた。猫は泣かんばかりになって思案した。そうしたら空から一羽の鳶が下りて来たので猫は鳶を狙って咥えた。そして命を助けてやるからこの川に落ちた一文銭を探してこいと頼んだ。鳶は川の底にあるものは見えないので、川の上を泳いでいた鵜を咥えて、お前は水の底にいる鮎でも捕るのだから水の底に落ちた一文銭を拾ってくれと頼んだ。そこで鵜は川の端を上下したがちっとも見えないので大きな鮎を咥えてお前の命をとるのではない。この川に落ちているえんこうの一文銭を取ってくれ。お前は水の底を歩いて蟹とえびでさえ餌にするくらい水の底のことは達者だからと頼んだ。鮎は水の底を泳いでいくと果たしてえんこうの一文銭があった。それを拾い上げて鵜に渡した。鵜はそれを鳶に渡して鳶はそれを猫に渡した。猫はとうとう水の底から一文銭を拾い上げることができたので、喜んで歌にうたった。「猫に鼠に空たつ鳶に 川で鵜の鳥、鮎の魚」。犬は川を渡してくれたが大切な一文銭を水の中に落とすようなことをさせたので、この歌の仲間に入れていないそうだ。猫はえんこうの一文銭を持って帰って爺さんに渡したので東岸の家はまた次第に身上がよくなった。


・「とりつこうかひっつこうか」(未来社『石見の民話』)
昔、あるところに爺さんと婆さんがいた。爺さんは山へ木こりに行った。婆さんは後から弁当を持っていった。松の木原を通りかかると「とりつこうかひっつこうか」と声がした。恐ろしくなった婆さんは急いで爺さんのところへ行った。帰りはどうしようかと婆さんが言うと「とりつかばとりつけ、ひっつかばひっつけ、黄金、白金、大判も小判もひっつけ」と言えと教えた。そこで婆さんが帰りに松の木原を通りかかると「とりつこうかひっつこうか」と声がしたのでは婆さんは爺さんに聞いた通りに言った。そうしたら大判、小判、白金が手も足も動かないほどに引っ付いた。婆さんはうんうん唸って家に戻って、身体にひっついた黄金、白金、大判、小判をむしりとって大金持ちになった。これを隣の婆さんが聞いて、隣の爺さんを無理やり山へ木こりにやった。そして後から弁当を持っていった。松の木原を通りかかると「とりつこうかひっつこうか」と声がした。帰りにまた声がした。隣の婆さんは「とりつかばとりつけ、ひっつかばひっつけ」と言った。すると隣の婆さんの身体に松やにが一杯引っ付いた。そこへ六部さんが通りかかった。隣の婆さんがうんうん唸っているので具合が悪いのか訊いたところ、「具合どころではない。松やにだらけで手も足も動かされん」と言った。そこで六部さんがこの松やにを取るには家へ帰って大火を焚いて焙れと言った。そこで隣の婆さんは家へ帰って大火を焚いて焙った。そうしたら、隣の婆さんの身体に火がついて、隣の婆さんは焼け死んだ。人まねをして欲張るものではない。


・「舌切雀」(未来社『石見の民話』)
正直な爺さんと欲の深い婆さんがいた。爺さんは一羽の雀を可愛がって買っていた。いつも山に行くときには、雀や雀、行ってくると我が子に言うように別れをして行った。ある日婆さんは糊を煮ておいて川へ洗濯に行った。その留守に雀は糊をみんな食べてしまった。婆さんは帰ってみると糊がないので腹をたてて雀の舌を切って追い出した。爺さんは山から帰って今帰ったと何遍も呼んだが、雀の姿が見えないので婆さんに訊くと、婆さんは糊を全部食べてしまったので腹がたったから舌を切り取って追い出したと言った。爺さんは可哀想なことをした言って泣きながら舌切雀、舌切雀と言って山へ雀を訪ねに出かけた。すると馬を洗っている男がいたので、ここを舌切雀が通らなかったか尋ねると、馬を洗った汁を馬桶にいっぱい飲んだら舌切雀の行った方角を教えてあげると言った。爺さんは馬を洗った汁など何でもないと言って、その汁をガブガブ飲んだ。馬洗いは向こうの藪へ行ったと教えた。爺さんは藪へ行って探したがいないので、また山を越えて先へ進んでいった。すると谷川の傍で牛を洗っている男がいたので、ここを舌切雀が通らなかったか尋ねると、牛洗いは牛を洗った汁を牛桶にいっぱい飲んだら教えてあげると言った。爺さんは牛を洗った汁くらい何でもないと言ってその汁を飲んだので、牛洗いはこの曽根を下りて向こうの竹藪でタラタラ血を流した雀がいると教えてくれた。爺さんは喜んで、雀、お宿はどこだと訪ねていった。すると雀は口から血をたらしながら、お爺さんおいで、こちらでござると言って雀の宿へ案内した。そしてお茶やお菓子、色々とご馳走を出して、しまいに土産につづらをあげると言って重いつづらと軽いつづらを出した。爺さんは年をとったから軽い方がよいと言って小さいつづらを貰って帰った。婆さんはそれを見ると、長らく置いた雀だから、自分も行ったらつづらをくれるだろうと訪ねていった。途中婆さんはつづらが欲しいばかりに馬の洗い汁を馬桶にいっぱい、牛の洗い汁を牛桶にいっぱい飲んで雀の所へ行った。雀は婆さんを見ると、婆さん舌を切られて苦しい。今度あなたの傍へ寄ったら、羽でも切られてしまうかもしれないと言ってとりあわない。わざわざ訪ねてきた婆さんは雀のご馳走も食べられず、馬の洗い汁と牛の洗い汁で腹をだぶだぶさせながら、ようやく重いつづらを見つけ出し、これこれと言って取り上げて背負って帰った。早速開けてみると、中には汚いスズや茶碗のかけらに蛙や蛇の骨ばかり。宝どころか命が助かったのが何よりであった。しかし、悪いことをした婆さんはそれから病気になって死んでしまった。


・「榎の実ならいで金がなる」(未来社『石見の民話』)
昔、二人の兄弟がいた。弟は横着者で、兄の財産を皆もって分家した。兄は年取った母を養わねばならないのに、財産は皆弟に取られて貧乏していたので、除夜がきても餅もつけない有様だった。弟は餅をたくさん搗いたが兄へはひとつもやらない。兄はせめて母だけでも餅を食べさせたいと思って弟のところへ餅をもらいに行った。弟の家ではたくさん餅を並べていたが、兄に一つでも食えとは言わない。自分で搗いて食べさせたらいいだろうと言ってくれようとしなかった。兄はすごすごと戻ってきたが、つくづく情けなくなって自分は年の暮れになっても餅さえよく搗かぬと言って杵を海に捨ててしまった。すると竜宮から使いが来て兄を竜宮へ連れていった。竜宮では唐金の馬を一匹くれた。そしてこの馬に一日を米を五合ずつ食べさせよ。五合しか食べさせてはいけないと言った。兄は喜んで馬を連れて帰ると、米を五合食べさせた。すると馬は金を一升ひった。そして毎日五合ずつ食べさせたので、まもなく沢山の金が貯まった。それを聞いて弟がやって来て、いい馬を貰ったそうだが兄弟の間柄だ、少し貸してくれないかと言った。兄は正月の餅をせめて母に食べさせたいと思って弟のところに貰いにいったが、一つもくれなかったと言って馬を貸さなかった。すると母がそれでは二日だけ貸してやらぬかと言ったので、とうとう馬を貸してやった。そして決して一日に米を五合しか食わせてはいけないぞと言った。弟は馬を連れて帰ると、欲張りだから一日に一升の米を食べさせた。すると馬はぽっくり死んでしまった。弟は馬を背戸の柿の木の根元へ埋めた。兄は弟がいつまで待っても馬を返さないので、馬を戻すように弟のところへやって来た。弟は馬は死んだから柿の木の根元へ埋めたと言った。兄はお前が米を余計に食わせたからだと言って、大層力を落として柿の木の根元に埋めてある馬を掘りあてて持って帰り、自分の家の背戸の畑へ埋めて、墓印に榎を一本植えておいた。ところが榎には葉が出ないで黄金がいっぱいついて出た。それで「これのお背戸の三つ又榎 榎の実ならいで金がなる」というのだそうだ。


◆コーディングルール

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

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

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

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

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

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

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

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


*爺さん
爺さん or 爺 or 'じい'
*ぶいが谷
'ぶいが谷' or 'ぶいぶい谷' or 谷
*欲張り
欲張り or ( 欲 and 深い )
*東
東 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]に設定する。

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

対応分析

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

原点付近には「とりつこうかひっつこうか」では「ひっつく」「正直」「婆さん」、「舌切雀」では「爺さん」「雀」「あげる」といったキーワードがプロットされている。離れた位置にプロットされているのは「ぶいが谷の酒」では「ぶいが谷」「酒」「供物」、「屁ひり爺」では「日本一」「殿さま」「褒美」、「榎の実ならいで金がなる」では「五合」「一升」、「えんこうの一文銭」では「一文銭」「猫」「身上」といった辺りである。

◆解釈

隣人が善良な爺さん婆さんの模倣をしたところ、逆効果となってしまうタイプのお話である。隣人は主体の対立者なのか、もう一方の主体なのかといった点でも解釈が分かれるか。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

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

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

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

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 言う 動詞  38 (0.260)  13 (0.361) 0.2131
2 名詞C  11 (0.075)  6 (0.167) 0.1463
3 貸す 動詞  7 (0.048)  5 (0.139) 0.1316
4 名詞C  11 (0.075)  5 (0.139) 0.119
5 食べる 動詞  12 (0.082)  5 (0.139) 0.1163
6 名詞C  4 (0.027)  4 (0.111) 0.1111
7 洗う 動詞  4 (0.027)  4 (0.111) 0.1111
8 名詞C  15 (0.103)  5 (0.139) 0.1087
9 見える 動詞  5 (0.034)  4 (0.111) 0.1081
10 名詞C  6 (0.041)  4 (0.111) 0.1053

欲深な者が善良な者の模倣をしたところ酷い目に遭う……といった粗筋となっている。

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

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

・[悪い爺さん|婆さん:赤い/血だらけ]
・[欲張り爺さん|殿さま:屁/実]
・[東岸の爺さん|身上:良くない/上向く]
・[猫|一文銭:落とす/拾う]
・[隣の婆さん|松やに:ひっつく/火傷]
・[婆さん|つづら:がらくた/病気]
・[兄|馬:死体/黄金]

こういった風にお話を転がしていると分析できる。猫が咥えていた一文銭は川に「落とす/拾う」と転倒するが、それによって動物たちのリレーが発生する。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

模倣者に関連したキーワードを指定したところ、「真似」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

[コーディング単位]は[文]で固定。

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年5月11日 (月)

昔話の計量テキスト分析――桃太郎&瓜姫(異常出生譚)

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_008_momotaroandurihime.xlsx

ダウンロード - ca_008_codingrules.txt

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

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

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

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

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

◆あらすじ

・「桃太郎」(未来社『石見の民話』)
昔、爺さんと婆さんがいた、爺さんは山へ木を伐りに、婆さんは川へ洗濯に行った。婆さんが川で洗濯していると上流から大きな桃が流れてきた。あまりに大きな桃なので爺さんと一緒に食べようと思って持って帰った。婆さんが包丁で桃を切ろうとすると桃がひとりでに割れ、中から大きな男の子が生まれた。たらいに湯を入れて洗ってやると、力の強い子でたらいを高くさしあげた。桃から生まれた桃太郎と名づけられた。桃太郎は成長して力の強い息子となった。ある日桃太郎はこれから鬼ヶ島へ征伐に行くから、きび団子を作ってくれと言った。婆さんはきび団子をこしらえて爺さんは鎧や兜をこしらえて持たせ、刀も持たせ大きな幟をこしらえてやった。桃太郎は爺さん婆さんと別れて弁当を食べていると犬が来てどこに行くか訊いた。鬼ヶ島へ行くと答えて、きび団子を与えると犬はお供となった。次に猿がやって来た。猿もきび団子を与えてお供にした。今度は雉子がやって来た。雉子もきび団子を与えてお供にした。それから丸木舟に乗って鬼ヶ島へ渡った。鬼ヶ島に行ってみると鬼が門番をしていた。雉子が鬼の目や鼻をつついて門番は中に逃げた。猿が門をよじ登って中から門を開けた。桃太郎が中へ攻め込んだ。犬はワンワン吠えて噛みつく。桃太郎は一番大きな鬼に刀を抜いて斬りかかった。鬼は金棒を振り回して桃太郎と戦ったがとうとう負けて降参した。助命する代わりに鬼たちが取った宝物を出させた。これを船に積み込んで戻った。爺さん婆さんは大喜びで、鬼からとった宝物や金を村の人に分けた。


・「桃太郎」(未来社『石見の民話』)
昔々、お爺さんとお婆さんがいた。二人の間には子供がなかったので、毎朝神さまに子供を授けてくださいと祈っていた。そうする内に一年過ぎ、二年過ぎた。ある日、お爺さんとお婆さんがいつものように神さまに祈っていると、どこからともなく、ここより北へ北へと進む内に大きな川の渕に出る。そこに大きな桃の木があって桃がなっているが、その中に一つ大きな桃がある。それを川へ落とさないように取って割ると子供が出るという声が聞こえてきた。お爺さんとお婆さんは喜んで、早速北へ北へと歩いて行った。しばらくすると大きな川があって、ほとりに大きな桃の木があった。桃が沢山なっていて、中に一つ大きな桃があった。お爺さんが木へ登って、桃を取ろうとすると枝が折れて、桃は川の中へ落ちて流れていったので、お爺さんとお婆さんはがっかりして家へ帰った。それからしばらく経って、ある日お爺さんは山へ木こりに、お婆さんは川へ洗濯に行った。お婆さんが洗濯をしていると、そこへ桃が流れてきた。


・「瓜姫」(未来社『石見の民話』)
昔あるところに爺さんと婆さんがいた。ある日爺さんは木を伐りに行った。婆さんは川へ洗濯に行った。婆さんは川で着物をすすいでいると、上の方から瓜が流れてきた。婆さんがそれを拾って食べたところ旨かったので、もう一つ流れよ、爺さんに持って帰ろうと言うと、また大きなのが流れてきた。持って帰るには難儀な大きな瓜だった。その瓜を婆さんは櫃の中に入れて爺さんが戻るのを待っていた。爺さんが帰ってきたので瓜を包丁で割ろうとすると瓜がぽっかり割れて中から可愛いお姫様が出てきた。瓜の中から出てきたから瓜姫という名にして可愛がって育てた。瓜姫が大きくなると、婆さんは糸を紡ぎ、爺さんは杼やくだをこしらえて機を織った。瓜姫は毎日機を織っていた。ある日、爺さんと婆さんは外出するので、留守中にあまんじゃくが来ても戸を開けるなと言い付けて出ていった。それで瓜姫は独りで機を織っていた。そこへあまんじゃくがやって来て姫さん、ちいと開けちゃんさいと言った。瓜姫が嫌だと言うと、そう言わんと指の入るほど開けちゃんさい。叱られたらわしが詫びるからと言って指の入るほど戸を開けさせた。今度は手の入るほど開けちゃんさいと言ったので手の入るほど開けてやった。次に頭の入るほど開けちゃんさいと言ったので頭の入るほど開けてやった。今度は身がらの入るほど開けちゃんさいと言った。瓜姫は嫌だと言ったが、あまんじゃくが自分が侘びるからと言ってとうとう中に入ってしまった。それから話をしていたが、これから柿を採りに行こうと言った。瓜姫はここから出たら爺さん婆さんに叱られるから嫌だと言ったが、爺さん婆さんの居ない内に戻ればいいと言って瓜姫を連れて柿の木谷へ出した。あまんじゃくは高い柿の木に登って採っては食いしたが瓜姫には一つもやらなかった。瓜姫には渋柿ばかり投げてよこした。瓜姫がせっかく来たのだから柿が食べたいというと、瓜姫を上がらせて、瓜姫の着ていた着物とあまんじゃくのぼろの汚い着物を交換して姫を高いところへ登らせて、葛を持ってきて姫を柿の木に縛りつけてしまった。あまんじゃくは瓜姫のきれいな着物を着て姫に化けて戻ってきて機を織っていた。そのうちに瓜姫はよいところに嫁にもらわれた。嫁入りの日が来て瓜姫に化けたあまんじゃくを駕籠に乗せて出かけた。柿の木谷を通ろうか栗の木谷を通ろうかと言うとあまんじゃくが栗の木谷を通ろうと言った。そこで栗の木谷を通ったが、栗のいがが足にたってやれないので引き返して柿の木谷を通った。柿の木の下を通ると瓜姫があまんじゃくが嫁入りすると言って泣いた。爺さんが上を見ると瓜姫が縛られているので、駕籠の中のはあまんじゃくが化けていることに気づいて、瓜姫は縄を解いて下ろして、あまんじゃくは引きずり出して三つに切った。粟の木に一切れ、麦の根に一切れ、蕎麦の根に一切れ埋めた。するとそれらの根は赤くなった。瓜姫はきれいな着物に着替えて嫁入りをした。


・「蛤姫」(未来社『石見の民話』)
昔、一人の若い漁夫がいた。毎日海へ出て魚を獲って、それを町で売って生計を立てていた。ある日、いつもの様に舟で漁をしたが、一尾もかからなかった。もう一度釣ってかからなかったら今日はやめようと思って最後の糸を投げ込んだ。しばらくすると手応えがある。やっとのことで引き上げてみると、見たこともない様な珍しい蛤だった。びっくりして見とれていると、蛤が二つに割れて中からきれいな女の子が出てきた。漁夫は喜んで家へ連れて帰り、蛤姫と名をつけて大切に育てた。姫は大きくなるにつれてますます美しくなった。そして姫は機を織ることが大変上手で、その織物は何ともいえぬ美しさだった。漁夫はそれからは漁をやめ、姫の織った反物を町に売りに出て、たくさんの金を儲け、楽しく暮らした。姫は美しい反物を織るばかりでなく、機を織る音がまるで美しい音楽のようだった。それを聞いた人たちが姫の機を織る様子を見ようと漁夫の家に押しかけてきたが、姫はなぜか一室に閉じこもって、戸を固く閉め、機を織る姿を誰にも見せなかった。ある日、漁夫はいつも通り、反物をもって町へ出かけた。ある一軒の大きな家で呼び止められ、たくさんの金で買い取られた。よい物を買った。お礼にと座敷に上げ、ご馳走やお酒でもてなした。漁夫はよい気分で酔い潰れてしまった。家では蛤姫が今日も一人、一室で美しい音をたてながら、とんとんからりと機を織っていた。すると近所の人たちがやって来て、今日は漁夫が帰っていないから、戸を開けてみようではないかと相談して、部屋へそっと近寄るといきなり戸をあけてのぞき込んだ。蛤姫はびっくりして機を織る姿を見られたら、もうここにいることはできない。蛤の中へ帰ると言って消えてしまった。


※「桃太郎」は邑智篇と石央篇とに同一タイトルで収録されている。便宜上、abと分記した。

◆コーディングルール

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

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

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

※[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]に設定する。

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

対応分析

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

原点付近には「川」「洗濯」「婆さん」といったキーワードがプロットされている。離れた位置にプロットされているのは邑智篇の「桃太郎」では「桃太郎」「鬼ヶ島」「きび団子」、石央篇の「桃太郎」では「落ちる」「がっかり」「神さま」、「瓜姫」では「あまんじゃく」「瓜姫」「るな」、「蛤姫」では「蛤姫」「漁夫」「できる」といった辺りである。

◆解釈

特殊な出生、異常出生譚に関するお話である。男児は英雄、女児は織姫といった風に立ち位置が異なるが、いずれも尋常でない能力を発揮する。また、「瓜姫」では戸を「開けるな」、「蛤姫」では「見るな」といった禁止が侵犯される展開となっているのも特徴である。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

クロス集計をかけたところ、「鬼ヶ島」「きび団子」「瓜姫」といったキーワードでカイ(χ)2乗値で相関関係を示す結果(※マーク)が得られた。

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

マップとして描画したところ、「瓜姫」「あまんじゃく」「漁夫」「蛤姫」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「婆さん」「瓜」が大きく描画された。

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 見る 動詞  4 (0.042)  3 (0.231) 0.2143
2 柿の木 地名  6 (0.063)  3 (0.231) 0.1875
3 名詞C  8 (0.084)  3 (0.231) 0.1667
4 出る 動詞  9 (0.095)  3 (0.231) 0.1579
5 祈る 動詞  2 (0.021)  2 (0.154) 0.1538
6 姿 名詞C  2 (0.021)  2 (0.154) 0.1538
7 子供 名詞  2 (0.021)  2 (0.154) 0.1538
8 神さま 名詞  2 (0.021)  2 (0.154) 0.1538
9 織る 動詞  10 (0.105)  3 (0.231) 0.15
10 今日 副詞可能  3 (0.032)  2 (0.154) 0.1429

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

N 抽出語 品詞 全体 共起 Jaccard
1 外出 サ変名詞  1 (0.011)  1 (1.000) 1
2 言い付ける 動詞  1 (0.011)  1 (1.000) 1
3 留守 サ変名詞  1 (0.011)  1 (1.000) 1
4 名詞C  4 (0.042)  1 (1.000) 0.25
5 来る 動詞  4 (0.042)  1 (1.000) 0.25
6 開ける 動詞  6 (0.063)  1 (1.000) 0.1667
7 出る 動詞  9 (0.095)  1 (1.000) 0.1111
8 婆さん 名詞  14 (0.147)  1 (1.000) 0.0714
9 爺さん 名詞  14 (0.147)  1 (1.000) 0.0714

特別な生まれ方をした男児や女児が活躍する……といった粗筋となっている。

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

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

・[婆さん|桃:拾う/誕生]
・[婆さん|瓜:拾う/誕生]
・[漁夫|蛤:釣る/誕生]
・[桃太郎|鬼:略奪/退治]
・[あまんじゃく|瓜姫:化ける/斬られる]
・[蛤姫|姿:見られる/消える]

こういった風にお話を転がしていると分析できる。婆さんが拾った瓜は「瓜/女の子」と転倒、以降の瓜姫の粗筋へと繋がっていく。蛤姫は機織りの姿を見られた結果、「いる/いられない」と転倒し、消えてしまう。

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

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

◆類似度行列

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

類似度行列

「あまんじゃく」には禁止の「な」が共起していることが分かる。

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

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

◆多次元尺度構成法

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

多次元尺度構成法

「見るな」「開けるな」といった禁止のくだりに関連したキーワードを指定したところ、「るな」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

[コーディング単位]は[文]で固定。

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年5月10日 (日)

昔話の計量テキスト分析――桃太郎

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_007_momotaro.xlsx

ダウンロード - ca_007_codingrules.txt

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

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

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

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

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

◆あらすじ

・「桃太郎」(未来社『石見の民話』)
昔、爺さんと婆さんがいた、爺さんは山へ木を伐りに、婆さんは川へ洗濯に行った。婆さんが川で洗濯していると上流から大きな桃が流れてきた。あまりに大きな桃なので爺さんと一緒に食べようと思って持って帰った。婆さんが包丁で桃を切ろうとすると桃がひとりでに割れ、中から大きな男の子が生まれた。たらいに湯を入れて洗ってやると、力の強い子でたらいを高くさしあげた。桃から生まれた桃太郎と名づけられた。桃太郎は成長して力の強い息子となった。ある日桃太郎はこれから鬼ヶ島へ征伐に行くから、きび団子を作ってくれと言った。婆さんはきび団子をこしらえて爺さんは鎧や兜をこしらえて持たせ、刀も持たせ大きな幟をこしらえてやった。桃太郎は爺さん婆さんと別れて弁当を食べていると犬が来てどこに行くか訊いた。鬼ヶ島へ行くと答えて、きび団子を与えると犬はお供となった。次に猿がやって来た。猿もきび団子を与えてお供にした。今度は雉子がやって来た。雉子もきび団子を与えてお供にした。それから丸木舟に乗って鬼ヶ島へ渡った。鬼ヶ島に行ってみると鬼が門番をしていた。雉子が鬼の目や鼻をつついて門番は中に逃げた。猿が門をよじ登って中から門を開けた。桃太郎が中へ攻め込んだ。犬はワンワン吠えて噛みつく。桃太郎は一番大きな鬼に刀を抜いて斬りかかった。鬼は金棒を振り回して桃太郎と戦ったがとうとう負けて降参した。助命する代わりに鬼たちが取った宝物を出させた。これを船に積み込んで戻った。爺さん婆さんは大喜びで、鬼からとった宝物や金を村の人に分けた。


・「桃太郎」(未来社『石見の民話』)
昔々、お爺さんとお婆さんがいた。二人の間には子供がなかったので、毎朝神さまに子供を授けてくださいと祈っていた。そうする内に一年過ぎ、二年過ぎた。ある日、お爺さんとお婆さんがいつものように神さまに祈っていると、どこからともなく、ここより北へ北へと進む内に大きな川の渕に出る。そこに大きな桃の木があって桃がなっているが、その中に一つ大きな桃がある。それを川へ落とさないように取って割ると子供が出るという声が聞こえてきた。お爺さんとお婆さんは喜んで、早速北へ北へと歩いて行った。しばらくすると大きな川があって、ほとりに大きな桃の木があった。桃が沢山なっていて、中に一つ大きな桃があった。お爺さんが木へ登って、桃を取ろうとすると枝が折れて、桃は川の中へ落ちて流れていったので、お爺さんとお婆さんはがっかりして家へ帰った。それからしばらく経って、ある日お爺さんは山へ木こりに、お婆さんは川へ洗濯に行った。お婆さんが洗濯をしていると、そこへ桃が流れてきた。


※「桃太郎」は邑智篇と石央篇とに同一タイトルで収録されている。便宜上、abと分記した。


◆コーディングルール

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

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

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

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

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

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

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

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


*爺さん
爺さん or お爺さん
*婆さん
婆さん or お婆さん
*鬼ヶ島
'鬼ヶ島'
*きび団子
'きび団子'
*舟
舟 or 船
*雉子
'雉子'
*鬼
鬼 or 門番

*ない
ない
*ぬ

*ん

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

*できる
できる
*やる
やる
*られる
られる
*せる
せる

*山

*川

*洗濯
洗濯
*大きい
大きい
*桃

*割れる
割れる
*男の子
男の子
*強い
強い
*桃太郎
桃太郎
*征伐
征伐
*お供
お供
*犬

*猿

*宝物
宝物
*子供
子供
*神さま
神さま
*祈る
祈る
*北

*渕

*ほとり
ほとり
*木

*なる
なる
*落ちる
落ちる
*流れる
流れる
*がっかり
がっかり


◆共起ネットワーク

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

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

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

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

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

共起ネットワーク

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

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

◆対応分析

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

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

対応分析

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

原点付近には「桃」「なる」「木」といったキーワードがプロットされている。離れた位置にプロットされているのは邑智篇の話では「桃太郎」「鬼ヶ島」「宝物」、石央篇の話では「子供」「落ちる」「がっかり」といった辺りである。

◆解釈

どちらも桃太郎のお話である。邑智篇はよく知られた粗筋である。石央篇はその前日譚的なお話となっている。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

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

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

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

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 祈る 動詞  2 (0.053)  2 (0.667) 0.6667
2 子供 名詞  2 (0.053)  2 (0.667) 0.6667
3 出る 動詞  2 (0.053)  2 (0.667) 0.6667
4 神さま 名詞  2 (0.053)  2 (0.667) 0.6667
5 割る 動詞  1 (0.026)  1 (0.333) 0.3333
6 授ける 動詞  1 (0.026)  1 (0.333) 0.3333
7 進む 動詞  1 (0.026)  1 (0.333) 0.3333
8 名詞C  1 (0.026)  1 (0.333) 0.3333
9 聞こえる 動詞  1 (0.026)  1 (0.333) 0.3333
10 毎朝 副詞可能  1 (0.026)  1 (0.333) 0.3333
11 落とす 動詞  1 (0.026)  1 (0.333) 0.3333
12 地名  1 (0.026)  1 (0.333) 0.3333

お告げの桃の木を探し当てるも桃の実は落ちてしまい……といった粗筋となっている。

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

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

・[桃太郎|桃:拾う/誕生]
・[婆さん|桃:落ちる/拾う]

こういった風にお話を転がしていると分析できる。お告げの桃は「落ちる/拾う」と転倒、以降の桃太郎の粗筋へと繋がっていく。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

婆さんが桃の実を手に入れるくだりに関連したキーワードを指定したところ、「桃太郎」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

[コーディング単位]は[文]で固定。

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

トピックの推定

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年5月 9日 (土)

昔話の計量テキスト分析――影ワニ

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_006_kagewani.xlsx

ダウンロード - ca_006_codingrules.txt

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

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

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

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

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

◆あらすじ

・「影ワニ」(未来社『石見の民話』)
温泉津の辺りではサメのことをワニと言う。影ワニという怪物がいるという。船が沖を走っているとき、船乗りの影が海に映ることがある。その影を影ワニが呑むと、影を呑まれた船乗りは死ぬと言う。昔、ある船乗りが影を呑まれそうになった。気づいた船乗りは反対に影ワニを撃ち殺した。村に帰った船乗りは、ある日浜を歩いていると魚の骨が足の内に突き刺さった。その傷が元で船乗りは死んでしまった。後になって調べてみると、その骨は船乗りが殺した影ワニの骨であった。もし影ワニに見つかったら、むしろでも板でも海に投げて自分の影を消さなければならないと言う。

日祖の港の西側にアバヤという所がある。そこの岬に東から西に通り抜ける大きな洞穴がある。この東側の入口の沖で二人の漁師が漁をしていた。二人とも夢中になっていたが、突然一人が悲鳴を上げた。もう一人が驚いて振り返ると影も形も無かった。海に落ちたのかと、そこら中メガネで探したが見当たらなかった。後で村中総出で、やっと海の底から死んだ漁師の着物だけを拾い上げた。アバヤの洞穴には昔から影ワニが住んでいると言われている。


◆コーディングルール

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

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

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

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

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

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

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

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


*温泉津
'温泉津'
*影ワニ
'影ワニ'
*撃ち殺す
撃ち殺す or 殺す
*日祖
'日祖'
*アバヤ
'アバヤ'

*ない
ない or 無い
*ぬ

*ん

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

*できる
できる
*やる
やる
*られる
られる
*せる
せる

*サメ
サメ
*ワニ
ワニ
*船乗り
船乗り
*影

*呑む
呑む
*死ぬ
死ぬ
*魚

*骨

*傷

*むしろ
むしろ
*板

*投げる
投げる
*消す
消す
*洞穴
洞穴
*漁師
漁師
*悲鳴
悲鳴
*着物
着物
*見当たる
見当たる
*海

*探す
探す
*総出
総出


◆共起ネットワーク

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

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

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

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

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

共起ネットワーク

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

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

◆対応分析

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

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

対応分析

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

原点付近には「影ワニ」「死ぬ」「影」といったキーワードがプロットされている。離れた位置にプロットされているのは温泉津の話では「殺す」「骨」「船乗り」、日祖の話では「アバヤ」「洞穴」「便所」「悲鳴」といった辺りである。

◆解釈

石東の海の妖怪である。五十猛漁港では実際、サメ(ワニ)が水揚げされ、山間部に運ばれて食用とされている。これは体にアンモニアを含むため保存が利くからといった理由である。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

クロス集計をかけたところ、「船乗り」でカイ(χ)2乗値で相関関係を示す結果(※マーク)が得られた。

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

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

◆KWICコンコーダンス

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

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

◆関連語検索

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

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

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

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 名詞C  4 (0.222)  2 (0.667) 0.4
2 メガネ 名詞  1 (0.056)  1 (0.333) 0.3333
3 驚く 動詞  1 (0.056)  1 (0.333) 0.3333
4 名詞C  1 (0.056)  1 (0.333) 0.3333
5 見つかる 動詞  1 (0.056)  1 (0.333) 0.3333
6 見当たる 動詞  1 (0.056)  1 (0.333) 0.3333
7 自分 名詞  1 (0.056)  1 (0.333) 0.3333
8 消す 動詞  1 (0.056)  1 (0.333) 0.3333
9 振り返る 動詞  1 (0.056)  1 (0.333) 0.3333
10 探す 動詞  1 (0.056)  1 (0.333) 0.3333

影ワニに命を狙われると骨になってまで復讐するため極めて危険である……といった粗筋となっている。

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

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

・[船乗り|骨:負傷/死]
・[影ワニ|骨:負傷/死]
・[漁師|影ワニ:消える/着物]

こういった風にお話を転がしていると分析できる。船乗りは影ワニを射殺して難を逃れるものの、その後、その骨を踏むことで負傷し「生/死」と転倒してしまう。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

船乗りや漁師が影ワニに遭遇するくだりに関連したキーワードを指定したところ、「呑む」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

[コーディング単位]は[文]で固定。

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

枠を使い切る

市の応援チケット、残り三冊を買う。近所に利用可能なコンビニがあるので、あっさり使い切ってしまった。……物価高も痛感したが。

|

2026年5月 7日 (木)

昔話の計量テキスト分析――和尚と小僧

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_005_oshotokozo.xlsx

ダウンロード - ca_005_codingrules.txt

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

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

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

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

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

◆あらすじ

・「和尚と小僧」(未来社『石見の民話』)
和尚と小僧がいた。和尚は餅が好きでよく焼いて食べたが小僧にはやらなかった。ある日、和尚は小僧がいない時にまた餅を焼いていた。そこへ小僧がひょっこり入って来たので慌てて餅を灰の中へ埋めた。小僧は何かいい匂いがすると言った。和尚は小僧に知れては大変だと思って、何でもない。枯葉がいぶっているのだと答えた。小僧は和尚がまた餅を焼いているなと思って、時に裏の屋根が壊れたから直そうと思うがと話しかけた。和尚がお前直せるかと訊くと、小僧は何でもない。こうやって太い柱を立てるのだと火箸を灰に突き立てた。すると餅が刺さった。和尚は苦い顔をして妙なところに餅がある。お前にやろうと言った。小僧はありがとうございますと言ってむしゃむしゃ食べた。それから和尚、柱をもう一本こういう風に立てると言って別のところへ火箸を突き刺した。また餅が出た。和尚はおかしい、お前が食べよと答えた。小僧はむしゃむしゃ食べた。ところで和尚、その横にもう一本こういう風に立てると火箸に餅を突き刺した。更にもう一本とやった。和尚はたまらなくなって、小僧、柱を立てるのはそれくらいでよかろうと言った。こうして小僧は和尚がせっかく食べようと思って焼いた餅をみんな食べてしまった。


・「指合図」(未来社『石見の民話』)
禅寺の小僧は昔からしごにならない(手に負えない)ものであった。小僧が今日はご飯は何升炊くか問うと和尚は黙って指で知らせる。一本は一升、二本は二升。それで小僧が考えた。あるとき便所の踏板を外れるようにしておいた。和尚はいつものように朝便所に行くと踏板が外れて落ちた。びっくりした和尚は小僧を大声で呼ぶ。何事でございますかと言ってみると、和尚は便所へ落ちて両手をあげている。小僧は承知しましたとそのまま逃げてしまった。和尚はようやく上がって庫裡に行ってみると小僧は大釜に飯を炊いている。なぜそんなに飯を炊くのかと言うと、和尚が両手をあげておられたので一斗しかけましたと言った。和尚は仕方がない、干飯にしておけと言った。それから大分経って和尚が小僧を呼んで一斗の干飯はあるのか問うと、ほしいにせえとおっしゃったので、ほしい時に食べてしまいましたと言った。


・「馬のおとしもの」(未来社『石見の民話』)
山寺の小僧はしごにならない(手に負えない)ものであった。坊さんは魚を食うことは禁じてあった。ところが和尚がいつも戸棚へ頭を突っ込んで何やらむしゃむしゃ食べている。小僧にはないしょで見せない。ある日和尚が門徒の家に仏事を務めにいった。その留守に小僧が戸棚を開けてみると鯛の煮付けがある。和尚めがこんな物を隠して食べやがる。よしいつか仏罰を与えてやるから見ておれと思った。和尚が帰ってきたので小僧は戸棚の中にあるものは何かと問うた。和尚は小僧に見られたと思ったので、そしらぬ顔であれは「にかんのてて」というものだと答えた。ある日和尚が馬に乗って門徒の家に行くので小僧が後からついて行った。川を渡るときに魚がたくさん泳いでいた。小僧が和尚さん、あそこに「にかんのてて」が沢山ありますと言った。和尚は見たことは見捨て、聞いたことは聞き捨てにするものだと言った。それからどんどんついて行ったら風が吹いて和尚の頭巾が脱げて飛んだ。小僧は見たことは見捨ててどんどん行くと、和尚が頭に頭巾のないことに気がついて、小僧、俺の頭巾が落ちはしなかったかと訊いた。小僧は頭巾はあんなあとに落ちていたと答えた。なぜ拾わなかったかと訊くと、和尚が見たことは見捨てにせよと言ったから見捨てにしたと答えた。和尚が早く拾ってこい。馬から落ちたものは何もかも拾ってこいと答えたので、小僧は後に戻って頭巾を拾い、頭巾の中に馬の糞をいっぱい拾って差しだした。和尚が、これは馬の糞ではないかと叱ると、小僧はそれでも和尚は馬から落ちたものは何でも拾ってこいと言ったではないかとやり返した。


・「和尚さんと小僧」(未来社『石見の民話』)
昔、あるお寺に和尚がいた。その弟子に「ええかん」という小僧と「こす」という小僧がいた。和尚は大変酒が好きで、毎晩ちびりちびりと飲んでいたが、小僧たちには少しも飲ませなかった。あるとき和尚は酒が無くなったので、小僧や、一寸用事に行ってくれないかと言った。そして酒と言っては小僧が知るからと思って、酒はあるまいから「ごまず」を買って来てくれと言った。「ええかん」と「こす」は樽を竿に通して担いでいった。そして酒屋へ入ると、ここに「ごまず」はあるまいから酒をいっぱいくれと言って酒樽をのぞけた。小僧さん、酒はあるまいから「ごまず」をくれというのではないかなと酒屋の主人は言った。樽にいっぱい酒を入れてもらうと、「ええかん」と「こす」は竿に通して担いで、唄を唄いながら帰った。しばらく帰ると、これは重い。しんどくていけない。一口飲んでいこうというので、二人は土手の上へ据えてぐいぐい飲んだ。そして川の水を入れて唄いながら帰った。お寺へ帰ると、もう日がとっぷり暮れていた。和尚さま、今帰りましたと言うと、大儀だった。上がって早く寝ないと、また朝うんうん言うからと和尚は言った。小僧たちは夕飯を食べると、早く床へ潜りこんだ。そして今夜は寝たふりをして、寝ないでいようと相談した。和尚は一人になると酒を沸かして、ちびりちびり飲みはじめた。酒はちょうどいい塩梅に沸いていたので、和尚は思わず、ああ、ええかんと独り言を言った。すると、「ええかん」がはあいと言って起きてきた。和尚さま、何か用事ですかと「ええかん」は言った。和尚はしまったと思ったが仕方ない。いや、お前を呼んだのではなかったがと言いながら、「ええかん」にお酒をついでやった。今度は「ええかん」が和尚についだ。「ええかん」は急に徳利を傾けたので、酒がどぶどぶ出て杯からこぼれた。ああ、こすこす(こぼれる)と和尚が言った。すると、「こす」がはあいといって起きてきた。和尚さま、何か用事ですかと「こす」は言ったので、和尚はまた仕方なしに酒をついでやった。


・「おばあさんと小僧」(未来社『石見の民話』)
昔、お婆さんがいた。毎日毎日お寺へ参っては、仏さまの前へ座って、仏さま、この世に自分のようなふ(運)の悪いものはいない。どうぞ早くあの世へ引き取ってくれと言ってお願いしていた。寺にいたずらな小僧がいた。毎日毎日お婆さんがやってきて、同じことをお願いするので、ひとつ悪戯をしてやろうと思った。ある日仏さまの後ろへ隠れて待っていると、お婆さんはいつもの様にやってきて、仏さまの前へ座ってお願いをした。すると小僧が後ろから、よし、お前は毎日きて熱心に頼むから、明日のこの頃には引き取ってやる。安心するがよいと言った。お婆さんはびっくりして、まあ、これの仏さまのような冗談(どうたん)も言えないと言って飛んで帰った。


◆コーディングルール

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

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

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

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

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

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

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

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


*寺
寺 or '禅寺' or 山寺 or 'お寺'
*ご飯
ご飯 or 飯
*干飯
干飯 or 'ほしい'
*魚
魚 or 'にかんのてて'
*ごまず
'ごまず'
*お願い
お願い or 頼む
*手に負えない
手 and 負う and ない
*かん
'かん' or ( 酒 and 沸く )
*こす
'こす' or こぼれる


*ない
ない
*ぬ

*ん

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

*できる
できる
*やる
やる
*られる
られる
*せる
せる

*和尚
和尚
*小僧
小僧
*餅

*焼く
焼く
*食べる
食べる
*灰

*匂い
匂い
*屋根
屋根
*直す
直す
*柱

*火箸
火箸
*炊く
炊く
*指

*便所
便所
*落ちる
落ちる
*両手
両手
*坊さん
坊さん
*禁じる
禁じる
*戸棚
戸棚
*ないしょ
ないしょ
*馬

*門徒
門徒
*川

*見る
見る
*見捨てる
見捨てる
*聞く
聞く
*聞き捨てる
聞き捨てる
*頭巾
頭巾
*糞

*拾う
拾う
*叱る
叱る
*やり返す
やり返す
*酒

*飲む
飲む
*酒屋
酒屋
*樽

*寝る
寝る
*ふり
ふり
*独り言
独り言
*起きる
起きる
*仕方
仕方
*つぐ
つぐ
*婆さん
婆さん
*参る
参る
*仏

*運

*悪い
悪い
*いたずら
いたずら
*隠れる
隠れる
*引き取る
引き取る
*冗談
冗談
*帰る
帰る


◆共起ネットワーク

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

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

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

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

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

共起ネットワーク

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

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

◆対応分析

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

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

対応分析

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

原点付近には「和尚」「食べる」といったキーワードがプロットされている。離れた位置にプロットされているのは「和尚と小僧」より「餅」「火箸」「柱」、「馬のおとしもの」より「魚」「見捨てる」「糞」、「おばあさんと小僧」より「お願い」、「指合図」より「干飯」「便所」「両手」、「和尚さんと小僧」より「酒」「こす」「ごまず」といった辺りである。

◆解釈

小僧さんは腹を空かせていることが多かったようだ。食べ物に関するお話が多い。「しごにならん(手に負えない)」は「四五にならない」の意味である。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

クロス集計をかけたところ、「ご飯」「魚」「かん」などでカイ(χ)2乗値で相関関係を示す結果(※マーク)が得られた。

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

マップとして描画したところ、「ご飯」「干飯」「お願い」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「和尚」「小僧」が大きく描画された。

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 小僧 名詞  38 (0.404)  12 (0.545) 0.25
2 和尚 名詞  45 (0.479)  13 (0.591) 0.2407
3 言う 動詞  28 (0.298)  9 (0.409) 0.2195
4 名詞C  10 (0.106)  4 (0.182) 0.1429
5 仕方 ナイ形容  3 (0.032)  3 (0.136) 0.1364
6 訊く 動詞  3 (0.032)  3 (0.136) 0.1364
7 好き 形容動詞  2 (0.021)  2 (0.091) 0.0909
8 名詞C  2 (0.021)  2 (0.091) 0.0909
9 寝る 動詞  2 (0.021)  2 (0.091) 0.0909
10 大変 形容動詞  2 (0.021)  2 (0.091) 0.0909
11 負える 動詞  2 (0.021)  2 (0.091) 0.0909
12 見捨てる 動詞  3 (0.032)  2 (0.091) 0.087

和尚が小僧に隠れてこっそり飲み食いするが、小僧に見破られてしまう……といった粗筋となっている。

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

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

・[和尚|餅:隠す/奪われる]
・[小僧|餅:火箸/柱]
・[和尚|魚:見る/見捨てる]
・[小僧|馬糞:見捨てる/詰める]

こういった風にお話を転がしていると分析できる。小僧は「火箸/柱」と転倒させることで屋根の修理にかこつけて餅を奪って食べてしまう。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

小僧が和尚と食べ物を巡ってやり合うくだりに関連したキーワードを指定したところ、「やり返す」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

[コーディング単位]は[文]で固定。

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

トピックの推定

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年5月 6日 (水)

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

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_004_kasha.xlsx

ダウンロード - ca_004_codingrules.txt

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

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

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

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

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

◆あらすじ

・「山椒九右衛門」(未来社『石見の民話』)
昔、この辺り(石見町)に山椒九右衛門という者がいた。非常に強欲な男だった。たたらの親方になって沢山の人を使っていたが、一日に一升の飯を三回に分けるところを一回二合七勺ずつに減らして、三勺ずつ三回、一日九合の米を浮かせていた。そういうことで極めて評判が悪く本当の名を呼ぶ者はなく山椒というあだ名をつけていた。ある年の大晦日の夕方にある貧しい家へ借金の催促に立ち寄った。いつもの調子で厳しく返済するように言ったが、もちろん返す金は無いので、明年は必ず辛抱してお返しするから今宵一夜をあかさせてくださいと家内一同頭を地にすりつけて頼んだが、九右衛門は承知しない。ちょうどそのとき竈の上に年越しのご飯が煮えていたが、九右衛門はいきなりその鍋を取り上げると庭先の藁を叩く石の上にぶちまけ、鍋だけを片手にこれを貰って行くと言って得意げに帰っていった。夫婦子供は年越しの夜にようやく手に入れた年に一度か二度しか食べることにできない米のご飯の煮えかけを土の上にぶちまけられては食べることができない。泣きながら天を仰いで、もしこの山に主があるなら何とかしてこの仇をとってください。このご飯は山の主に差し上げると祈った。ところが不思議なことに山椒は昨日までの繁盛は夢のように消えて、その夜からひどい熱病にかかって苦しんだ。医者を呼んだり祈祷してもらったりしたが一向によくならない。とうとう骨と皮ばかりになって息を引き取った。葬式の日に市木の浄泉寺の院家が坂の峠の上まで来た時、怪しい風が吹いて胴は猫に似て頭は鷲のような怪物が空を舞っているのが見えた。院家は供の者に光西寺にある火車品(傘にお経を書いたもの)を借りてくるよう言い付けた。院家は供の者が帰ってくるのを待っていたが、山椒の家ではもう皆が待っているのでお経をはじめた。お経が済んで焼香になると坂の上でみた怪物が羽音凄まじく舞い降りてきて棺の蓋をとると屍体を抱えて空へ上がった。後から見ると、屍体は喰い裂かれて足だけは丸原の三本松の枝に掛かっていた。昔から棺の蓋は外に出す前に釘づけにしなければいけないと言われるのは、こうしたことがあるからだということである。また光西寺の火車品は火事で焼けて今は無いということである。


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


・「渡廊下の寄附」(未来社『石見の民話』)
あるところに分限者がいた。とてもけちで少しでもお金を出すことが嫌いで出そうとはしない。お寺の寄附なども言い訳をしてなかなか出さなかった。檀那寺の方丈はこんなことでは良くない、何とかして功徳をさせて救ってやらないと死んでから罪におちると思い、いろいろ考えた末に、近頃お寺の渡廊下が傷んで歩くのに危ない様になったが一つ寄附をしてくださらないかと言った。主人はいやな顔をして、一体どれくらい出せばいいだろうと訊いた。一両もあれば充分だろうと方丈が言うと、主人は渡廊下を直すと言えば五両や十両はいると言うに違いないと思ったのが案外少なかったので、それでは出そうと言って喜んで一両出した。方丈もこれで功徳ができたと喜んだ。ところがそれから間もなく主人は急病で亡くなった。葬式の日は分限者の旦那さまが亡くなったというので大勢の人が来て、幸い天気も良かった。坊さんもたくさん呼ばれていて、お経をあげて順々に焼香した。すると、その時今までよく晴れていた空がにわかにかき曇り、真っ黒い雲が棺を狙って舞い降りてきた。檀那寺の方丈は持っていた鉄の如意をふりかぶり、廊下、廊下と叫んで黒雲めがけて投げつけた。すると黒雲は直ちに天上へ舞い上がり、空は元のように晴れた。黒雲は火車で、棺の中の死体をさらうために来たのであった。火車は強欲な人が死ぬと死体をとって食う魔物である。居合わせた他の坊さんたちは、方丈の廊下廊下という一喝の威力に驚いて教えてくれるように頼んだ。方丈はそこで、この主人が強欲で死んだら火車にとられる様なことになってはいけないと思い、渡廊下に寄附をさせて、その功徳で救ったのだと教えたということである。


◆コーディングルール

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

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

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

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

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

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

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

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


*死ぬ
死ぬ or ( 息 and 引き取る )
*山椒九右衛門
'山椒九右衛門' or 山椒 or '九右衛門'
*山の主
( 山 and 主 )
*病
熱病 or 急病
*院家
'院家'
*怪物
怪物 or 魔物
*火車
'火車'
*火車品
'火車品'
*屍体
屍体 or 死人
*喰う
喰う or 食う
*渡廊下
'渡廊下'
*黒雲
'黒雲' or ( 真っ黒 and 雲 )

*ない
ない
*ぬ

*ん

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

*できる
できる
*やる
やる
*られる
られる
*せる
せる

*強欲
強欲
*借金
借金
*催促
催促
*ご飯
ご飯
*ぶちまける
ぶちまける
*仇

*葬式
葬式
*怪しい
怪しい
*棺

*蓋

*釘

*若者
若者
*集まる
集まる
*踊る
踊る
*姉さん
姉さん
*跡

*寺

*啼く
啼く
*和尚
和尚
*古い
古い
*猫

*出る
出る
*参詣人
参詣人
*恩返し
恩返し
*婆さん
婆さん
*坊さん
坊さん
*お経
お経
*分限者
分限者
*けち
けち
*寄附
寄附
*方丈
方丈
*功徳
功徳
*罪

*旦那
旦那
*雲

*廊下
廊下
*一喝
一喝
*とる
とる
*救う
救う


◆共起ネットワーク

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

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

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

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

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

共起ネットワーク

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

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

◆対応分析

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

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

対応分析

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

原点付近にはキーワードがプロットされていない。離れた位置にプロットされているのは「山椒九右衛門」より「山椒九右衛門」「火車品」「ぶちまける」、「化け猫」より「姉さん」「和尚」「恩返し」、「渡廊下の寄附」より「渡廊下」「方丈」「分限者」といった辺りである。

◆解釈

いずれも火車という妖怪が登場するお話である。寺と死体が共通点となる。「化け猫」の婆さんは特に強欲といった性質の人物ではなさそうである。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

クロス集計をかけたところ、「山椒九右衛門」「渡廊下」「方丈」などでカイ(χ)2乗値で相関関係を示す結果(※マーク)が得られた。

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

マップとして描画したところ、「山椒九右衛門」「山の主」「和尚」「古い」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「和尚」「方丈」が大きく描画された。

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 出す 動詞  6 (0.111)  4 (0.333) 0.2857
2 寄附 サ変名詞  3 (0.056)  3 (0.250) 0.25
3 思う 動詞  3 (0.056)  3 (0.250) 0.25
4 渡廊下 名詞  3 (0.056)  3 (0.250) 0.25
5 言う 動詞  9 (0.167)  4 (0.333) 0.2353
6 方丈 名詞  6 (0.111)  3 (0.250) 0.2
7 救う 動詞  2 (0.037)  2 (0.167) 0.1667
8 功徳 名詞  3 (0.056)  2 (0.167) 0.1538
9 副詞可能  3 (0.056)  2 (0.167) 0.1538
10 主人 名詞  4 (0.074)  2 (0.167) 0.1429

火車が死体を奪いにやって来るが、和尚の法力で撃退する……といった粗筋となっている。

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

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

・[火車|屍体:奪取/損壊]
・[猫|化ける:姉さん/火車]
・[方丈|分限者:功徳/往生]

こういった風にお話を転がしていると分析できる。若者が姉さんを追跡したところ「姉さん/猫」と転倒し、正体が明らかとなる。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

葬式で火車が登場するくだりに関連したキーワードを指定したところ、「院家」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

[コーディング単位]は[文]で固定。

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

自己組織化マップ

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

2026年5月 5日 (火)

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

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_003_ushioni.xlsx

ダウンロード - ca_003_codingrules.txt

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

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

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

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

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

◆あらすじ

・「うしおに」(未来社『石見の民話』)
波路浦に一人の漁師がいた。ある日の漁は大漁であった。喜んで帰りかけると、海の中から大きな牛の様な怪物が大きな声で「魚をくれ」と叫ぶので、恐ろしくなって投げてやった。ところが怪物はまたしても「魚をくれ」と叫ぶので、その度に少しずつ投げてやった。ようやく港へ着くと急いで家へ帰った。しばらくすると怪物がやってきて、どんどん戸を叩きながら「魚をくれ」と言った。漁師が「家の中へ入れ。魚をやろう」というと「お前はお仏飯を食べているから、家の中へは入られない」といって逃げていった。あくる朝戸をあけて庭へ出てみると大きな足跡が残っていた。足跡は牛の様でもあるし、牛とは違う様にもあるし、村人は不思議に思った。これは昔から言われている牛鬼だろうということになった。

波路浦の大下という家の何代も前の主人が三人の仲間と一緒に四月のある晩釣りに出た。他の舟は沖へ出ていたが、この舟は温泉津の港と福光海岸の中程のシューキの岸近くで糸を下ろした。ここは秘密の釣り場で、その日もよく釣れた。夜が更けて岸の方から「行こうか、行こうか」と声をかけるものがあった。この辺りは断崖絶壁で人のゆける所ではない。狐が悪戯をするのだと思って「おう、来たけりゃ、来い」とからかい半分に言った。ところが「おう」と返事と共に何か大きなものが海にどぶんと飛び込んだ。舟に向かって牛鬼が泳いできた。真っ青になった四人は一生懸命波路浦に向けてこぎ出した。牛鬼も舟を追って来る。ようやく一里ばかり離れた波路浦の浜に着くと、一番近い大下の家へ飛び込んで戸を閉めた。牛鬼は戸をどんどん叩きながら「開けろ、開けろ」とどなる。四人は土間にへばりこんでさっぱり動こうともしない。家の者が火箸を囲炉裏で真っ赤に焼いて、大戸の鍵穴に口を寄せて「今戸を開けてやるから静かにせい」と怒鳴った。牛鬼は声のした鍵穴から中をのぞき込んだ。その時、焼き火箸を鍵穴へ突っ込んだ。目を焼き火箸で突き刺された牛鬼はたけり狂ったが、柱の上に張ってある出雲大社のお札に気づくと身震いしてもの凄い声をあげて逃げていった。この辺りの漁師はそれから必ず出雲大社のお札を戸口に貼るようになった。

日祖の漁師に友村清市という人がいた。ある晩一人で小舟に乗って沖へ出た。すると牛鬼が一匹、追いかけてきた。力が強く胆のすわった清市は舟中の綱をまとめて牛鬼が近づくのを待った。間もなく牛鬼は船べりにきて舟に上がろうとした。清市はこれに組み付き、舟へ引き上げて、がんじがらめに縛り上げた。清市は小二町まで舟で帰り、そこから山越しに日祖まで牛鬼を担いで帰った。浜の舟小屋の前へ牛鬼を投げ出しておくと、日祖中の人がぞろぞろ見にきた。わいわい言っていると、一人の若者が櫂を持って牛鬼の頭を力任せに殴りつけた。すると変な音がして櫂は二つに折れた。近寄ってよく見ると、椿の木の古い根ががんじがらめに縛ってあった。昔から椿は化けるということで、椿の花は仏さまには絶対に供えない。

日祖である晩いわしの地引き網を入れた。ところがどうしたことか一尾もかからない。気をくさらせて皆は酒を飲んでさっさと引き上げた。そのとき小舟にいた一人の老人が家に帰ってから煙草入れを忘れたのに気がついて取りにいこうとした。家内は不吉な予感がすると言って行くのを止めたが、老人は振り切って行こうとする。そこで家内は仏壇に供えてあったお仏飯を食べさせて出した。煙草入れを探すのに夢中になっていた老人が騒がしい波の音に気がついてふとその方を見ると一匹の牛鬼が側まで来ていた。舟の中であり、もう逃げられないと思ったが、思わず櫂で殴ってやろうと身構えた。すると牛鬼は「お前はお仏飯を食っているから近づけない」と言って逃げていった。昔から子供が海や山へ行くときには怪我の無いようにといってお仏飯を食べさせる。

※「うしおに」は便宜上、abcdと区別した。


・「怪力尾車」(未来社『石見の民話』)
福光川の下流に岩根屋敷というところがある。昔ここに岩根という大金持ちが住んでいた。その家に尾車という力士がいた。大男ではなかったが力が強く、近辺には尾車に勝つものはいなかった。この話を聞いた上方の相撲とりが、ひとつ勝負をしてみようと思って、はるばる岩根屋敷へやってきた。尾車はその時下男の様な身なりで庭の掃除をしていた。尾車は不在だが、弟子の自分が力だめししましょうと言って大黒柱を一尺ばかり持ち上げた。これを見た上方の相撲とりは胆をつぶした。弟子でこれほどなら師匠の尾車とは勝負にならないと逃げ帰った。ある日、尾車が波打ち際にいると、沖の方から牛鬼がやって来て尾車を海へ引き込もうとした。尾車は逆に陸に引き上げてやろうと思って波打ち際で大相撲になった。どちらも力が強くて勝負がつかない。一晩中相撲をとったので、尾車も段々疲れてきた。海の方に引かれそうになった尾車だが、そのとき、一番鶏が鳴いた。牛鬼は夜が明けると力がなくなるので、お前の様な力の強い人間に出会ったのは始めてだ。この勝負はおあずけにしようと言って沖へ姿を隠してしまった。

※「怪力尾車」は牛鬼関連の箇所のみ抜き出した。


・「狼と牛鬼」(未来社『石見の民話』)
狼は人間が牛鬼や狐に危害を加えられようとするときは、その人間の眉毛を一本抜いて目に当ててその人が良い人か悪い人かをみる。その人が悪い人であったら体は人間であっても頭は畜生の類いになって見えるが、良い人であったら頭も人間に見えるということである。狼は悪い人だったら決して助けないが、良い人は助けてくれて、その人の家まで送り届けてくれる。これを送り狼といって、送り狼に送ってもらったときは足を洗ったたらいの水を捨ててたらいを逆さにして伏せ「ご苦労だったのう」と礼をいうと狼は安心して帰る。もしそうしないと狼は立ち去らないでいつまでもそこにいるそうだ。昔、川戸の小田の桜屋の爺さんが田野へズク(銑鉄)を負って行っての帰りに日が暮れて七日渕の向こうまで行ったとき、狼が袖をくわえて竹藪の中へ連れ込んだ。狼に喰われるのかとビクビクしていると、狼は爺さんをそこへ座らせて腰を下ろした。すると人臭いと言って牛鬼が出てきた。川向こうの住郷の平からも牛鬼が「よい肴があるではないか」と言った。こっちの牛鬼は「肴はあっても守りがついていてつまらんから、これから波子の浜へ出よう」と言った。両方の牛鬼は江川を挟んで話し合っていたが、そのまま行ってしまった。しばらくして狼は爺さんの袖をくわえて道へ連れ出した。「ようこそ助けてくれたのう」と礼を言うと、狼はなおも袖をくわえて小田の家まで送ってきた。爺さんは足を洗ってその水を移して「ご苦労だったのう」と言ってたらいを伏せると、狼は安心したように山へ帰っていった。


・「牛鬼」(未来社『石見の民話』)
昔、那賀郡の浅利村に神主がいた。ある晩一人で海へ夜釣りに行ったが、とてもよく釣れるので一生懸命に釣っていた。すると髪も着物もびしょ濡れになった女が赤児を抱いて出てきた。神主がびっくりしていると、この子に食べさせるから魚を一尾くれと言った。神主が一尾やると赤児はむしゃむしゃと頭から尻尾まで骨ごとみんな食べてしまった。そうしてもう一尾、もう一尾というのでやる内に籠の中の魚は一尾もなくなった。すると女は今度は、お腰のものをと言った。この女に言われるとどうしても嫌ということが出来ない。神主は仕方がないので腰の脇差しを抜いてやると赤児はそれもパリパリと食べてしまった。びっくりしていると、女はちょっとこの児を抱いてとってくれといって赤児を神主に渡すと海に入っていった。神主はその間に釣り道具を投げ捨てて駆けだしたが、抱かされた赤児は石になってどうしても離れない。その内に女が後ろから追いかけてきた。神主は一生懸命走ったが女はだんだん間を縮めてくる。そして既に手が届きそうになったとき、前の方から何か光るものが矢の様に飛んできて女の頭へグサリと突き刺さった。女はそれで足を止めたので、神主はようやくのことで自分の家の前まで逃げてくると、そこには心配そうに妻が待っていた。神主の妻は夫が釣りに出た後で縫い物をしていた。すると神主の居間にある二本の刀の中で、どれか一本シャンシャンと音を立ててしきりに鳴るものがある。不思議なことなので、もしか夫の身の上に何か変わったことがあるのではないかと心配して外へ出てみた。その時表の戸を開けると一本の脇差しがひとりでに鞘を抜け出して戸の間を飛鳥のように通り抜け、海の上の方へ飛んでいった。不思議なこともあるものだと妻はますます心配になって、そのまま戸の外へ立っていたところだった。明くる朝神主は村の人たちと昨夜女の出てきたところへ行ってみた。すると磯のほとりに血の流れた跡があったが、女も脇差しも見えなかった。多分女は頭に刀を突き刺したまま海の中へ入っていったものだろうと皆は話した。


◆コーディングルール

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

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

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

※[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]に設定する。

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

対応分析

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

原点付近には「牛鬼」「送り狼」「家」といったキーワードがプロットされている。離れた位置にプロットされているのは「うしおに」より「火箸」「出雲大社」「鍵穴」「椿」「根」、「牛鬼」より「浅利」「赤児」「釣り」といった辺りである。

◆解釈

いずれも牛鬼が主題のお話である。牛鬼からの逃走といったパターンのお話が多いが、牛鬼と取っ組み合いとなるお話もある。

◆階層的クラスター分析

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

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

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

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

◆クロス集計

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

クロス集計

クロス集計をかけたところ、「牛鬼」「お仏飯」「赤児」などでカイ(χ)2乗値で相関関係を示す結果(※マーク)が得られた。

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

マップとして描画したところ、「狼」「眉毛」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「狼」「尾車」が大きく描画された。

◆KWICコンコーダンス

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

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

◆関連語検索

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

関連語検索

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

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

関連語検索

◆属性の転倒

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

N 抽出語 品詞 全体 共起 Jaccard
1 逃げる 動詞  5 (0.051)  3 (0.167) 0.15
2 地名  5 (0.051)  3 (0.167) 0.15
3 脇差し 名詞  3 (0.030)  2 (0.111) 0.1053
4 言う 動詞  15 (0.152)  3 (0.167) 0.1
5 強い 形容詞  4 (0.040)  2 (0.111) 0.1
6 名詞C  4 (0.040)  2 (0.111) 0.1
7 名詞C  4 (0.040)  2 (0.111) 0.1
8 名詞C  5 (0.051)  2 (0.111) 0.0952
9 名詞C  6 (0.061)  2 (0.111) 0.0909
10 食べる 動詞  6 (0.061)  2 (0.111) 0.0909

牛鬼に遭遇するも、何らかの助けによってかろうじて逃れる……といった粗筋となっている。

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

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

・[主人|牛鬼:遭遇/生還]
・[濡れ女|海:女/牛鬼]
・[若者|殴る:牛鬼/椿]
・[狼|牛鬼:守り/お礼]

こういった風にお話を転がしていると分析できる。捕らえられた牛鬼を若者が殴ったところ「牛鬼/椿」と転倒し、正体が明らかとなる。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

牛鬼が苦手とするものに関連したキーワードを指定したところ、「脇差し」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

[コーディング単位]は[文]で固定。

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

«錦織選手とノドグロ