昔話の計量テキスト分析――えんこうの手紙
◆はじめに
以下はKH Coder(無償版:version 3.Beta.08e)を用いた昔話の計量テキスト分析である。昔話の類話の比較にツールを利用できないか試行してみた。
手持ちの資料が限られるため、分析の対象となる元データの文字数が少ないものの(※本来であれば5000字以上は欲しい)、分析自体は正常に処理されていると判断した。
KH Coderの操作に慣れる目的も兼ねて行った作業で、コーディングルールの記述の事例集、あるいは速習用のチュートリアルとしてでも読んで頂ければ……といったところである。
なお、KH Coderでよく用いられるのは共起ネットワークと対応分析とのことで、それ以外はおまけパートと思って頂いて構わない。操作に習熟するにはコーディングルールの記述に慣れるのが第一である。
◆ファイル
各ファイルをダウンロードしてKH Coderに読み込ませれば同様の分析が再現可能である。
ダウンロード - ca_pb_041_enkonotegami.xlsx
ダウンロード - ca_pb_041_codingrules.txt
ダウンロード - kh_coder_startingedition_sagyotejunsho.txt (※作業手順書)
※「H5」とはHTMLでいうところのヘッダー(見出し)・レベル5で本文に相当すると考えればよい。
※[コーディング単位]は「文/段落/H5」から選べるが、状況に応じて適切と思われるものを選択する必要がある。処理が上手くいかないと感じた場合、コーディング単位を切り替えると上手く処理されるケースがままある。
※公式マニュアルでは「集計単位」という用語が使われている。共起関係について、
・「文」では一文単位での分析
・「段落」では段落単位の分析
・「H5」では表計算ソフトのセル単位とされ、改行を含めた一セルの中身全体が分析単位となる
※レファレンスでも索引で「コーディング単位」の項目は設けられていない。操作性に関わる重要項目であるものの、その仕様について不明瞭な感はある。
※当ブログの場合、表計算ソフトのフォーマットで読み込ませているからH5固定でいいだろうと思い込んでいたら、さにあらずだった。
◆あらすじ
・「えんこうの手紙」(未来社『石見の民話』)
明治の中頃、大田市の鳥居村に喜三郎という魚商人がいた。ある日出雲の国との境の邑智郡の奥へ行って、帰りに小原村の江川のほとりを通ると、手ぬぐいを深く被った女がなれなれしく声をかけてきた。静間を通って大田へ帰るのかと訊くので、その通りと答えると、手紙を渡して、それを静間の神田の渕へ投げ込むように頼まれた。魚商人は手紙を受け取った。魚商人は川合の町まで帰ると、岩谷屋という店で酒を一杯飲んだ。そして主人に先ほどのことを話すと、静間川の神田の渕はえんこう(河童)の住処だと言って、その手紙を見せろとなった。そこで手紙を開くと、人間の文字ではなくみみずののたくった痕のようなものが書いてあった。これは江川のえんこうが化けたもので、魚商人をとるようにと神田の渕のえんこうに合図したのに違いないとなった。震え上がった魚商人は店主に相談して手紙を焼いてしまった。魚商人は川合から道をかえて長久を通って家へ帰った。それからは用事があっても静間川の方へは決して行かなかった。
・「カッパの手紙」(日本標準『島根のむかし話』)
とんとん昔、ある男が西郷の町へ用事があって川端を歩いていた。そうしたら、道端に婆さんが立っていた。婆さんはその男に、まことに済まないが、八郎橋の所に自分のような婆さんが立っているから、この手紙を渡してくれと頼んだ。男は承知して受け取った。西郷の町で用事が済んで、もう一軒寄り道した。そうしたら、そこの家の者が喜んで、これはよく来た。久しぶりだ。上がりなさい。帰り道は日が暮れてしまう。泊まって明日帰りなさいと引き留めた。いや、八郎橋の所に婆さんがいるから、それにこの手紙を渡さないといけないと言って断ったところ、それはおかしい。あの八郎橋の方には家がない。まてよ、その手紙を見せなさいと言った。手紙の裏表を見ると何も書いてない。中を開けてみると、これも何もない。ははあ、やはりそうか。この手紙はこうすれば出ると言って水の中に浸けた。そうしたら、ここではまだ日があるから獲れない。そこで獲れ。そこで獲れなければ上に渡せと書いてあった。ほら、この通りだ。これは危ないところだった。お前はカッパに命を獲られるところだった。手紙を渡したのは年寄りカッパに違いない。まだ日が高いものだから、お前を狙えなかった。だから八郎橋のカッパにそこで獲れと手紙にしたものだ。まあ、今夜はここでゆっくりして泊まっていきなさいと言った。男はびっくりした。それで、その晩は泊まってあくる日帰った。
◆コーディングルール
※コーディングルールのキーワードは重要と判断したものを人力でピックアップしている。そのため、恣意性を伴う分析となる。
※活用形でなく基本形で入力する。
※[前処理]→[語の抽出結果を確認]でキーワードがどのように分節されているか検索すると結果の一覧[語の抽出結果]が表示される。
※[Result]から確認したい行をクリックして選択、画面下の[詳細表示]ボタンをクリックするとサブ画面が表示され、活用形や基本形が確認できる。
※昔話では「否定/肯定」「肯定/否定」と属性が変化することが多いと考え、否定詞「ない」「まい」「ぬ」「ん」、また禁止を意味する「な」を共通のコードとして設定している。
※[関連語検索]で否定詞の共起語の一覧を表示させたところ、日本の昔話のように掌編レベルのボリュームだと、物語の動因となる箇所に関する語句が上位に表示される傾向が強いのではないか……といった印象があり、検証作業中である。
※無償版では強制抽出語の指定が機能制限で事実上使用できないため以下のような手法をとっている。
*鳥居村
'鳥居村'
*魚商人
'魚商人'
*帰る
帰る or 帰り
*ほとり
ほとり or 川端
*川合
'川合'
*主人
主人 or 店主
*開く
開く or 見せる
*えんこう
'えんこう' or カッパ
*静間川
'静間川'
*獲る
獲る or とる
*婆さん
婆さん or 年寄り
*八郎橋
'八郎橋'
*ない
ない
*ぬ
ぬ
*ん
ん
*るな
'るな'
*るまい
'るまい'
*江川
江川
*女
女
*手ぬぐい
手ぬぐい
*静間
静間
*神田
神田
*渕
渕
*手紙
手紙
*店
店
*酒
酒
*みみず
みみず
*痕
痕
*化ける
化ける
*合図
合図
*焼く
焼く
*道
道
*かえる
かえる
*用事
用事
*近づく
近づく
*男
男
*西郷
西郷
*寄り道
寄り道
*家
家
*書く
書く
*水
水
*浸ける
浸ける
*命
命
*狙う
狙う
*泊まる
泊まる
*あくる日
あくる日
◆共起ネットワーク
・[コーディング単位]を[H5]に設定する。
※[描画する共起関係(edge)の選択]で「係数」を「0.2」から「0.3」に修正する。
※[強い共起関係ほど濃い線に]にチェックを入れる。
Jaccard係数が0.3以上はかなり強い共起関係にあることを示しているが、分析対象となる元データの文字数が少ないため係数が高めに出てしまう傾向にあるため、こうしている。
※Jaccard係数は共起関係(※ある言葉に続いて出てくる関係)の強さを表し 0≦係数≦1 の範囲の値をとる。
【Jaccard係数】
・0.1 →関連あり
・0.2 →強い関連あり
・0.3以上 →とても強い関連あり
※ただし、あくまで目安であって絶対ではない。
ざっと確認したところ、共通するキーワードが中央のサブグラフ(バブルが島状に集まった一塊)に表示され、類話によって異なるキーワードがそれぞれのサブグラフとして周辺に表示される形となっている。
※なお、各バブル間の距離や配置に意味はない。
◆対応分析
・[コーディング単位]を[H5]に設定する。
※[外部変数]は[タイトル]のまま続行。
※[差異が顕著なコードを分析に使用]で上位「40」とした。また[バブルプロット]にチェックを入れている。これらは文字の重なりを極力避けるためである。
※文字が重なって読みづらい場合、オプション画面の[コード選択]で不要なコードのチェックを外してもよい。
x、y軸上の原点(0.0)から点線が伸び交差した箇所が原点となる。原点から離れるほど特徴的なキーワードだと分析される。
原点付近には「えんこう」「手紙」「用事」といったキーワードがプロットされている。未来社版では「静間」「女」「焼く」といったキーワードが原点から離れてプロットされている。日本標準版では「婆さん」「八郎橋」「浸ける」といったキーワードが特徴的とされている。
◆解釈
舞台は異なるがほぼ同じ展開である。えんこうの手紙を見破る方法は異なっている。
◆階層的クラスター分析
・[コーディング単位]を[文]に変更、実行するとデンドログラム(樹状図)で可視化される。
※キーワード指定しても可。
概ねストーリーに沿った内容でクラスター化されている。
※当ブログの場合、[コーディング単位]が[段落][H5]だと、コードを全て選択するとエラーが返される結果となった。
◆クロス集計
・[コーディング単位]を[文]に変更、[集計]する。
※「タイトル」で集計をかけた。
クロス集計をかけたところ、「魚商人」「神田」「渕」といったキーワードでカイ(χ)2乗値で相関関係を示す結果(※マーク)が得られた。
マップとして描画したところ、「魚商人」「帰る」といったキーワードの残差が大きく(濃く)表示される結果となった。バブルとしては「魚商人」「手紙」が大きく描画された。
◆KWICコンコーダンス
現状ではテキストマイニングのツールに文脈を読む性能はないため実際に該当箇所を読んで人力で判断する他ない。KWICコンコーダンスでキーワード指定すれば指定したキーワードがどのような文脈で用いられているか一覧で抽出される。
◆関連語検索
・[集計単位]を[文]に変更、[集計]する。
・[Search Entry:]の一覧からキーワードを選択してダブルクリックすると[Result]に指定したキーワードの品詞や共起関係が表示される。
※[Result:]から行指定してダブルクリックするとKWICコンコーダンスに遷移する。
※[Result:]の一覧から範囲指定して[コピー]したものを表計算ソフトやテキストファイルにペーストすることも可能である。
[#直接入力]を指定して「酒」といったキーワードで検索すると関連語が一覧で表示される。
◆属性の転倒
・「ない」の結果上位一覧
| N | 抽出語 | 品詞 | 全体 | 共起 | Jaccard |
| 1 | 書く | 動詞 | 3 (0.075) | 3 (0.273) | 0.2727 |
| 2 | 渡す | 動詞 | 5 (0.125) | 3 (0.273) | 0.2308 |
| 3 | 手紙 | 名詞 | 12 (0.300) | 4 (0.364) | 0.2105 |
| 4 | 違い | ナイ形容 | 2 (0.050) | 2 (0.182) | 0.1818 |
| 5 | 日 | 地名 | 3 (0.075) | 2 (0.182) | 0.1667 |
| 6 | 橋 | 名詞C | 4 (0.100) | 2 (0.182) | 0.1538 |
| 7 | 八郎 | 人名 | 4 (0.100) | 2 (0.182) | 0.1538 |
| 8 | 獲る | 動詞 | 5 (0.125) | 2 (0.182) | 0.1429 |
| 9 | 化ける | 動詞 | 1 (0.025) | 1 (0.091) | 0.0909 |
| 10 | 開く | 動詞 | 1 (0.025) | 1 (0.091) | 0.0909 |
見知らぬ女から手紙を預かったが、立ち寄った先の主人にそれはえんこうの手紙だと見破られる……といった粗筋となっている。
短いお話の中で属性の転倒を多用するのが昔話の特徴の一つと考えられる。
ここで「/」(スラッシュ)を「転倒」を意味する記号として用いる。スラッシュは様々な場面で用いられていて文脈依存的な記号という欠点もあるが、視覚的にはイメージしやすいと判断した。
・[えんこう|手紙:依頼/合図]
・[商人|手紙:預かる/焼却]
・[主人|手紙:見破る/焼却]
こういった風にお話を転がしていると分析できる。
えんこうの手紙を預かった男は「危機/阻止」へと転倒される。
◆類似度行列
・[コーディング単位]を[文]に変更して[集計]。Jaccard係数がマトリクス形式で確認できる。
・ある列を選択して画面右下の[コピー(選択列)]をクリックすると、当該のキーワードに関するJaccard係数がコピーされるので、それを表計算ソフトにペーストするといった利用が可能となる。
※当ブログでは[コーディング単位]が[段落][H5]の場合、Jacccard係数が1.0~0.5といった結果がほとんどで、意味のない結果となった。
◆多次元尺度構成法
・[コーディング単位]を[文]に変更して実行。
・共起関係を確認したいキーワードを指定。
・次元を「2」から「3」に変更して実行、三次元のマップとした。
えんこうの手紙を預かるくだりに関連したキーワードを指定したところ、「女」が離れた位置にプロットされた。
※選択するキーワードによって相対的な位置関係は変わり得る。
※実行すると指定したキーワードの幾つかが除外されるとメッセージが表示される。テキストのボリューム不足のためか無償版の仕様によるものか判断がつかない。
※当ブログの事例では「文」以外、「段落」と「H5」では除外されるキーワードが増える傾向となった。
◆自己組織化マップ
[コーディング単位]を[文]に変更して実行。
記述内容が視覚的に整理され、類似性の高い内容が近くに配置される。概ねストーリーに沿った形で各クラスターが表示される。
※当ブログの事例では「文」以外、「段落」と「H5」ではエラーが返される結果となった。
※クラスター化の計算を繰り返すため処理に時間がかかるので要注意。
※クラスターの配置、距離に意味はない。
◆トピックの推定
・[ツール]→[文書]→[トピックモデル]→[トピックの推定]を選択。
・[集計単位]を[文]に変更。
・[OK]ボタンをクリックすると、[トピックの推定結果]画面が表示される。
・各トピックで高い確率で出現する語句がリストアップされる。
・[#1]といった欄をクリックすると、文書検索画面が表示される。
◆ベイズ学習による分類
・[ツール]→[文書]→[ベイズ学習による分類]→[外部変数から学習]を選択。
・[分類の単位]を[文]に変更。
・[学習する外部変数]は[書名]に変更する。
※「タイトル」のままでもよし。
・[OK]ボタンをクリックすると、ファイルの保存画面が表示されるので、任意のファイル名を記述して保存する。
・[ツール]→[文書]→[ベイズ学習による分類]→[学習結果ファイルの内容を確認]を選択。ファイル選択画面が開くので、先ほど保存したファイルを指定して開く。すると[学習結果ファイル]画面が開くので内容の確認を行う。
※[学習結果を用いた自動分類]については割愛する。
※[トピックの推定]と[ベイズ学習による分類]は固有名詞などを強制抽出語としてあらかじめ指定しておかないと正確に分析されないケースが生じる。正式に利用したい際は有償版の購入をお勧めする。当ブログのはあくまでテストケースとしてのものである。
※[トピックの推定]と[ベイズ学習による分類]はコーディング・ルールに依らない分析手法となるが、筆者の能力的に追及はしない。
◆参考文献
・『日本の民話 34 石見篇』(大庭良美/編, 未来社, 1978)pp.44-45.
・『島根のむかし話』(島根県小・中学校国語教育研究会/編著, 日本標準, 1976)pp.166-168.
・『動かして学ぶ!はじめてのテキストマイニング』(樋口耕一, ナカニシヤ出版, 2022)
・『社会調査のための計量テキスト分析 【第2版】 内容分析の継承と発展を目指して』(樋口耕一, ナカニシヤ出版, 2020)
| 固定リンク
「昔話」カテゴリの記事
- 昔話の計量テキスト分析――狐女房(異類婚姻譚)(2026.05.13)
- 昔話の計量テキスト分析――隣の爺(模倣者)(2026.05.12)
- 昔話の計量テキスト分析――桃太郎&瓜姫(異常出生譚)(2026.05.11)
- 昔話の計量テキスト分析――桃太郎(2026.05.10)

















