« 追加で作成 | トップページ | 昔話の計量テキスト分析――おいせ島 »

2026年3月15日 (日)

昔話の計量テキスト分析――斎藤長者

◆はじめに

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

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

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

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

◆ファイル

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

ダウンロード - ca_pb_008_chojagahara.xlsx

ダウンロード - ca_pb_008_codingrules.txt

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

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

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

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

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

◆あらすじ

・「長者ガ原」(未来社『石見の民話』)
昔、高角の港が次第に繁華になってきた頃、この地方に名を知られた斎藤忠右衛門という長者がいた。数十町歩に渡る広い田を持っていたが、その田植えは一日で済ませるのが毎年の例であった。万寿三年の田植えの時、大勢の早乙女たちが一生懸命植えているところに猿回しが通りかかった。赤い着物を着て男の肩につかまっている猿を面白がって早乙女たちがしばらく手を休めたため、日はいつの間にか西に傾いたが、田植えはなかなか済みそうにない。早乙女たちは慌てて手を早めた。しかし、とうとう日が海の向こうに沈もうとする時になっても、まだ田植えは終わらなかった。そこへ長者が様子を見にやってきた。長者はまだ植え残された田が相当あるのを見ると、かんかんに怒った。斎藤長者の田植えは昔から一日で済ませることを忘れたのか、この上は長者の威勢を見せてやろうと言って、家に代々伝わる日の丸の扇をさっと開いて今にも海に半分ばかり沈んだ夕日に向かって二度三度差し招いた。すると不思議なことに夕日はぐんぐん後戻りをはじめて西の空高く登った。こうして再び日が沈む頃には田はきれいに植え終わった。その夜、にわかに激しい稲光りがして雷がとどろき酷い暴風雨となって一晩中荒れ狂い大津波となった。明くる朝、昨夜のことは嘘であったように真っ青な空に朝日が輝いたとき、豪華を極めた長者の屋敷も、昨日植えた数十町に渡る田もどこにも見えず、その辺りは一面の砂浜であった。この時津波によって運ばれた砂によってできた湖が蟠竜湖で、長者の屋敷のあった所は長者ガ原という地名になって残っているだけである。


・「斎藤長者」(日本標準『島根の伝説』)
万寿三年(一〇二六)五月のこと。益田地方は田植えの真っ盛りであった。あたり一帯の大長者、斎藤忠衛門の家でも二、三日前から大勢の人を使って田植えが始まった。そして、いよいよ今日一日で田植えが終わろうとしているときであった。遠くから猿回しの鉦、太鼓の音が聞こえてきた。そして調子面白く猿芝居をしてみせるものだから、早乙女たちは田植えをする手を休めて大笑い。とうとう一人、二人と道端へ座り込んで芝居見物となった。一幕が終わった頃、大旦那様がこちらへ来ると声がかかり、猿回しどころではなくなった。蜘蛛の子を散らすようにさっとめいめいの場所についた。早乙女たちは思い出したように田植え歌を歌って植えていく。大旦那こと斎藤長者が見回りにやって来た。ところが今年は例年になく田植えの進み具合が遅い。いつもならほとんど終わろうとしているのに、まだ広い田が二つも残っている。気性の荒い長者はいらいらして今日中に田植えを終えるよう叱咤しはじめた。休むことを知らぬように太鼓が鳴るのでもう田植え歌どころではなくなった。やっとのことで広い田んぼを一枚植え終わった。まだ、もう一枚残っている。それは田んぼの中でも一番広い田であった。太鼓打ちの年寄りが声を張り上げたがさすがの早乙女たちも疲れ切っていた。太鼓が鳴り出すと早乙女たちは気を取り直して植えだした。ところが半分も植え終わらないうちに日が西の海の方に落ちかけた。そして苗を植える手許の印が見えなくなってしまった。印が見えなくなっては田植えができない。長者は腰に差していた扇をぱらりと広げると、静かに海に沈もうとする太陽に向かって扇を差し招いた。すると不思議なことに暗かった田んぼの辺り一面が明るくなりだした。田植えは再開し、到底今日一日で終わらないだろうと思われた田植えがやっと済んだ。ところがその夜のこと。突然、大雨が降り出し風が吹きまくった。そして津波がやって来た。張り裂ける音とともに何十軒の家があっという間に呑み込まれてしまった。大雨は何日も降り続き、高津一帯は見る影もなく押し流された。やっと水が引くと見る影もなかった。斎藤長者の広い田んぼは今は全て石や岩の下だった。それどころか、長者が住んでいた辺りに大きな湖ができていた。これが今の蟠竜湖である。長者がお日さまを呼び戻したために天地が怒って津波を起こしたに違いないと生き残った人たちの間でささやかれた。あの広い田があった辺りを今でも長者が原と呼んでいる。この津波は今の益田地方を中心として西は山口県阿武郡から東は江津市辺りまで及んだと言われている。この津波によって益田の沖にあった鴨島が海中に沈んでしまったと言い伝えられている。

・「湖山長者」(みずうみ書房『日本伝説大系』)
昔々、鳥取の湖山という所に大層な長者があって、この長者の屋敷の高い所に登ってみると、どっちを向いて見ても、目に見える所は皆この長者の田んぼばかりという程の大分限者だった。この長者の田植えの時には大したもので、毎年、この広い田んぼをたったの一日だけで植えてしまうことになっていたから、働ける者はみんな長者の田に集まって、男衆は田をすく者、ならした田んぼの後から後から、女子衆が何十人もあっちの田、こっちの田と並んで植えていった。皆揃いの衣装を着て、新しい笠を被って、それは見事な賑やかな田植えだったそうだ。こうして毎年一日だけで済ませていた田植えが、ある年もうちょっとというところまでなったのに、お日さまが山に沈みそうになった。長者の旦那がこれを見て、これは田植えが二日もかかってはどうにもならないと思って、お城みたいな家の一番高い所に登って、金色の大きな扇を広げて、今沈みかけているお日さまを招いた。そうしたら今にも沈みかけそうになっていたお日さまがズルズルズルっと後戻りした。それで、残った田んぼも皆済んで、集まっていた人たちは長者の威光にびっくりしてしまった。その明くる朝、昨日、植えてしまった田んぼが、何と見渡す限り水浸しになっていた。びっくりした長者や村の者が出てみたら、水が張っているのではなく、それがまあ、深い深い大きな池になってしまっていた。


◆コーディングルール

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

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

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

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

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

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

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


*長者
長者 or 旦那 or 分限者
*広い
広い or '数十町' or ( 見渡す and 限り )
*田
田 or 田んぼ
*終える
終える or 済ませる or 済む
*猿回し
'猿回し' or '猿芝居' or 芝居
*日
日 or 'お日さま'
*蟠竜湖
'蟠竜湖'
*長者ガ原
'長者ガ原' or '長者が原'
*鴨島
'鴨島'
*湖山
'湖山'
*早乙女
早乙女 or '女子衆'
*男衆
'男衆'
*明くる朝
明 and くる 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 地名  6 (0.097)  5 (0.357) 0.3333
2 田植え サ変名詞  19 (0.306)  7 (0.500) 0.2692
3 終わる 動詞  5 (0.081)  3 (0.214) 0.1875
4 見る 動詞  6 (0.097)  3 (0.214) 0.1765
5 名詞C  2 (0.032)  2 (0.143) 0.1429
6 名詞C  2 (0.032)  2 (0.143) 0.1429
7 思う 動詞  2 (0.032)  2 (0.143) 0.1429
8 名詞C  2 (0.032)  2 (0.143) 0.1429
9 済む 動詞  3 (0.048)  2 (0.143) 0.1333
10 旦那 名詞  3 (0.048)  2 (0.143) 0.1333

いつもなら一日で済ませていた田植えが終わらないため、長者は扇で沈みかけた夕陽を招き、その日の内に田植えを終わらせてしまうものの天の怒りを招き……といった粗筋となっている。

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

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

・[長者|田植え:終わらない/終わる]
・[扇|日:沈む/戻る]
・[長者|財産:田/池]

こういった風にお話を転がしていると分析できる。大田植えを強引に「終わらない/終わる」と転倒させた結果、その土地は「田/池」と転倒してしまう。

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

◆類似度行列

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

類似度行列

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

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

◆多次元尺度構成法

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

多次元尺度構成法

「後戻り」「早乙女」がやや離れた位置にプロットされている。

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

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

◆自己組織化マップ

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

自己組織化マップ

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

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

◆トピックの推定

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

トピックの推定

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

トピックの推定・文書表示

◆ベイズ学習による分類

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

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

ベイズ学習による分類

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

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

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

◆参考文献

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

|

« 追加で作成 | トップページ | 昔話の計量テキスト分析――おいせ島 »

昔話」カテゴリの記事