文字列解析ツール e-CSA ver.1.00

文字列解析ツール e‑CSA ver.1.00
国語学・国文学研究者用マニュアル
九州大学大学院システム情報学研究院 情報理学部門
竹田正幸
文字列解析ツール e-CSA(efficient character string analyzer)は,テキストデータを単
なる文字の連鎖として扱う立場で開発した,汎用のソフトウェアツールです.本稿では,
特に国語学・国文学研究者による利用を想定して,e-CSA の特長と使用法を解説します.
発想支援ツール.通常のキーワード検索ツールでは,使用者がキーワードをシステムに
与えて検索が行われます.ここでは,使用者がどのようなキーワードで検索すべきか着想
できなければ一歩も進めません.e-CSA は,このキーワードへの着想を支援するべく,テ
キストデータのあらゆる長さのあらゆる部分文字列について,その生起頻度を計数し,そ
れを効果的に表示する機構を備えています.
単語分割 vs. 文字列分析.単語と単語の間にスペースを置く英語などとは異なり,日本
語には明確な単語の区切りがありません.そこで,単語ごとの統計頻度表を作成するため
には,テキストを単語に分割する作業が必要となります.しかし,この作業には多大な労
力が必要です.自然言語処理技術を用いて自動的に単語分割を行う方法もありますが,精
度が十分でないため,人手による修正作業がどうしても必要になります.
これに対し,近藤泰弘氏(青山学院大学教授)および近藤みゆき氏(実践女子大学助教
授)は,単語分割を一切行わず,テキストデータを単なる文字の連鎖として扱う文字列分
析の立場に立って,古典語分析の研究を展開しています.近藤氏らの先駆的研究によって,
単語分割を行わない文字列分析手法の有効性が,初めて示されました.
n グラム解析とその問題点.近藤氏らが用いた文字列分析の手法は,n グラム解析と呼ば
れるものです.ここで言う n グラムとは,長さ n の任意の部分文字列を指します.この n
グラム解析では,扱う部分文字列の長さ n を固定しますが,テキストの部分文字列を調査
する際には,n の値を一意に定めることができないので,複数の n の値について処理を行い,
得られた部分文字列リストをマージする必要があります.マージした結果は膨大な量とな
り,利用者の作業効率を著しく低下させます.
このような問題は,テキストの部分文字列全体を,長さによって「輪切り」にしたため
に起こったものです.e-CSA では,このような問題を避けるため,長さによる輪切りを行
いません.しかし,そうするとテキストの部分文字列すべてを扱うことになります.部分
文字列の個数は膨大であり,それをすべて提示するのは現実的ではありません.
部分文字列の効率的な提示.そこで,e-CSA では同値な部分文字列をグループにまとめ
てグループ単位で提示することにしました.ここで,「同値」とは,以下のようなことを指
します.
1
21
21
21
27
21
31
120
141
79
54
1884
1068
1939
546
1071
はるかすみ
はるかす
るかすみ
はるか
るかす
かすみ
はる
るか
かす
すみ
は
る
か
す
み
『古今和歌集』においては,文字列「はるかすみ」が 21 回出現し
ています.このとき,
「はるかすみ」の部分文字列は,いずれも,少
なくとも 21 回は生起しているはずです.左の表を見てみると,「は
るかす」
「るかすみ」
「るかす」の頻度は 21 であり,
「はるか」は 27,
「かすみ」は 31 となっています.
このことから,
「はるかす」
「るかすみ」
「るかす」については,こ
れらの文字列の『古今和歌集』における出現は,すべて「はるかす
み」の一部としての出現であることがわかります.そこで,この三
つの文字列は「はるかすみ」と本質的に同等であると考え,同じグ
ループにまとめます.
一方,
「はるか」
「かすみ」については,
「はるかすみ」でない「は
るか」が 8 個,
「はるかすみ」でない「かすみ」が 10 個あることに
なるので,別のグループにして扱わなければなりません.
専門的には,各々のグループを同値類と呼びます.この同値類は,Blumer ら(1987)によ
って導入された文字列上の同値関係に基づくものです.長さmのテキストの部分文字列の
個数は m の二乗に比例しますが,この同値類の個数は m に比例することが知られています.
同値類の効率的表現.上に示した「はるかすみ」とその部分文字列を併せた合計 17 個の
文字列は,以下に示すようにグループ分けされることになります.
はるかすみ
はるかす
るかすみ
るかす
はるか
かすみ
るか
はる
は
る
かす
か
すみ
す
み
この場合,
「はるかすみ」を含むグループのメンバ数は 4 ですが,一般には,グループ内
における最長文字列の長さの二乗に比例します.そこで,全メンバを表示するのではなく,
最長文字列と「これ以上縮めると頻度が増加してしまう」文字列のみを表示することにし
ます.この例では「るかす」がそれに当たります.このような文字列を極小部分文字列と
よびます. この言い方に倣えば,各グループ内の最長文字列は「これ以上伸ばすと頻度が
減少してしまう」文字列です.
●はるかすみ
−るかす−
e-CSA では,一つのグループを最長文字列とその極小部分文字列だ
けを並べて,左のように表現することにしました.●を付した文字列
が,そのグループ内の最長文字列になります.一般に,極小部分文字
列は複数個存在し,その個数は最長文字列の長さに比例します.しかし,トータルで考え
ると,極小部分文字列の個数は,テキストサイズ m に比例することがわかっています.し
たがって,この表現法は効率的であると言えます.
2
動作環境・使用許諾条件など
動作環境.Windows98/2000/ME/XP で,ほぼ動作確認済み.推奨メモリ 512MB 以上.
使用許諾条件.本ソフトウェアの配布は無償としますが,開発者側でユーザを把握して
おきたいので,使用される方は,必ず電子メールなどでご連絡をお願いします.また,本
ソフトウェアを用いて得られた研究成果を学術雑誌などに発表される際には,このソフト
ウェアを使用したことを明記してくださるようお願いいたします.
著作権.本ソフトウェアの著作権は,開発者の竹田正幸が保有します.
免責事項.本ソフトウェアを使用して出力した統計データの誤り,および,それによる
学術的な意味での損害について,開発者は一切の責任を負いません.本ソフトウェアの出
力データに基づいて学術発表などを行う際には,別の手段を用いて確認されることをお薦
めします.また,本ソフトウェアを使用することで生じたその他のあらゆる損害について
も,開発者は一切の責任を負いません.
バグのご報告&ご要望.バグにお気づきの際は,お手数ですが,開発者側でも同じ症状
を再現できるように,状況を詳しくお知らせください.また,機能拡張に関するご要望も
歓迎いたします.ただ,どこまで対応できるか,保証の限りではありません.安易に機能
拡張を行うと,知らずにバグを呼び込むことがあり,以前は正常に動作していた部分まで
がおかしくなることも少なくありません.バグを検出するための動作テストに費やす時間
や精神的余裕を,開発者は持ちあわせておりません.どうかご理解くださいますようお願
いいたします.
その他.日本語コードとしては Shifted‑JIS (SJIS)を想定しています.外字には対応し
ません.また,Unicode にも対応しておりません.
謝辞.純真女子短期大学の南里一郎先生,九州大学大学院人文科学研究院の福田智子先
生には,本ソフトウェアツール開発の初期段階から,ご専門である国語学・国文学のお立
場から貴重なご意見をちょうだいしました.また,九州大学大学院システム情報科学研究
院の篠原歩先生には,本ソフトウェアに命名して頂きました.ここに,深く感謝いたしま
す.
3
テキストファイルの準備
岩波日本古典文学大系『今昔物語集』巻第一をテキストファイル化したものを例にとっ
て説明します.ここでは,下に示すような形式でテキストファイル化しました.
<今昔物語集卷第一天竺>
<釋迦如来、人界宿給語第一>
<052-04>今昔、釋迦如来、未ダ佛ニ不成給ザリケル時ハ釋迦菩薩ト申テ兜率天ノ内院ト云所ニゾ住給
<052-05>ケル。而ニ閻浮提ニ下生シナムト思シケル時ニ、五衰ヲ現ハシ給フ。其五衰ト云ハ、一ニハ天人ハ眼
<052-06>瞬ク事无ニ眼瞬ロク。二ニハ天人ノ頭ノ上ノ花鬘ハ萎事无ニ萎ヌ。三ニハ天人ノ衣ニハ塵居ル
<052-07>事无ニ塵・垢ヲ受ツ。四ニハ天人ハ汗アユル事无ニ脇下ヨリ汗出キヌ。五ニハ天人ハ我ガ本ノ
<052-08>座ヲ不替ザルニ本ノ座ヲ不求シテ當ル所ニ居ヌ。
<052-09>其ノ時ニ、諸ノ天人、菩薩此相ヲ現シ給ウ見テ、恠テ菩薩ニ申シテ云ク、
「我等、今日此ノ相
<052-10>ヲ現シ給ヲ見テ身動キ心迷。願クハ我等ガ為ニ此ノ故ヲ宣ベ給ヘ」ト。菩薩、諸天ニ荅テ宣ハク、
<052-11>當ニ知ベシ、諸ノ行ハ皆不常ズト云事ヲ。我今、不久シテ此ノ天ノ宮ヲ捨テ閻浮提ニ生ナムズ」ト。
………
e-CSA では,ファイル中の改行コードを無視して処理します.したがって,テキストフ
ァイル作成時には,見やすいように適宜改行を入れておくことをお薦めします.また,後
述しますが,改行コードと同様に,ユーザが指定した文字や文字列(たとえば,句読点な
ど)を無視させることができます.
また,テキスト中の至るところにラベルを貼り付けることができます.『今昔物語集』の
例では,ページと行の情報を
<
と
>
で囲んだものを行頭に付与しています.ラベル
は,必ずしも行頭に置く必要はありません.このようにファイル中にラベルを埋め込んで
おけば,用例を KWIC (KeyWord In Context)表示する際には,当該の文字列の生起箇所を
知ることができます.
1行ごとにラベルを貼り付ける必要はなく,ページごと,あるいは,章ごとにラベルを
貼っても構いません.いずれにせよ,KWIC 表示時には,当該文字列の生起箇所以前に置
かれていたラベルのうち,最も近くにあるラベルが表示されます.
e-CSA では,テキストを単なる文字の連鎖として扱います.漢字で書かれたものをかな
に開いて処理するなど,多様な表記の揺れを吸収することは,一切行いません.したがっ
て,表記を統一する作業は,必要に応じて,テキストファイル作成時にユーザの責任で行
ってください.ただし,カタカナからひらがなへの変換など,機械的に変換可能なものに
は,ある程度対応します.
4
インストール
以下の手順によって,e-CSA をインストールしてください.
(1) 「eCSA_100.exe」を入手する.このファイルは,自動動解凍書庫になっています.
(2) 上のファイルをダブルクリックして解凍する.すると,解凍先フォルダ名を尋ねてき
ます.解凍先は,デフォルトでは,「c:¥eCSA」となっています.通常はそのまま「解
凍」ボタンを押してください.
(3) 解凍のためのパスワードを尋ねてくるので入力し,
「OK」ボタンを押してください.パ
スワードは電子メールなどで直接お知らせします.
(4) 解凍後,セットアッププログラムが起動します.「次へ」のボタンを押してください.
(5) インストール先を尋ねてきます.そのままで問題なければ「次へ」のボタンを押してく
ださい.
(6) 「セットアップの完了」ウインドウが表示されます.
「完了」ボタンを押してください.
以上で,インストール作業は完了します.
5
用意したテキストファイルの登録
ここでは,『今昔物語集』巻第一から巻第五をテキストファイル化した「今昔 01.txt」〜
「今昔 05.txt」,および,巻第二十八から巻第三十一をテキストファイル化した「今昔 28.txt」
〜「今昔 31.txt」の登録を行います.これらのファイルは,すべて「D:¥Text」の下にある
ものとします.
(1) まず,e-CSA アイコンをダブルクリックして起動させます.起
動すると画面左側に左のような制御ウインドウが現れます.
(2) メニューの「ページ」を選び,その中の「ページの追加」をク
リックします.すると,下のようなダイアローグボックスが現
れます.
(3) ページ名を入力します.ここでは,
「今昔 1-5」と入力しました.
入力し終わったら「OK」ボタンを押します.
(4) すると,左のように,制御ウインドウ上にページが現れます.
ページタブには,先ほど入力したとおり「今昔 1-5」と書かれて
います.これから,このページにテキストファイルを登録して
いきます.
(5) テキスト名とそのファイルパス名の対を登録していきます.こ
こでは,
「テキスト名」と書かれたエディットボックスに「今昔
1」と入力し,その下の「ファイルパス名」と書かれたエディ
ットボックスに,対応するファイルのパス名「D:¥Text¥今昔
01.txt」を入力しています.パス名が定かでない場合は,
「参照」
ボタンを押して,ファイルを探してください.テキスト名とフ
ァイルパス名を入力したら,「追加」ボタンを押してください.
入力した情報がリストに追加されます.この作業を繰り返して,
5 個のテキストファイルを登録すると,左のようになります.
6
(6) ここで,「OK」ボタンを押すと,左のようになります.これ
で,ページ「今昔 1-5」へのファイル登録が完了しました.
(7) 引き続き,(2)から(6)の要領で,
「今昔 28-31」というページを
作成し,そのページに「今昔 28.txt」〜「今昔 31.txt」を登録
します.すると左下のようになります.
以上で,『今昔物語集』ファイルの登録作業が完了しました.
7
テキストの「見方」の設定
ページごとにテキストの「見方」を設定します.同一のファイルでも,ここの設定内容
を変えることにより,違った扱いをすることができます.まず,「区切り等設定」ボタンを
押下します.すると,左下に示すようなダイアローグボックスが表示されます.
(1) 「区切り文字列群」の指定.たとえば句点 。 など,
区切り文字列としたい文字列を指定します.テキスト
文字列は,区切り文字列の前後で分断され,それをま
たいだ文字列は計数されません.
(KWIC 表示におい
ては,これらの区切り文字列も表示されます.
)ここ
では,句点 。 をエディットボックスに入力し,
「追
加」ボタンを押下します.すると,リスト中にその 。
が現れます.
(2) 「無視する文字列群」の指定.たとえば,読点
や括弧 (
),かぎ 「
、
」 など,テキスト中に
は存在するが,ないものとして扱いたい文字列を指定
します.指定の方法は,
「区切り文字列群」の指定と
同様に行ってください.ここでは,読点 、,中点 ・ ,
かぎ 「 , 」,二重かぎ 『 , 』 を登録しました.
(これらの文字列は,処理時にテ
キスト文字列から削除してしまうため,KWIC 表示時にも表示されません.)
(3) 「ラベル文字列」の指定.テキスト中にラベルを埋め込んだ場合には,
「ラベル文字列」
の欄の「指定する」をチェックし,ラベルの「先頭」と「末尾」の文字列をそれぞれ入
力します.ここでは,先頭に
< を,末尾に
> を,それぞれ指定します.
(4) 「対象文字列」の指定.これは,例に示した『今昔物語集』ファイルでは不要です.チ
ェックをはずしたままにしておいてください.これは,下に示したような形式のファイ
ルを扱うことを想定した機能です.
8
<D>
<R>
<A>一巻
<N>
1 古今
</A>
1</N>
<P>[としのうちに][春はきにけり][ひととせを][こぞとやいはむ][ことしとやいはむ]</P>
<K>[としのうちに][はるはきにけり][ひととせを][こそとやいはむ][ことしとやいはむ]</K>
</R>
<R>
<A>一巻
<N>
1 古今
</A>
2</N>
<P>[袖ひちて][むすびし水の][こほれるを][春立つけふの][風やとくらむ]</P>
<K>[そてひちて][むすひしみつの][こほれるを][はるたつけふの][かせやとくらむ]</K>
</R>
………
<R>
<A>一巻
1 古今
</A>
<N> 1111</N>
<P>[みちしらば][つみにもゆかむ][すみのえの][岸におふてふ][こひわすれぐさ]</P>
<K>[みちしらは][つみにもゆかむ][すみのえの][きしにおふてふ][こひわすれくさ]</K>
</R>
</D>
上に示した『古今和歌集』ファイルにおいて,和歌を清音かなで表記した部分だけを
処理の対象としたい場合,
「指定する」にチェックを入れた上で,
「先頭」に <K> を,
「末尾」に </K> を,それぞれ指定します.こうすると, <K> と </K> に囲ま
れた部分以外は処理の対象外となります.(付記:このデータでは,五・七・五・七・
七の各々の句を,各括弧 [ , ] で括ってあります.そこで, [ と ] を「区切り
文字列群」に指定した場合には,文字列の計数は,句を超えない範囲で行われます.逆
に,「無視する文字列群」として指定すると,1首全体をまとめて1つの文字列として
扱うので,複数の句にまたがった文字列も計数されることになります.)
以上(1)〜(4)の指定が終了したら「OK」ボタンを押してください.なお,この作業は,
ページごとに行ってください.したがって,異なる形式で作成したファイルは別ページに
登録しておくことになります.
★ 3〜4の設定内容は保存されますので,次回から設定の必要はありません.もちろん,
変更は可能です.
9
部分文字列の解析
それでは,いよいよ,部分文字列の統計をとってみましょう.
(1) 部分文字列統計プログラムの起動.メインメニューから「アプリケーション」→「文字
列統計」と選択してください.すると,下のような作業ウインドウが開きます.
e-CSA は,テキストファイル群AとBに対し,それぞれにおける文字列の生起頻度を比
較することを基本としています.単独のテキストファイル群における生起頻度が必要な
場合には,作業ウインドウ右上のラジオボタンで「テキスト群Aにおける生起頻度を調
査」を選んでください.
(2) テキストファイルの選択.3で登録したテキストファイルの中から,処理の対象とする
ファイルを選び,テキスト群A,Bとします.具体的には,制御ウインドウ内でページ
を選び,その中のテキストファイルを選び,その状態で作業ウインドウの「追加」ボタ
ンを押します.テキストファイル選択においては,複数のテキストファイルを選ぶこと
ができます.Shift キーを押したままテキスト名をクリックすると複数のテキストファ
イルを1度に選択できます.この場合,選択したいテキストが連続して並んでいる必要
があります.連続していないテキストを1度に選択したい場合には,Ctrl キーを押した
ままテキスト名をクリックしてください.ここでは,「今昔 1-5」の 5 個のファイルす
べてをテキスト群Aとしました.登録したファイルがリストに現れています.リスト中
のテキスト名をダブルクリックすると,ファイルの内容が右側に表示されるので,内容
を確認することができます.以下の図では,
「今昔 01.txt」の内容が表示されています.
10
これと同様の作業を,テキスト群Bについても行って,「今昔 28-31」の4個のファイ
ルをテキスト群Bとしてください.
(3) 清音かな表記への変換指定.作業ウインドウ上部の「清音かな表記へ変換」をチェック
しておくと,カタカナ・ひらがなについては,すべて清音ひらがなへ自動的に変換しま
す.その際,濁点・半濁点の情報は失われることになります.
(4) 部分文字列統計の計算.
「実行」ボタンを押すことにより,(1)で選択したテキストのす
べての部分文字列に対する生起頻度の計算が開始されます.計算が終了すると作業ウイ
ンドウ上で「テキストの選択」ページから「表現と用例」ページに自動的に切り替わり
ますので,しばらくお待ちください.なお,この計算に要する時間は,テキストファイ
ルの大きさと搭載メモリの容量に強く依存します.
11
(5) 頻度に関する度数分布表示.テキスト群A,Bにおけるそれぞれの頻度に関する度数分
布が,2次元の表の形で表示されます.各セル中の数は,該当する頻度をもつ部分文字
列の個数を表します.e-CSA では,同値な部分文字列をまとめて扱いますので,正確に
は,そのグループ(同値類)の個数となります.
(6) 文字列長の下限の指定.e-CSA では, n グラム解析ツールとは異なり,扱う文字列の
長さ n を固定しません.任意の長さの部分文字列が対象となります.短い部分文字列を
排除したい場合には,作業ウインドウ左上のスライダーバーを動かし,文字列の長さの
下限を設定することができます.
(一つの同値類は,長さの異なるメンバを含みますが,
設定する文字列の下限は,同値類中の最長文字列の長さについての下限とお考えくださ
い.)
(7) セルの選択.2次元の度数分布表において,内容を表示させたいセルをダブルクリック
12
すると,「文字列閲覧」ウインドウが開きます.ここでは,テキスト群Aにおける頻度
が3,Bにおける頻度が0であるような文字列を表示しています.
上部中央に該当する文字列のリストが表示されます.複数のセルを同時に指定したい場
合には,複数セルを矩形状に選択した上で,「選択範囲を表示」ボタンを押してくださ
い.(リストには,デフォルトでは,同値類中の最長文字列のみが表示されています.
「同値類中の最長文字列のみ表示」のチェックをはずすと,同値類中の極小文字列も併
せて表示します.)
(8) 部分文字列リストからの選択・表示. リスト中から,関心のある文字列を選択すると,
左右の文脈が,それぞれ木のかたちで表示されます.それと同時に,ウインドウ下部に
テキスト群A,Bにおける用例が KWIC 表示されます.
13
(9) 左文脈木・右文脈木からの選択・表示.左右の文脈木において,関心のある文字列をク
リックすると,その文字列の用例が KWIC 表示されます.
(10)文字列直接指定による選択・表示.ウインドウ左上のエディットボックスに文字列を入
力し「探索」ボタンを押すと,その文字列の左右の文脈木が表示され,ウインドウ下部
には,用例が KWIC 表示されます.
14