LoginSignup
0
0

More than 3 years have passed since last update.

自然言語処理入門の本を読んでみた

Last updated at Posted at 2020-08-09

初めに

機会学習・深層学習による自然言語処理入門 著 中山光樹
を読んだ感想を書いてみる
pythonになれるためサンプルコードは自前でカスタマイズしてみた

第一章、第二章

機械学習とは何かという話と、pythonの実行環境についての話
本著ではpythonの実行環境をMinicondaを使って作っているみたいだが、conda系の開発環境はトラウマしかないため、dockerでpython開発環境用のcontainerを作ったよ
次いでにviでpythonのコードが補完されるモジュールも導入したよ
viのコピペ、pythonでのマルチバイト文字列を扱えるようにするために苦労したことは秘密だ

第三章

コーパスとは何ぞやを説明している
ぐるなびAPIから機械学習用のデータを取得するコードがあったので、自分なりにカスタマイズした。というか、カスタマイズしないと動かない
もともとのコードは検索キーにジャンルを指定していたけど、サンプルコードの通りに実行するとAPIの仕様が中間一致から完全一致に変わったのか、「検索結果が見つからない」という結果が返ってくる
(ぐるなびAPIいけてなさすぎる)
仕方がないので、経度をしていて検索結果を取得してみた

sample.py
import requests
url ='https://api.gnavi.co.jp/PhotoSearchAPI/v3/'
params = {'keyid': 'YourAPI','latitude': 35.5367971,'longitude':139.634745}
response = requests.get(url,params=params).json()
lists = list( 
          map(
              lambda x:{'comment':response['response'][x]['``photo']['comment'],'socre':response['response'][x]['photo']['total_score']} ,
              list(
                  filter(lambda x1:response['response'][x1]['photo']['comment'] and response['response'][x1]['photo']['total_score']
                  ,list( filter(lambda x2:x2.isdigit(),response['response'].keys()) )  ) 
               ) )
)
print(lists)

コーディングをした雑感

箇条書きに書いてみる

ぐるなびAPIの戻り値のデータ構造が嫌がらせに近いくらい終わっている。なんで制御コード的な情報と個々の検索結果が同じ第二階層にあるんだよ?おかげでインデックスが数字かどうか判定する、無駄なロジックが入ってしまうではないか

関数型言語的な処理はJavaの

   list.stream()   
   .filter()    
   .filter()    
   .map()    
   .collect()   

みたいにかけないのかのぉ
mapとかfilterを使うたびにlist()関数を使うのは冗長なんですが
たかだか、これだけのプログラムのために別関数にfor-yieldを使うのも面倒くさいし
これは私がpythonに慣れてないだけで別のpython的なやり方があるんだろうなと思いますが

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0