« 昔話の計量テキスト分析――千里眼 | トップページ | 昔話の計量テキスト分析――えんこう(獲物) »

2026年5月22日 (金)

昔話の計量テキスト分析――力比べ

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_016_chikarakurabe.xlsx

ダウンロード - ca_016_codingrules.txt

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

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

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

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

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

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

◆あらすじ

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


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


・「下瀬加賀守」(未来社『石見の民話』)
昔、下瀬山の上に城があって、下瀬加賀守という強い大将がいた。とても力が強かったので、この噂を聞いて、力自慢の侍が加賀守のところへ力比べにやってきた。加賀守はそのことを知って、家来の様な風をして土間で草履を作っていた。何も知らぬ侍は加賀守を見ると、自分は加賀守が大層力持ちという事を聞いて、はるばる力比べをしてみようと思って来た。加賀守はいるかと尋ねた。加賀守は主人は折悪しく今朝がた出たきりまだ帰ってこないとすまして答えた。侍はこのまま帰るのも残念だからしばらく待とうと言ったが、ふと戸口に立てかけてある大きな鉄の棒を見つけて、これは何にするのかと尋ねた。それは加賀守が平素持ち歩く杖だと答えた。侍は鉄の棒を取り上げた。そして棒の真ん中へ膝を当てると精一杯の力を込めて、くの字に曲げてしまった。侍がどうだという顔をして加賀守を見ると、加賀守は平気で、主人が戻ったらさぞ叱られることであろう。早く直しておかねばと独り言を言いながら、鉄の棒を取り上げると、さっと一遍すこいだ。すると鉄の棒は元の様に真っ直ぐになった。これを見て侍は驚いた。家来でさえこれだけの力がある。大将の加賀守はどれだけ力があるか知れたものではない。早く帰った方がよさそうだと思って、こそこそと帰っていった、加賀守はまた弓の名人だった。ある日下瀬山のてっぺんから四方の景色を眺めていた。するとはるか川下の川端に舟を据えて百姓の女が蕨粉を踏んでいた。ところが女は小便がしたくなったと見え、いきなり裾をまくると、舟の中から川へ小便をしはじめた。加賀守はこれを見て、ひとつ懲らしめてやろうと思って、弓に矢をつがえると切ってはなした。矢はあやまたず蕨粉踏み舟に突き刺さってぽっきりと折れた。それでこの辺りを矢折れと呼ぶ様になり、弓を射たところを一の矢と呼ぶようになった。


◆コーディングルール

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

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

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

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

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

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

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

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


*福光川
'福光川'
*力士
力士 or '相撲とり'
*上方
上方 or 大阪
*勝負
勝負 or ( 力 and 比べ )
*波打ち際
'波打ち際'
*牛鬼
'牛鬼'
*一番鶏
'一番鶏'
*倍力
'倍力' or ( 倍 and 力 )
*力持ち
力持ち or '力自慢'
*奥さん
奥さん or 'おかみさん'
*鉄棒
棒 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 逃げ帰る 動詞  2 (0.031)  2 (0.286) 0.2857
2 主人 名詞  3 (0.047)  2 (0.286) 0.25
3 勝負 サ変名詞  4 (0.063)  2 (0.286) 0.2222
4 名詞C  14 (0.219)  3 (0.429) 0.1667
5 強い 形容詞  7 (0.109)  2 (0.286) 0.1667
6 まっすぐ 形容動詞  1 (0.016)  1 (0.143) 0.1429
7 悪しい 形容詞  1 (0.016)  1 (0.143) 0.1429
8 及ぶ 動詞  1 (0.016)  1 (0.143) 0.1429
9 近辺 名詞  1 (0.016)  1 (0.143) 0.1429
10 今朝 副詞可能  1 (0.016)  1 (0.143) 0.1429

・「ぬ」の結果上位一覧

N 抽出語 品詞 全体 共起 Jaccard
1 一遍 副詞可能  1 (0.016)  1 (0.333) 0.3333
2 折れる 動詞  1 (0.016)  1 (0.333) 0.3333
3 大層 副詞  1 (0.016)  1 (0.333) 0.3333
4 直す 動詞  1 (0.016)  1 (0.333) 0.3333
5 突き刺さる 動詞  1 (0.016)  1 (0.333) 0.3333
6 名詞C  1 (0.016)  1 (0.333) 0.3333
7 早い 形容詞  2 (0.031)  1 (0.333) 0.25
8 知る 動詞  2 (0.031)  1 (0.333) 0.25
9 踏む 動詞  2 (0.031)  1 (0.333) 0.25
10 独り言 名詞  2 (0.031)  1 (0.333) 0.25

力自慢の男たちが腕試しにやって来るが、変装して応対し……といった粗筋となっている。

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

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

・[力士|尾車:挑む/逃げ出す]
・[十内|天狗:授かる/剥奪される]
・[侍|加賀守:挑む/逃げ出す]

こういった風にお話を転がしていると分析できる。尾車は波打ち際で牛鬼と勝負するが、「夜/朝」と転倒することで「拮抗/退散」と転倒してお話は締めくくられる。

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

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

力比べを挑まれそうなところ、変装して応対するくだりに関するキーワードを指定したところ、「侍」が離れた位置にプロットされた。

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

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

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

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

« 昔話の計量テキスト分析――千里眼 | トップページ | 昔話の計量テキスト分析――えんこう(獲物) »

昔話」カテゴリの記事