2012年5月8日火曜日

入門自然言語処理第1章メモ

Python、NLTKによる言語処理のための個人的tips。NLTKをインストールした上で以下の記事を読んでください。最新のバージョンでのインストールについてはこちらなどが参考になるでしょう。バージョンがあがったため、インストール方法に若干の変更があります。後々のことも考えて、これまでと同じくPyYAML、matplotlib、NumPyなども入れておきましょう(この記事では特にNLTK以外は必要にはなりませんが)。

単語の数え方

from nltk.book import *

# text6はMonty Python(Pythonという言語名の由来になった作品)
print len(text6) # 単語数(スペース区切り)のカウント
print len(set(text6)) # ユニークな単語数をカウント

語彙の多様性の計算、および簡単なメソッド作成

print len(text6)*1.0 / len(set(text6)) # 語彙の豊富さ

# 文章中の単語の多様性のメソッド
# メソッドにすることにより、同じことを繰り返す手間が省ける。というか、
# バグがあったときの修正も楽になるので、繰り返し利用するならメソッドにするべき。

# def メソッド名(引数): で始める。
def lexical_diversity(text):
    return len(text) * 1.0 / len(set(text))

# totalに対するcountの割合
def percentage(count, total):
    return 100.0 * count / total

リストの扱い方

# +はリストの結合
week = ['Mon', 'Tue', 'Wed', 'Thr', 'Fri'] + ['Sat', 'Sun']
print week
print sorted(week) # 内容で昇順にソート

prime = [2, 3, 5, 7]
prime.append(9) # appendは最後尾への結合
print prime # [2, 3, 5, 7, 9]

# 添え字によるアクセス
# 先頭を添え字0とするので3番目のデータにアクセス
print prime[2] # 5
# スライシング
# array[n:m]でarray[n]~array[m-1]を取り出す
print prime[1:3] # [3, 5]
# :の前半の添え字を省略すると、前半は0とみなされる
print prime[:2] # [2, 3]
# :の後半の添え字を省略すると、後半は配列の最後の添え字+1とみなされる
print prime[3:] # [7, 9] 

文字列の扱い方

lang = 'Python'
print lang[:3] # スライシングできる
print lang * 2 # 繰り返し
print 'Hello ' + lang + '!' # +による結合
# 複数行にわたる表記(改行も入る)
number = '''one
two
three'''
print number

リスト内包表記

from nltk.book import *

# text6の各単語をwとして、wの長さが10になるwの集合
word10 = [w for w in text6 if len(w) == 10]
print sorted(word10)[:10] # ソートした結果の先頭10語のみ出力

条件分岐

age = 26
if age < 12: # ageが12未満ならchildと表示
    print "child"
elif age < 20: # 20未満ならyoungと表示
    print "young"
else: # それ以外(この場合20以上になる)ならadultと表示
    print "adult"

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計