Python3でAIを作りたい その0

さて、連続してPythonを書いてきたわけですが、私の目的はRSSもどきを作ることでも、外部APIと通信して喜ぶことではありません(´・ω・`)

 

kenteiblog.hatenablog.com

kenteiblog.hatenablog.com

 

もっと最初のほうでちらっとだけ言ってた気もします。
いずれは人工知能も…(^^)/」とかなんとか。

 

ってなことで作りましょう!! といって簡単に作れないことぐらいは作者も知っています。機械学習やら何やらでググってみると大量の難しい式が出てきます。

1から勉強しなければならないのですが、ベクトルだとか線形だとかは私が一番苦手なものです。あと統計も。←致命的*1

 

ただそういって諦めてても仕方ないので、勉強は並行してやりつつ、とりあえずは当たって砕けましょう。

プログラムで新しい言語学ぶ時も、とりあえず作って失敗してを繰り返して覚えます。それと同じことをするしかないでしょう。

 

ということで、おしゃべりbotの作成を目指したいと考えています。

最初は全くAIとはかけ離れたことをやっていくと思いますが、最後はきっとそれらしいものができる…はずです(´・ω・`)

 

今回は「その0」ということで以上です。

 

2017/11/24 賢帝俊来

 

*1:+_+

Slackを日本語化したら便利だった件

ビジネスチャットサービスのSlackが日本語化対応したとのことで、さっそく試してみました。

itpro.nikkeibp.co.jp

 

以下の手順でSlackを日本語化できます。(もちろんユーザー登録していることは前提)
英語前提で話します。

 

(1)https://<ワークスペースごとに異なるID>.slack.com/account/settings に接続します。

(2)認証が求められるので、ログインします。

(3)Account ページが開くので、Languageのexpandボタンを押します。

(4)言語選択ボックスが表示されるので、日本語を選択します。

(5)Save Localeボタンを押します。

 

上記で画面が日本語になります。デスクトップアプリも開くと「Switching to 日本語」と出るので、OKボタンを押すと日本語になります。

 

一応、インターフェース全般は日本語になっているようです。
また、少しおもしろいなと思ったのが、日本語だとエンターで改行してもメッセージが飛ばないことですね。

 

いつもだとAlt押しながらエンターなどと面倒なことをやっていたのですが、普通に改行できる。送るときは送信ボタンを押すか、ctrlキー押しながらエンターで送れます。
Twitterと同じですね。

 

より便利になっていくSlack。目が離せません。

 

以上です。

2017/11/23 賢帝俊来

2017/11/20 SONY関連 JVN#08517069 Media Go および Music Center for PC のインストーラにおける DLL 読み込みに関する脆弱性

主題の通りなので、Sony製のウォークマンを利用している方は、Music Center for PCのアップデートをしましょう。

 

JVN#08517069: Media Go および Music Center for PC のインストーラにおける DLL 読み込みに関する脆弱性

 

なおMedia Goについては開発が終了しており、対応がなされないので、利用中の方はMusic Center for PCに変更することを推奨します。

 

Music Center for PCのアップデート方法は以下のとおりです。

(1)Music Center for PCを起動する

(2)「ツール(T)」→「ソフトウェアのアップデート(U)…」を押す。

(3)アップデートを実施する。

 

以上です。

2017/11/23 賢帝俊来

Python3とFlaskで簡易RSSリーダーを作る

今回はPython3とFlaskで簡易RSSリーダーを作ります。

 

Python3 + Flaskで簡易RSSリーダー

 

今回追加しているライブラリは「feedparser」です。

 

簡単に動作を説明すると、

(1)画面の入力欄にURLを入力して送信ボタンを押します。

(2)サーバー側は(1)で入力したURLを受け取り、feedparser.parseを利用してRSSを取得します。

(3)取得した結果をクライアント側に返します。

(4)レスポンスを受けたクライアント側は取得した情報を画面に表示します。

 

例えば、(1)でIPAの「重要なセキュリティ情報」のRSSURLを入力すると、以下のように表示されます。(2017/11/21現在)

 

f:id:kentei0715:20171121235307p:plain

以上です。本当に簡単に作れる+動かせちゃいますね。

 

2017/11/22 賢帝俊来

MyJVN が提供する API を呼び出す(Python3編)

ということで、1週間ぐらいまえにやったPHPでのAPI呼び出しを、Python3に置き換えてみます。

kenteiblog.hatenablog.com

 

ソースは以下の通りです。

API を呼び出し(Python3 Ver)

 

基本的な部分は変わりません。

唯一異なるのはJSONへの変換方法ですかね。

 

responseの内容を取得し、xmlとして読み込みます。

そのあと、xmltodictというライブラリを用いて、辞書への変換を実施します。

その辞書をjsonでdumpさせて、クライアント側に返します。

 

変換方法が変わっているので、受け取ったクライアント側でも変数が少々変更されています。(data["VULDEF-Document"]とか、data["rdf:RDF"].item とか。)

 

Eclipseで実行ボタンを押せば、すぐにサーバーがあがるので、PHPより気軽に動かせますね。開発は楽楽です(^^)/

 

以上です。

 

2017/11/21 賢帝俊来

Python3 + FlaskでPOST通信する

前回はPython3 + Flask環境で、テンプレートエンジンJinja2を利用してみました。

 

kenteiblog.hatenablog.com

 

今回は、POST通信をしてみようと思います。

ソースは以下の通り。

 

Hello World API Python Request

 

前回の記事からの変更点は以下のとおりです。

・hello.pyの1行目:importに「request」を追加。

・hello.pyの8行目:methodでGET,POSTを指定。

・hello.pyの10行目~14行目:処理追加

・index.htmlの5行目:jQuery追加

・index.htmlの9行目~24行目:script追加

・index.htmlの26行目:Hello Buttonを追加

 

色々と改造しましたが、要は/helloでできる操作を増やしたというのが結論です。

 

画面に表示されたHello Buttonをクリックすると、アラートで「Kentei Hello world!」と表示されます。ここで表示されている「Kentei」という部分がPOSTで送っているデータになります。

また、ブラウザのURL入力で/helloを指定すると、「no name. Hello world!」と表示されます。POST以外の通信なのでpython側の処理でelse側に入っています。

 

ここまでできると、何日か前にやった「PHPで外部APIを呼び出す」もできそうですね。

置き換えてみましょうか。

 

以上です。

2017/11/20 賢帝俊来

Python3 + FlaskでテンプレートエンジンJinja2を利用する

前回はPython3とFlaskを利用して、サーバーを立ち上げました。

kenteiblog.hatenablog.com

 

 

今回はhtmlで画面に表示するテンプレートを作成し、ルートURLに接続したらhtmlが表示されるようにしてみます。

 

FlaskにはJinja2というテンプレートエンジンがあるのでそちらを利用します。

 

Hello World API Python(render template)

 

前回記事から変更されている箇所は、以下の2箇所です。

・hello.pyの1行目…importに「render_template」を追加。

・hello.pyの6行目…ルートURLにアクセスするとindex.htmlが描画する処理を追加。

 

さらにindex.htmlが追加されています。(かなりの手抜きですが。。)

 

上記を動かせば、以下のように動作します。

 

  • ルートURLにアクセスするとindex.htmlの内容が表示されます。その際、置き換え文字になった{{title}}や{{userName}}については、render_templateをreturnする際に指定した「test」,「kentei」に置き換えられます。
  • /helloに接続したときの動作は前回と変わらず、Hello worldが表示されます。 

 

ここで少しトラブったのは、index.htmlの置き場所です。hello.pyと同階層においても動かず、接続しようとすると、以下のエラーが表示されます。

jinja2.exceptions.TemplateNotFound: index.html

 

理由は置き場所が決まっているからです。「templates」フォルダを作成し、その下にindex.htmlを置かなければなりません。

フレームワークのルールなので合わせましょう。

 

templateではなく、templatesなので注意です(複数形です)。私はここを間違っていて一人唸っていました。。

 

以上です。

 

2017/11/19 賢帝俊来