解説のページ(開発中)

Perlの基礎の基礎というwikiページを開設し、そちらで以下のスクリプト集を使った解説を行っています。言語学・言語教育系の方でコンピュータープログラムのバックグランドが無い人の為のwikiページで、どなたでも変更・追加が行えるようになっています。もしご協力いただけるかたは、是非お願いいたします。

Perlの基礎の基礎wikiページ


初めに

このページは、パールのスクリプトがテキスト形式で保存され、リンクされています。それぞれのスクリプトを filename.pl (filenameは好きなファイルの名前)という.plの拡張子で保存してもらえると、そのままスクリプトとして使えるはずです。練習用ファイルとして、Project Gutenbergからコピーしてきた、Charles DickensのGreat Expectationsの最初のチャプターをここでダウンロードしてください。テキストは、9700文字、1840語、220行です。


入門編

  1. Hello World! 1(初めてのPerlスクリプト)

    使用方法: perl helloWorld.pl
    とりあえず、最初はこれから始めて下さい。ファイルを保存する際ファイ名にスペースがあってもうまく行きますが、基本的にはスペースは使わないようにしましょう。このスクリプトがうまく動いたら、その他のプログラムを試してみましょう。

  2. Hello World! 2 (初めてのPerlスクリプト)

    使用方法: perl helloWorld2.pl
    helloWorld.plの応用系です。Variableに文字列(string)を指定し、出力します。

  3. Hello World! 3 (初めてのPerlスクリプト)

    使用方法: perl helloWorld3.pl
    helloWorld.plをさらに変更したもので、(standard input = キーボードからの直接入力)を使って入力された値を出力します。

  4. Learning Perl: Concatenate all lines (全ての行を一行にまとめる)

    使用方法: perl lc2uc.pl deleteEndOfLine.pl GreatExpectations.txt
    複数行にわたるテキストの改行シンボルを取り除いて、全てを一行にまとめます。(Windows/UNIXの改行シンボルの違いについてはWikipediaなどを参照してください)

  5. Learning Perl: Convert text to lower case 1 (大文字を小文字に変換する)

    使用方法: perl uc2lc.pl greatExpectations.txt
    Perlのコマンドlcを使って文字を小文字にします。

  6. Learning Perl: Convert text to upper case 1(小文字を大文字に変換する)

    使用方法: perl lc2uc.pl greatExpectations.txt
    Perlのコマンドucを使って文字を小文字にします。

  7. Learning Perl: Count words 1 (単語数を数える)

    使用方法: perl countWord1.pl greatExpectations.txt
    スペースを目安に単語別に分けて、arrayのインデックスを もとに単語の数を数えます。

  8. Learning Perl: Count words 2(単語数を数える)

    使用方法: perl countWord1.pl greatExpectations.txt
    スペースを目安に単語別に分け、arrayを単語毎に処理して単語の数を数えます。

  9. Learning Perl: counting the number of lines (行数を数える)

    使用方法: perl count.pl greatExpectations.txt
    入力されたテキストの行数を数えます。上手く行数が表示されたら、今度はsampel.txt の改行の数を変えて、保存してもう一度パールを実行してください。数が変わります。 perl count.pl sample.txt sample2.txt と2つのファイルを続けると、2つのファイルの改行数の合計を出力します。

  10. Learning Perl: do mathmatics (簡単な計算をする)

    使用方法: perl doMath.pl
    足し算、引き算、かけ算、割り算をします。小数のかけ算に関するトピックは初級以降にあります。

  11. Learning Perl: List Words(単語を並べる)

    使用方法: perl listWord1.pl greatExpectations.txt
    単語を一行に一つずつならべます。スペースを目安に単語にわけますが、その前に、punctuationを語の間にもスペースをいれます。Abbreviations (e.g., Mr.など)も2語に分けられてしまいます。


初級編

  1. Dir Access: Concatenating all files in a directory (全てのファイルをつなぎ合わせる)

    使用方法: perl dirName
    ファイル名ではなく、ディレクトリ名をプログラムに送ります。

  2. File Access: opening a file (ファイルを開いて行ごとに処理する)

    使用方法: perl readFile.pl greatExpectations.txt
    コマンドラインからファイル名を読み込んで、各行ごとに処理します。

  3. Learning Perl: Convert text to lower case 2(大文字を小文字に変換する)

    使用方法: perl uc2lc2.pl greatExpectations.txt
    大文字を小文字に変換します。文字毎に文字のbinary数を求め、32を足して対応する大文字を求めます。

  4. Learning Perl: Convert text to upper case 2 (小文字を大文字に変換する)

    使用方法: perl lc2uc2.pl greatExpectations.txt
    小文字を大文字に変換します。文字毎に文字のbinary数を求め、32を引いて対応する小文字を求めます。

  5. Learning Perl: count bigrams 1 (バイグラムの数を数える)

    使用方法: perl countBigrams1.pl greatExpectations.txt
    Bigrams(2語の連語)の頻度、タイプ、各タイプの頻度を数え、出力します。インプットの最初に、文頭タグをつけるので、bigramの頻度はunigram(単語の頻度)と同じになります。

  6. Learning Perl: Count Characters 1(文字数を数える)

  7. Learning Perl: Count Characters 2(文字数を数える)

  8. Learning Perl: count log probability (対数確率を計算する)

    使用方法: perl logProb.pl
    コンピューターで表される小数はbinaryの数以外は全て近似値ですので、コーパス分析にはよく対数確率が使われます。

  9. Learning Perl: count trigrams 1 (トリグラムの数を数える)

  10. Learning Perl: Count Word Types 1 (単語のタイプ数を数える)

    使用方法: perl countWdTypes.pl greatExpectations.txt
    単語をhashのキーにして、新しいキーを定義する毎にtypeの頻度を増やしてタイプ数を数えます。

  11. Learning Perl: Count Word Types 2(単語のタイプ数を数える)

    使用方法: perl countWdTypes2.pl greatExpectations.txt
    hashを利用してtypeの頻度を求めるまえに、全てを小文字にしてpunctuationを語から分けます。最後にアルファベット別、頻度別にタイプを出力します。

  12. Learning Perl: Count Word Types 3(単語のタイプ数を数える)

    使用方法: perl countWdTypes3.pl greatExpectations.txt
    hashを利用してtypeの頻度を求めますが、countWdType2.plでは数字や単語でないものが混ざるので、アルファベット以外の物を無視します。

  13. Learning Perl: List Sorted Words (ソートした単語を並べる)

    使用方法: perl sortWords.pl greatExpectations.txt
    単語のタイプをhashで数え、それをアルファベット順にソートして頻度と一緒に出力します。

  14. Learning Perl: reading files from a command line (コマンドラインからファイル名を読み込む)

    使用方法: perl readCommandLine.pl greatExpectations.txt
    コマンドラインからファイル名を読み込みます。指定した数以外のargumentsがある場合は、エラーメッセージを出します。

  15. Programs: revsersive alphabetical order (単語の末尾からのアルファベット順にする)

    使用方法: perl reverseSort.pl greatExpectations.txt
    単語を末尾からのアルファベット順でソートして出力します。

  16. Using the input file twice (入力されたファイルを2回ループする)

    使用方法: perl useTwice.pl greatExpectations.txt
    while loopでファイルを1度読むと、そのファイルを使い切ってしまうので、2回はwhileでファイルを処理できません。その際には、ファイルにハンドル名を与えて、2度開いてあげます。


中級編

  1. Learning Perl: count bigram types 1 (バイグラムのタイプ数を数える)

  2. Learning Perl: count bigrams 2 (バイグラムの数を数える)

  3. Learning Perl: Count sentences (センテンス数を数える)

    使用方法: perl countSent.pl greatExpectations.txt
    ピリオドの後にスペースと大文字のレターが続いている所をセンテンスの区切りとして処理します。

  4. Learning Perl: count trigrams 2 (トリグラムの数を数える)

  5. Learning Perl: Count Word Types 4(単語のタイプ数と確率を数える)

  6. Learning Perl: Count Word Types 5(単語のタイプ数とZipfの係数を数える)

  7. Learning Perl: output to an external file (外部のファイルに出力する)

    使用方法: perl outputFile.pl
    コマンドラインでも外部の出力ファイルを指定できますが、プログラムにいつも外部出力ファイル名を聞かせる事もできます。

  8. Learning Perl: Place each sentence in one line 1(センテンスを1行毎に並べる)

  9. Learning Perl: Place each sentence in one line 2(センテンスを1行毎に並べる)

  10. Learning Perl: take more than one argument (複数のファイルをコマンドラインから取る)

    使用方法: perl moreThanOneArgs.pl filename1.txt filename2.txt filename3.txt ....
    複数のファイルをコマンドラインから取り、それぞれのファイルを処理します。

  11. Programs: compare words in two files (2ファイル間の単語の出現頻度を比べる)

    使用方法: perl compareFile.pl greatExpectations.txt anotherFile.txt
    一つ目のファイルと二つ目のファイルに出てくる単語を比べます。

  12. Programs: compare words in two files (複数ファイル間の単語の出現頻度を比べる)

    使用方法: perl compareFile.pl greatExpectations.txt anotherFile1.txt anotherFile2.txt
    複数のファイルの出現ファイルを比べて表示します。


中上級編

  1. Learning Perl: Lemmanize words with a dictionary (辞書ファイルを使って単語をlemmaに変換する)

  2. Learning Perl: Lemmanize words with FSA (辞書ファイル無しでFSAを使って単語をlemmaに変換する)

  3. Programs: confusion matrix (2人のタグ付けがどれくらいあっているか調べる)

  4. Programs: count words with using JACET8000 (JACET8000を使ってレベル別の単語数を数える)

  5. Programs: hyphenating with using a dictionary (辞書を使ってハイフンを入れる)

    使用方法: perl morph.pl mhyph.txt greatExpectations.txt
    外部の辞書をハッシュに読み込み、インプットファイルの単語と辞書にそってハイフン付けしていきます。

  6. Programs: minimum edit distance (MEDで2つのセンテンスの近似値を調べる)

  7. Unicode: Processing Japanese files (日本語の文字を処理する)

    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など)にするのが良いでしょう(処理速度は遅くなるかもしれません)。


Perl links

There are many other free programs (very famous Unix editor vi and emacs, for example). Please see the CPAN website for more information.

ニューヨーク市立大学
言語学部博士課程 永野 友雅 (tnagano@gc.cuny.edu) (書きかけのPerl入門書がここでダウンロードできます)
ホームページ

このページは同志社大学 北尾謙治教授よりアイデアをいただいています。

最終更新日:January 14, 2007