#contents *Java による Corpus 言語学 プログラミング [#v192f2d0] Oliver Mason Programming for Corpus Linguistics : how to do text analysis with Java, Edinburgch, 2000 のテキスト を用いた演習用です。 なお Mason のJava コードを C++ におきかえ、GUI 化しました。 ここ 全て Java で作成しています。またコマンドラインから実行します。 また実行結果はデフォルトではディスプレイに表示されます。ファイルに保存したいときはリダイレクトしてください。 ダウンロードリンク先のファイルはすべてjavaクラスファイルです。実行するためにはJdkなどの環境が必要です。 - 基礎プログラム1 SortedWFList テキストを単語ごとに改行したデータを作成した後の段階で使う. すなわち一行, 一語のリストを読み, その語と頻度からなるMAPを登録して, 次の行に進む. 以下の行を読んでいる時に, 同じ語が出てきた時は, 先に出てきた語の頻度数をひとつインクリメントする. 注意点 空白の改行 \0a があると, それも数える. - 基礎プログラム2 ConcordanceReader, および RingConcorcanceReader 第一引数に与えられた node word を中心に, 前後のコンテキストを示す. ファイル名は, デフォルトではパイプで渡される. (注意:テスト用に次のような短いファイルを与えると, スペースを埋めるため, 同じような作業を3行繰り返す.) this is a cat. that is an apple. It is a dog. motohiro. 実行結果 [ishida@amd corpus]$ java ConcordanceReader is < test.txt this is a cat. that is an apple. It is a dog this is a cat. that is an apple. It is a dog. motohiro. this is a cat. that is an apple. It is a dog. motohiro. - その1 FileTokeniser (Mason p.139) 小説や新聞などのテキストファイルから単語リストを作成します。 文中のコンマ、文末のピリオドなどの記号は適時取り除きます。 実行方法:コマンドラインから, 引数をふたつ指定します. (Pathの設定を済ませている場合) c:\java FileTokeniser <path\テキストファイル名> <出力先ファイル名> - その2 WordLister (Mason p.143) 小説や新聞などのテキストファイルからアルファベット順単語リストを作成します (ただし大文字で始まる単語が優先されます)。 文中のコンマ、文末のピリオドなどの記号は適時取り除きます。引数をふたつ指定します. c:\java WordLister <path\テキストリストファイル名> > <出力先ファイル名> - その3 FreqListCreator (Mason p.145) 小説や新聞などのテキストファイルから出現頻度情報つき単語リストをアルファベット順に作成します (ただし大文字で始まる単語が優先されます)。 文中のコンマ、文末のピリオドなどの記号は適時取り除きます。引数はひとつで, 自動的に ファイル名.frq と言う名前のファイルを,当該ファイルと同じディレクトリに作成します. 画面には表示しません. c:\java FreqListCreator <path\テキストリストファイル名> - その4 FreqList (Mason p.145) その3で作成した 出現頻度情報つき単語リストから, 単語とその頻度のリストをアルファベット順に画面に表示します. c:\java FreqList <path\頻度情報ファイル名(***.frq)> - その5 XMLTokeniser 小説や新聞などのテキストファイルから単語リストを作成します。 その際、単語にタグ < > を付与します。 文中のコンマ、文末のピリオドなどの記号は適時取り除きます。。 c:\java xml.XMLTokeniser <path\テキストリストファイル名> - その5 Tagger 小説や新聞などのテキストファイルを読み込み、単語ごとに切り分ける。 その際、その単語の品詞情報をTagとして付記する。 また動詞、形容詞、名詞が活用している場合は原型に変換する。 c:\java Tagger <path\テキストリストファイル名> - その6 Stemmer 指定された単語の原型を割り出します。(形態素分解ルール付き) c:\java stemmer.Stemmer <patt\形態素ルールファイル> highest c:\ highest > high - その7 Collocator ある node Word について, その前後に位置する単語と, それらの単語がnodewrod の前後に現れる頻度を調べる.その際「前後」の距離を指定できる. そしてその頻度について統計的,あるいは情報理論的数値を求め, その数値を昇順に表示する. ただし _ アンダーラインが語中にあってはいけない. [ishida@amd collocate]$ java FreqListCreator verwandlung.txt // まず対象テキストの単語頻度表を作成する. *.frq [ishida@amd collocate]$ java IndexCreator verwandlung.txt // 対象とするテキストにおいて,各単語の出現する位置(テキスト先頭からの文字数)リストを作成(これは下でコンコーダンスラインを作成するために必要). [ishida@amd collocate]$ java IndexConcordancer verwandlung.txt zur > zur.cnc //第二引数に指定した語を中心位置に置いたコンコーダンスを作成する. 27 lines found for 'zur' [ishida@amd collocate]$ java Collocator 4 4 1 zur.cnc verwandlung.txt.frq // 指定した前後の語数, 出現最低頻度, その単語のコンコーダンスファイル, テキスト全体の頻度表から, 各スコアを求める. sich T: -0.9095751336459887 Z: -0.7153883887361375MI: -0.7164788892824724 die T: -0.5373849721893587 Z: -0.4900663542111958MI: -0.31071920359163935