本ページは、アフィリエイト広告が含まれています。

テクノロジー

入門自然言語処理(オライリー)の演習問題 解答Part3 [第1章21〜29]

2013年8月13日

入門 自然言語処理

入門自然言語処理の演習問題を解くシリーズの最後です。Part1Part2はこちらです。

第21問

print text2[-2:]

第22問

print FreqDist([w for w in set(text4) if len(w) == 4]).keys()

第23問

    for w in set(text6):
        if w.isupper():
            print w

第24問

以下の条件に合うすべての単語を探し出す式を書く。

  • a.「ize」で終わる
  • b.「z」で終わる
  • c.「pt」という文字を含む
  • d.先頭が大文字で後が全て小文字(つまりタイトルケース)

【a】

print [w for w in set(text6) if w.endswith('ize')]

【b】

print [w for w in set(text6) if 'z' in w]

【c】

print [w for w in set(text6) if 'pt' in w]

【d】

print [w for w in set(text6) if len(w) > 1 and w.istitle()]

第25問

似たような事を何度もしているのでパス。

第26問

sum([len(w) for w in text1])このPythonコードは何を意味するか?

text1に含まれている全単語の文字数の和を意味する。

これを使ってテキスト中の単語帳の平均を求められるか?

例えば、以下のようにすると単語の平均文字数を求める事ができる。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from __future__ import division
from nltk.book import *

def main():
    print sum([len(w) for w in text1]) / len(text1)

if __name__ == '__main__':
    main()

ちなみに結果は「3.83041112802」でした。よく使われる英語の単語って以外と文字数少ないんですね。

第27問

語彙サイズという言葉の意味が分からないので、とりあえず単語の数っていう意味として考える。

def vocab_size(text):
    text = text.split()
    return len(text)

第28問

textをsplitしないと単語の数ではなく文字数になってしまうので注意。

def percent(word, text):
    return 100 * text.count(word) / len(text.split())

第29問

set(sent3) < set(text1)を実行。また他のテキストでも実験せよ。この処理の実用的な応用には何があるか?

語彙数の多さを比較していることになるから、あるデータの中から語彙数の多いものや少ないものを抽出できる。

【入門自然言語処理解答(第1章)】

-テクノロジー
-,

Copyright© シグマデザイン社長のブログ , 2024 All Rights Reserved.