🦒 『入門 自然言語処理』メモ (2)
作成日: 2021/11/10
0

note で書いた記事(『入門 自然言語処理』入門)の続きを書くためのメモです。
同書 p.53 の表2-3には NLTKで定義されている基本的なコーパス処理機能がまとめてあります。それらを自作のエスペラント語コーパスで実行確認していきます。

>>> # コーパスのファイル一覧
>>> tekstaro.fileids()
['LaFeino.txt', 'fundamenta-ekzercoj.txt', 'fundamenta_antauparolo.txt', 'udhr_eo.txt']

tekstaro が自作コーパスの名称。現在のファイルは4個だけですが、実用時にはもっと増やす予定です。

>>> # コーパスの生コンテンツ
>>> feino_raw = tekstaro.raw('LaFeino.txt')
>>> feino_raw
'La feino.\r\n\r\n    Unu vidvino havis du filinojn. ...(中略)... baldaŭ mortis en angulo de arbaro.\r\n'
>>> type(feino_raw)
<class 'str'>
>>> len(feino_raw)
4659
>>> # 文字・記号の頻度分布を求める
>>> fdist_r = nltk.FreqDist(feino_raw)                       
>>> fdist_r
FreqDist({' ': 876, 'i': 507, 'a': 412, 'n': 292, 'o': 281, 'e': 273, 'l': 228, 'r': 203, 's': 193, 't': 172, ...})
>>> type(fdist_r)
<class 'nltk.probability.FreqDist'>
>>> len(fdist_r)
60

'LaFeino.txt' は1000語ほどの童話です。テキストは Wikisource のここにあります。
raw ファイルはそれ全体が1つの str 扱いになっています。改行記号や空白文字も含みます。頻度分布を求める関数 FreqDist を適用すると文字・記号ごとの頻度が得られます。
len(fdist_r) はこのファイルに文字・記号が何種類(ここでは60種類)使われているかを示します。


pythonで自然言語処理プログラムが書けるようになりたいと思っています。Ticketnoteで自分の到達度を確認できれば嬉しいです。