入門自然言語処理

第3章

注意: これからは次が必要
from __future__ import division  # Python 2 users only
import nltk, re, pprint
from nltk import word_tokenize

3.1 ウェブ及びディスク上のテキストへのアクセス

  1. グーテンベルク・プロジェクト: 25,000冊以上の無料のオンライン書籍
  2. urlibモジュールのurloopen関数によってウェブ上のテキストを読み込む
  3. nltk.word_tokenizeによりテキストをトークン化: 単語と句読点のリスト構造を生成
  4. nltk.Textによりトークンリストをテキストに変換
  5. openreadによるファイルの読み込み
  6. OSモジュールの利用
  7. 処理のパイプライン: 基本的なメソッドを組み合わせて複雑な処理を行う

3.2 文字列:最も低いレベルのテキスト処理

  1. Pythonにおける文字列の表現: 'Monty Python'、"Monty Python" のようにシングルクォートかダブルクォートのどちらかを用いて表される
  2. 文字列内の特定の文字へのアクセス: 文字列をリストとみなして、添字で指定
  3. 部分文字列へのアクセス: リストと同様、スライシングの利用
  4. 文字列が特定の文字列を含むかどうか: in演算子
  5. 表3-2: 文字列に関するメソッド

3.3 Unicodeを利用したテキストの処理

  1. ファイルの場所の探索:nltk.data.find()
  2. codecsモジュール: Unicode文字列への符号化と復号化を行う
  3. ローカルエンコーディング: ファイルの先頭に以下を書き込む(コーディングとしてutf-8を使用する場合):
    # -*- coding: utf-8 -*-
    

3.4 単語のパターンを検出するための正規表現

(特に重要)
  1. 正規表現のためのモジュール: re
  2. 基本的なメタキャラクタ: ^ $ . ?、探索関数re.search
    3 番目の文字が「j」で6 番目の文字が「t」であるような8 文字の単語を探す例:
    [w for w in wordlist if re.search('^..j..t..$', w)]
    
  3. テキストニムとその正規表現: ^[ghi][mno][jlk][def]$
  4. 繰り返しを表す特殊文字(クリーネ閉包): + *
  5. 文字の選択表現: [ ]およびそのなkで用いられる- ^の意味と用法
  6. その他: \ ( ) |
    表3-3 正規表現のメタキャラクタ一覧

3.5 正規表現の有用な応用方法

  1. 単語の部分文字列の抽出: re.findall()
  2. 単語の部分文字列の処理: nltk.Index
  3. 語幹の検出
  4. トークン化されたテキストの検索: nltk.re_show(p, s), nltk.app.nemo()

3.6 テキストの正規化

  1. テキストの正規化: 基本は小文字で表現
  2. ステミング: 単語から接辞を取り除く: PorterStemmer, LancasterStemmer
  3. 見出し語化: 見出し語に統一する: WordNetLemmatizer()

3.7 テキストのトークン化のための正規表現

  1. re.split
  2. 表3-4: 正規表現のシンボル: 例\b \d \D \s \S \w \W \n \t
  3. 正規表現トークナイザ: nltk.nltk.regexp_tokenize

3.8 セグメンテーション

  1. Punktの文分割機能: sent_tokenizer.tokenize(text)
  2. 単語分割

データの整形:リストから文字列へ


3.12 演習問題