Perlの基礎の基礎というwikiページを開設し、そちらで以下のスクリプト集を使った解説を行っています。言語学・言語教育系の方でコンピュータープログラムのバックグランドが無い人の為のwikiページで、どなたでも変更・追加が行えるようになっています。もしご協力いただけるかたは、是非お願いいたします。
このページは、パールのスクリプトがテキスト形式で保存され、リンクされています。それぞれのスクリプトを filename.pl (filenameは好きなファイルの名前)という.plの拡張子で保存してもらえると、そのままスクリプトとして使えるはずです。練習用ファイルとして、Project Gutenbergからコピーしてきた、Charles DickensのGreat Expectationsの最初のチャプターをここでダウンロードしてください。テキストは、9700文字、1840語、220行です。
使用方法: perl helloWorld.pl
とりあえず、最初はこれから始めて下さい。ファイルを保存する際ファイ名にスペースがあってもうまく行きますが、基本的にはスペースは使わないようにしましょう。このスクリプトがうまく動いたら、その他のプログラムを試してみましょう。
使用方法: perl helloWorld2.pl
helloWorld.plの応用系です。Variableに文字列(string)を指定し、出力します。
使用方法: perl helloWorld3.pl
helloWorld.plをさらに変更したもので、
使用方法: perl lc2uc.pl deleteEndOfLine.pl GreatExpectations.txt
複数行にわたるテキストの改行シンボルを取り除いて、全てを一行にまとめます。(Windows/UNIXの改行シンボルの違いについてはWikipediaなどを参照してください)
使用方法: perl uc2lc.pl greatExpectations.txt
Perlのコマンドlcを使って文字を小文字にします。
使用方法: perl lc2uc.pl greatExpectations.txt
Perlのコマンドucを使って文字を小文字にします。
使用方法: perl countWord1.pl greatExpectations.txt
スペースを目安に単語別に分けて、arrayのインデックスを
もとに単語の数を数えます。
使用方法: perl countWord1.pl greatExpectations.txt
スペースを目安に単語別に分け、arrayを単語毎に処理して単語の数を数えます。
使用方法: perl count.pl greatExpectations.txt
入力されたテキストの行数を数えます。上手く行数が表示されたら、今度はsampel.txt の改行の数を変えて、保存してもう一度パールを実行してください。数が変わります。
perl count.pl sample.txt sample2.txt と2つのファイルを続けると、2つのファイルの改行数の合計を出力します。
使用方法: perl doMath.pl
足し算、引き算、かけ算、割り算をします。小数のかけ算に関するトピックは初級以降にあります。
使用方法: perl listWord1.pl greatExpectations.txt
単語を一行に一つずつならべます。スペースを目安に単語にわけますが、その前に、punctuationを語の間にもスペースをいれます。Abbreviations (e.g., Mr.など)も2語に分けられてしまいます。
使用方法: perl dirName
ファイル名ではなく、ディレクトリ名をプログラムに送ります。
使用方法: perl readFile.pl greatExpectations.txt
コマンドラインからファイル名を読み込んで、各行ごとに処理します。
使用方法: perl uc2lc2.pl greatExpectations.txt
大文字を小文字に変換します。文字毎に文字のbinary数を求め、32を足して対応する大文字を求めます。
使用方法: perl lc2uc2.pl greatExpectations.txt
小文字を大文字に変換します。文字毎に文字のbinary数を求め、32を引いて対応する小文字を求めます。
使用方法: perl countBigrams1.pl greatExpectations.txt
Bigrams(2語の連語)の頻度、タイプ、各タイプの頻度を数え、出力します。インプットの最初に、文頭タグをつけるので、bigramの頻度はunigram(単語の頻度)と同じになります。
使用方法: perl logProb.pl
コンピューターで表される小数はbinaryの数以外は全て近似値ですので、コーパス分析にはよく対数確率が使われます。
使用方法: perl countWdTypes.pl greatExpectations.txt
単語をhashのキーにして、新しいキーを定義する毎にtypeの頻度を増やしてタイプ数を数えます。
使用方法: perl countWdTypes2.pl greatExpectations.txt
hashを利用してtypeの頻度を求めるまえに、全てを小文字にしてpunctuationを語から分けます。最後にアルファベット別、頻度別にタイプを出力します。
使用方法: perl countWdTypes3.pl greatExpectations.txt
hashを利用してtypeの頻度を求めますが、countWdType2.plでは数字や単語でないものが混ざるので、アルファベット以外の物を無視します。
使用方法: perl sortWords.pl greatExpectations.txt
単語のタイプをhashで数え、それをアルファベット順にソートして頻度と一緒に出力します。
使用方法: perl readCommandLine.pl greatExpectations.txt
コマンドラインからファイル名を読み込みます。指定した数以外のargumentsがある場合は、エラーメッセージを出します。
使用方法: perl reverseSort.pl greatExpectations.txt
単語を末尾からのアルファベット順でソートして出力します。
使用方法: perl useTwice.pl greatExpectations.txt
while loopでファイルを1度読むと、そのファイルを使い切ってしまうので、2回はwhileでファイルを処理できません。その際には、ファイルにハンドル名を与えて、2度開いてあげます。
使用方法: perl countSent.pl greatExpectations.txt
ピリオドの後にスペースと大文字のレターが続いている所をセンテンスの区切りとして処理します。
使用方法: perl outputFile.pl
コマンドラインでも外部の出力ファイルを指定できますが、プログラムにいつも外部出力ファイル名を聞かせる事もできます。
使用方法: perl moreThanOneArgs.pl filename1.txt filename2.txt filename3.txt ....
複数のファイルをコマンドラインから取り、それぞれのファイルを処理します。
使用方法: perl compareFile.pl greatExpectations.txt anotherFile.txt
一つ目のファイルと二つ目のファイルに出てくる単語を比べます。
使用方法: perl compareFile.pl greatExpectations.txt anotherFile1.txt anotherFile2.txt
複数のファイルの出現ファイルを比べて表示します。
使用方法: perl morph.pl mhyph.txt greatExpectations.txt
外部の辞書をハッシュに読み込み、インプットファイルの単語と辞書にそってハイフン付けしていきます。
JPerlを使っている人は問題なく日本語の処理ができるかもしれませんが、普通のPerl 5.8を使っている場合、日本語のフォーマットEUC-JP及びShift JISで日本語の処理をします。英語とbit数が違い(ASCIIは7-bit/128 character code、IO 8859 character setsは8-bit/256 character code)、EUC-JPとShift JISは、8-bitのdouble byteでエンコードされています。Perl 5.8では、Unicodeのサポートが信頼できる程度まであがっているので、一度すべての日本語をUnicode (UTF-8; 4 bytes of 8 bitsなど)にするのが良いでしょう(処理速度は遅くなるかもしれません)。
ニューヨーク市立大学
言語学部博士課程 永野 友雅 (tnagano@gc.cuny.edu) (書きかけのPerl入門書がここでダウンロードできます)
ホームページ
このページは同志社大学 北尾謙治教授よりアイデアをいただいています。
最終更新日:January 14, 2007