Pythonで日時表現正規化のAPIを作りたい(環境構築編1)
APIを作ろうと思った経緯
2017年3月に、LINE BOT AWARDSに、秘書Botというスケジュール共有機能を提供するBotを作って、応募しましたが、見事に撃沈しました。笑
機能の概要としては、Botを含むグループトークで、スケジュール調整をした結果、最終的に、開始日時と終了日時、予定の名称を含む、発言をすると、Botが拾って、スケジュール登録をするか否かのお伺いを立ててきて、グループメンバの誰かが、OKボタンを押下すると、グループメンバ全員のグーグルカレンダに登録されるというものでした。
もともと、この機能で応募しようと思ったきっかけは、夫婦間でLINEを通じて約束した予定を、私が忘れてしまいがちで、よく迷惑を掛けていたので、それを解消するために作りました。ちょうど、仕事で、go言語を使っていた時期だったので、go言語で組んで、日時表現や予定の抽出のために、フリーのAPIを使っていましたが、日時表現については、なかなか自分の思い通りの結果を返してくれるAPIがなく、不満を持っていました。
そこで今回、日時表現正規化のイケてるAPIを自作して、秘書Botを賢くしたいと思いたちました。自然言語処理といえば、Pythonがよく使われてる様子なので、まずは、Pythonとmecabを入れて、いろいろ試して、作っていきたいと思います
Pycharm(IDE)のインストール
PythonのIDEもいろいろあるようですが、go言語の時に使ってた、Goglandが結構気に入ってたので、IntelliJのPycharmにすることにしました。
mecabのインストール
これもコマンド一発。
brew install mecab-ipadic ||< インストール後は、ターミナルでmecabと打つと、mecabを使えるようになる。 >|sh| $ mecab これはテストです。 これ 名詞,代名詞,一般,*,*,*,これ,コレ,コレ は 助詞,係助詞,*,*,*,*,は,ハ,ワ テスト 名詞,サ変接続,*,*,*,*,テスト,テスト,テスト です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS
こんなかんじ。
Pythonでmecabを使えるようにする。
Pythonでmecabを使えるようにするには、natto-pyって奴をインストールする必要があるようです。Python3をインストールした段階で、python用のパッケージインストールのためのコマンド(pip3)が使えるようになってるはずなので、これもコマンド一発でいける。
pip3 install natto-py
Pythonでmecabを使ってみる。
最後に、Pycharm上で、以下のコードを書いて、ctrl+Rで実行してみます。
# coding: utf-8 from natto import MeCab mecab = MeCab() text = "今週、金曜日" print(mecab.parse(text))
結果は以下のとおり。
/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/hoge/PycharmProjects/practice/practice1.py 今週 名詞,副詞可能,*,*,*,*,今週,コンシュウ,コンシュー 、 記号,読点,*,*,*,*,、,、,、 金曜日 名詞,副詞可能,*,*,*,*,金曜日,キンヨウビ,キンヨービ EOS プロセスは終了コード 0 で完了しました
これで、pythonでmecabが使えるようになりました。
思ったより、すんなり環境構築が出来ました。本当最近は、何でもコマンド一発でできて便利です。
この環境でいろいろいじってみて、APIのアルゴリズムが見えてきたら、続きを書いてみようと思います。