Radonで始めるコードリファクタリング 【ランクAよりもPython力をつけろ】編
スマートPythonプログラミング、引き続き読んでます。
読み進めていると、Radonという循環的複雑度を調査するパッケージが紹介されていたので、今回はそれを用いてsandmark/unmoのdictionary.py
のリファクタリングに挑戦します。
先に言っておきますが、結果は失敗です。今の私の力ではリファクタリングできなかったという事実がわかったことが何よりの成果です。それに伴って課題が見つかったので、個人的には有意義な時間でした。
続きを読むPython初心者が中級者になるためのスタートダッシュ 【ググるのは時間の無駄】編
皆さん今日もググってますか? 私のようにRubyから転向したPython初心者にとっては、Googleは神のようなサービスです。「Rubyではこう書けたけど、Pythonではどう書けばいいの?」という質問に、Google先生は(基本的には)誠実に応えてくれます。
しかし、この学習方法には大きな問題があります。RubyのコードをいくらPythonに移植しても、Pythonらしい書き方が身に付くわけではないからです。キーワード引数
、デコレータ
、ジェネレータ
、イテレータ
……似たようなものはRubyにもありますが、決して同じ使い方をするものではないはずなのです。
ひとつひとつ調べていたのでは、いつまで経っても初心者を卒業できません。できたとしても膨大な時間が必要でしょう。あくまでも包括的な説明を読んで、芯からPythonic Wayを身に着けたいのです。
ではどうすればいいのか。簡単です。教科書を使いましょう。ただの教科書ではいけません。Pythonの教科書です。Javaで説明するには一工夫も二工夫も必要なくらいPythonらしい書き方を説明してくれる、Pythonにどっぷり浸かったPythonの教科書です。
スマートPythonプログラミング: Pythonのより良い書き方を学ぶ
- 作者: もみじあめ
- 発売日: 2016/03/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
スマートPythonプログラミング、略してスマパイです。そこらの入門書は読破したけど、「Pythonらしい」という感覚がわからないあなたにお勧め。私はこの本でPythonistaの仲間入りをします。
続きを読むPython初心者に送る「人工知能の作り方」 Part7(終)
前回はマルコフ連鎖で学習・応答するモジュールを作りました。それなりに複雑な処理が含まれていましたが、設計時点で仕様を決めておき、それをコメントを含めたコードにすることで、メンテナンス性を保っています。
今回はmarkov.py
をDictionary
クラスに組み込み、新たにMarkovResponder
を追加します。といっても、学習も応答もmarkov.py
内で完結しているのでほとんど変更を加える必要はありません。
その代わりといっては何ですが、辞書ファイルが存在しなかった場合の例外処理を組み込んでみます。今回のソースコードはこちら
続きを読むPython初心者に送る「人工知能の作り方」 Part6 後編
前回は「マルコフ連鎖とはなんぞや」に始まり、それをプログラムの設計に落とし込むところまで行きました。今回はいよいよ実装に移ります。
Python的には『オブジェクトのコピー』『オブジェクトの永続化』を扱っていきます。今回のソースコードはこちら
続きを読むPython初心者に送る「人工知能の作り方」 Part6 前編
このシリーズも佳境となり、ついにAIが初めての自分の言葉を発しました。人間の赤ちゃんだって親の真似をするのですから、前回は猿真似をする猿から一気に人間の赤ちゃんまで進化したと言えます。
今回はさらに踏み込んで、「ゼロから言葉を作る」という試みをやってみましょう。しかし課題が課題なので、今回は実装方法の説明に留め、次回から本格的にコーディングしていきます。
続きを読むPython初心者に送る「人工知能の作り方」 Part5
前回は形態素解析による学習と、名詞に関連した文章を返すPatternResponder
を追加しました。キーワードで連想的に応答を生成させることで、そこそこ文脈を保った会話が実現した気がします。とはいえ一文をまるごと保存しているため、オウム返しされている感は否めません。
そこで今回は本格的に「文章を生成させる」ことに焦点を当ててみます。ゼロから生成させるのは手がかりがないので、形態素解析を応用してユーザーの発言を分解してテンプレートとして学習し、そこから文章を作り出してみます。今回のソースコードはこちら
続きを読む