TEDの英文を解析してみた -文字処理編-
前回の続きです。
3. 取得したスクリプトを単語毎に分解し、出てくる回数をカウント
この時点で取得したデータは書き起こし英文そのままのため、単語毎に分解する必要があります。
こういった言語処理を扱うライブラリとしてnltkがあるため、こちらを利用します。
gistf84a859034b0bd84c576c7be4ca8a4bd
こちらの実行時間は2時間でした。
アルゴリズムを上手く考えれば(マージソートっぽくやるとか)もっと早く完了できると思いますが、そうすると書いてる時間の方が長くなって飽きてしまいそうなので諦めました。
参照 :
ここで出来上がった一覧を見てみると、以下のことに気づきました。
- 同じ単語にも関わらずドットが混じり違う単語としてカウントしている
- 人の名前、数字、記号などを含んでいる
- 現在形と複数形を違う単語としてカウントしている
時間をかけて真面目にやってると飽きてしまいそうなので、Cは諦めてA,Bだけ解決することにしました。
同じ単語にドットなどが混じり関わらず違うものとしてカウントしている
カウントを足し合わせ、ドットが入った方を取り除くことにしました。
gist04287b179b8a662be11d6be7e109b3e2
人の名前、数字、記号などを含んでいる
どんな方法が良いか色々調べた結果、macには辞書apiがは入っておりpythonからアクセスできることが分かりました。こちらのapiに単語を投げ、結果が帰ってこない(=辞書に存在しない)単語は取り除くことにしました。
gist8614389d32db56d7ee97102b6317ad28
問題なのが、辞書apiにアクセスするためにmacにプリインストールされているpython(≠pyenvやhomebrewで入れたpython)を利用する必要があることです。pandasなどのライブラリがsudo pip installで入れようとしても入らなく、結局元々存在するcsvライブラリでなんとかすることにしました。
現在形と複数形を違う単語としてカウントしている
前のコードで単語の定義もcsvに書き込みました。現在形でも複数形でも辞書から帰ってくる定義は同じなので、定義を比較し同じ場合はカウントを足し合わせていきます。
giste597f9de1578e258a64bd5f8aff13620
これで文字処理まで完了し、出現単語ランキングが完成しました。
次回、中身を見ていきます。