Yahooのapiを利用し、入力した文字列に対して形態素解析した結果を出力するwebアプリのプロジェクトです。
Web開発の練習、APIを利用した開発の経験を目的に作成しました。
- 文字列を形態素解析し、その結果を表示する機能
- 文字列を形態素解析し、集計して頻度を表示する機能
- 文字列の係り受け解析をAPIで実行し、修飾・被修飾の情報を表示する機能
- 文字列の係り受け解析をAPIで実行し、評価と評価対象を抽出する機能
- 仮想環境(pipenv)
- Webフレームワーク(Responder:Pythonライブラリ)
- WebAPI(Yahooのテキスト解析API)
- 非同期通信(Ajax, jQuery:JavaScriptライブラリ)
開発には仮想環境であるpipenvを使用しています。pipenv install
を実行することでPipfileから開発時の環境を再現できます。
$ pip install pipenv
$ pipenv install
WebAPIを利用するために、YahooのアプリケーションIDが必要になります。お持ちでない方は、Yahoo公式ご利用ガイドを参考に作成してください。
アプリを動かすために、環境変数にアプリケーションIDを設定する必要があります。プロジェクトのルートディレクトリに.env
ファイルを作成し、以下のようにアプリケーションIDを記述してください。
# .env ファイル
APPID = <自分のアプリケーションID>
環境が整えられたら、app.pyを実行してサーバを起動できます。
$ pipenv run python app.py
Loading .env environment variables…
INFO: Started server process [18730]
INFO: Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
INFO: Waiting for application startup.
INFO: Application startup complete.
コマンドに表示されたリンク(http://127.0.0.1:8080) に移動するとindexページが表示されます。
indexページには、それぞれの機能が実装されたサイトのリンクを張っています。
- 形態素解析の結果を表示する
segmenter.html
- 形態素解析の結果から類似度計算を行う
similarity_calculator.html
(現在実装途中) - 係り受け解析の結果から修飾元・修飾先の情報を表示する
parser.html
- 係り受け解析の結果から評価表現を抽出し表示する
extract_evaluation.html
segmenter.htmlでは、テキスト欄に文字列を入力し、[解析]ボタンを押すことで、テキストが形態素解析された結果が画面に表示されます。オプションで[原形]などのチェックボックスを設定すると、設定した品詞のみ表示されます。
Ajax通信を行なっているのでページ遷移をせず結果が表示されます。
[集計]ボタンを押すと、各単語の集計数が表示されます。 Ajax通信を行なっているのでページ遷移をせず結果が表示されます。
parser.htmlでは、テキスト欄に文字列を入力し、[解析]ボタンを押すことで、テキストが係り受け解析され、修飾元と修飾先が画面に表示されます。
こちらもAjax通信を行なっているのでページ遷移をせず結果が表示されます。
extract_evaluation.htmlでは、テキスト欄に文字列を入力し、[解析]ボタンを押すことで、テキストが係り受け解析され、その結果により評価と評価対象を抽出して画面に表示されます。
評価である感情や意見は、形容詞と形容動詞として判定しています。評価の対象は、修飾先を評価とする文節の名詞を対象としています。
グラフの描画には、javascriptライブラリのd3.jsを利用しています。
- 形態素解析結果から類似度計算を行い、入力文字列間の関係性を数値化する機能の実装
- 形態素解析結果から共起行列を作成する機能の実装
- 係り受け解析結果から関係を抽出する機能の実装