kazumarrのブログ

元コックで、現SEで、3人娘パパが、料理や、仕事や、育児について書いてます。

Pythonで日時表現正規化のAPIを作りたい(環境構築編1)

APIを作ろうと思った経緯

2017年3月に、LINE BOT AWARDSに、秘書Botというスケジュール共有機能を提供するBotを作って、応募しましたが、見事に撃沈しました。笑

機能の概要としては、Botを含むグループトークで、スケジュール調整をした結果、最終的に、開始日時と終了日時、予定の名称を含む、発言をすると、Botが拾って、スケジュール登録をするか否かのお伺いを立ててきて、グループメンバの誰かが、OKボタンを押下すると、グループメンバ全員のグーグルカレンダに登録されるというものでした。

もともと、この機能で応募しようと思ったきっかけは、夫婦間でLINEを通じて約束した予定を、私が忘れてしまいがちで、よく迷惑を掛けていたので、それを解消するために作りました。ちょうど、仕事で、go言語を使っていた時期だったので、go言語で組んで、日時表現や予定の抽出のために、フリーのAPIを使っていましたが、日時表現については、なかなか自分の思い通りの結果を返してくれるAPIがなく、不満を持っていました。

そこで今回、日時表現正規化のイケてるAPIを自作して、秘書Botを賢くしたいと思いたちました。自然言語処理といえば、Pythonがよく使われてる様子なので、まずは、Pythonmecabを入れて、いろいろ試して、作っていきたいと思います

Python3のインストール

まずは、Python3をインストール。osはmacで、homebrewが入ってる前提ですが、コマンド一発で終わります。

brew install python3

Pycharm(IDE)のインストール

PythonIDEもいろいろあるようですが、go言語の時に使ってた、Goglandが結構気に入ってたので、IntelliJのPycharmにすることにしました。

www.jetbrains.com

Pycharmの日本語化

やっぱり日本語化されてた方が使いやすいので、日本語化しました。以下に詳しく手順が載っているので、そのまま実施。

qiita.com

mecabのインストール

これもコマンド一発。

brew install mecab-ipadic
||< 

インストール後は、ターミナルでmecabと打つと、mecabを使えるようになる。
>|sh|
$ mecab
これはテストです。
これ	名詞,代名詞,一般,*,*,*,これ,コレ,コレ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
テスト	名詞,サ変接続,*,*,*,*,テスト,テスト,テスト
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。	記号,句点,*,*,*,*,。,。,。
EOS

こんなかんじ。

Pythonmecabを使えるようにする。

Pythonmecabを使えるようにするには、natto-pyって奴をインストールする必要があるようです。Python3をインストールした段階で、python用のパッケージインストールのためのコマンド(pip3)が使えるようになってるはずなので、これもコマンド一発でいける。

pip3 install natto-py

Pythonmecabを使ってみる。

最後に、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 で完了しました

これで、pythonmecabが使えるようになりました。
思ったより、すんなり環境構築が出来ました。本当最近は、何でもコマンド一発でできて便利です。
この環境でいろいろいじってみて、APIアルゴリズムが見えてきたら、続きを書いてみようと思います。