日本語処理におけるUNIXシステムの応用

<源氏物語の計量分析>

                                                      琉球大学工学部  上田 裕一
                                                      統計数理研究所  村上 征勝
                                                                     上田 英代
  1. 研究目的
    「源氏物語」は、日本古典文学の代表的作品であり、平安中期紫式部によって書かれたとされている。しかし、54帖からなる長編の為、各巻々の成立過程には古来多くの疑問が投げかけられて来た。又、各巻相互のつながりの不自然さや、文体の違い等々の為、「宇治十帖」他作家説、あるいは特定作者群を想定した複数作家説等が出されて来た。本研究は、それらの疑問に対し文の長さ、接頭語接尾語の使用頻度、固有名詞の出現率、和歌の使用位置、各品詞の使用頻度、相対的使用度等々を計量的に分析することによって、一つの解答を試みるものである。

  2. 研究方法と結果
    1. データ入力と文末処理
      源氏物語大成(池田亀鑑編著)をOCRにて読み込み、原文と対比し、修正した。
      OCRの機械誤読率は、4〜5%であった。なお、使用したテキストには句点がないため日本古典文学大系を参考にして、手作業により句点をつけた。
    2. UNIXシステムを使っての単語分割
      計量分析するために、文を単語分割することは最低必要条件であるが、その為にUNIXシステムを用いて、次のように機械的な単語分割を試みた。
      1. 文末処理された文献を手作業により単語分割をする。
      2. その単語を集めて辞書を作る。
      3. その辞書で文末処理だけされたもとの白文を切る。
      4. 手作業による分割とコンピュータによる分割との同一性を確認する。
      5. 全巻一括処理
        まずlexコマンドを使用してみると、機種によって漢字対応しないものがあった。
        分割word×文字数<=512 ならば、コンピュータによる自動分割が可能であった。
        次にsedコマンドを使用すると分割word 150語まで可能となりlexコマンドより分割能力が高かった。
    3. 全単語の使用回数などのデータ解析
      UNIXシステムのwcコマンドやawkコマンドを使用してデータを解析する。

      [例]「空蝉」の巻の冒頭部分をこの方法で処理したものを以下に示す。

      入力文章
      ねられたまはぬままには我はかく人ににくまれてもならはぬをこよひなむはしめてうしとよをおもひしりぬれははつかしくてなからふましうこそおもひなりぬれとのたまへはなみたを

      出力文章
      ね /られ /たまは /ぬ /まま /に /は /我 /は /かく /人 /に /にくま /れ /て /も /ならは /ぬ /を /こよひ /なむ /はしめて /う

      出力文章2
      ね られ たまは ぬ まま に は 我 は かく 人 に にくま れ て も なら は ぬ を こよひ なむ はしめて うし と よ を おもひ しり ぬれ は はつ

  3. 考察
    UNIXコマンドを使い、シェルプログラミングをすることによって、日本語の計量分析が容易になった。

  1. テキストの選択
    源氏物語大成(池田亀鑑編著)を選択した理由は次の通りである。
    1. 諸本との原本対比が殆ど記載されていること。
    2. 語彙索引が完備していること。
    3. OCRによって機械可読文献にしやすいこと。

  2. 読み取り操作について
    1. OCRの構成は図1のごとくである。
    2. 連続読み取りはB4/50枚までで、大成本は見開き2ページ分をコピーしてB4縦サイズにカットして1ページ分とした。
      1ページは約1分で読み取る。
    3. OCRによる読み取りの誤読率はルビ行、行横の注などを誤読する為、平均980中32字(3〜4%)であった。
      OCRの誤読の特徴は図2のごとくである。

  3. 単語分割
    1. OCRで読み取ったテキストを修正したのち日本古典文学大系の句点を参考に、パソコン上で句点をつける。 図3
    2. 次にそれを単語分割する。 図4
      それをもとにアイウエオ順に辞書を作る。
    3. 手作業による単語分割には、大成本1ページ(490字)約12〜13分かかること、また統一性に欠けるなどの欠点がある。

  4. UNIXの特徴
    1. 1996年 Ken Thompson & Dennis Ritchie (ベル研究所)が開発。
    2. C言語でOSが作られ移植性が良い為、パソコンから超大型コンピュータまできわめて多種多様な計算機の上で作動する。
      (PC、マッキントッシュ、News、CrayV、etc、16ビット以上のパソコン)
    3. プログラム開発用ツールが豊富である。
      ツールの組み合せで既存のものでは苦労するプログラムが不必要なほど、格段に威力を発揮する。時間、労力、確認、改良などのわずらわしい作業がブロック処理を組み立てることで短縮される。
    4. 流れ作業(フィルター)が発達している。
    5. 一連の流れ作業を新たなプログラムとしてコマンド化できる。
      (シェル、プログラミング)

  5. UNIXのコマンドと働き
      cat      ファイルを統合したり、ファイルの内容を表示します。
      fold     行を折りたたみを行います。
      sort     ファイルの内容を行単位に昇順、または降順のソートやマージをおこないます。
      uniq     ファイルの中の繰り返し行を通知します。
      tail     ファイル の後半の部分だけを出力します。
      egrep    指定された文字列のパターンによるファイル行の検索を行います。
      tr       標準入力ファイルから指定された文字列の置換や削除を行って
               標準出力します。
      sed      ストリームエディタ(バッチ形式用のエディタ)です。
      lex      字句解析プログラムを生成します。
      awk      入力ファイルの中で指定されたパターンの文字列と一致する行を
               探して指定の処理を実行します。
      wc       文字数、語数、行数をカウントします。
    

  6. 単語分割ファイルから辞書の作成
      cat genji1.jxw | tr -d '\012' | tr '  ' '\012' | sort |uniq |
       tr ' \012' ',' | fold > gdic1.jxw
    
         genji1.jxw  →  単語分割された原文(桐壷の巻)
         gdic1.jxw   →  桐壷の巻の辞書
                        (7058語あり誤った分割がすぐに発見できる。)