Dockerでテキストマイニング用にMecab+Cabocha+Flaskの環境用DockerFileを作った
AdventCalendar以降まともに書いてなかったので生存報告も兼ねて書きます。
最近インターン先でDockerやったりとかPythonやったりなどしてますが、その中で日本語のテキストマイニングをおこなってました。その際テキストマイニングと簡易APIを用いれるDockerコンテナとしてタイトル通りのイメージを作成したので忘備録がてらにここに書いておきます。
ソースコード
今回使用したもの
ベース
- 3.5.2-alpine
非常に軽いLinuxディストリビューションで有名なAlpainこれで作れば軽くなるって信じてるときも有りました…
日本語形態素解析周り
- Mecab
言わずと知れた形態素解析のMecab日本語を単語区切りに区切ってそれを名詞、動詞などや何変形なんかも教えてくれるすごいやつです。 - Cabocha
係り受け解析、自分も初めて使いましたがなかなか優秀な子です。
Python周り
- mecab-python3
- beautifulsoup4
- urllib3
- pandas
実際のファイル
pythonのサンプルコード
とりあえずCabochaを使って単語の出現数をカウントするプログラムをFlaskに乗せてみました。
簡単なAPIチックにブラウザで動作を確認できます。
実行結果
わかりやすく人間失格の頭を投げてみます。
http://localhost.com/total_frequent_count/?word= 私は、その男の写真を三葉、見たことがある。 一葉は、その男の、幼年時代、とでも言うべきであろうか、十歳前後かと推定される頃の写真であって、その子供が大勢の女のひとに取りかこまれ、(それは、その子供の姉たち、妹たち、それから、従姉妹いとこたちかと想像される)庭園の池のほとりに、荒い縞の袴はかまをはいて立ち、首を三十度ほど左に傾け、醜く笑っている写真である。醜く? けれども、鈍い人たち(つまり、美醜などに関心を持たぬ人たち)は、面白くも何とも無いような顔をして、 「可愛い坊ちゃんですね」 といい加減なお世辞を言っても、まんざら空からお世辞に聞えないくらいの、謂いわば通俗の「可愛らしさ」みたいな影もその子供の笑顔に無いわけではないのだが、しかし、いささかでも、美醜に就いての訓練を経て来たひとなら、ひとめ見てすぐ、 「なんて、いやな子供だ」 と頗すこぶる不快そうに呟つぶやき、毛虫でも払いのける時のような手つきで、その写真をほうり投げるかも知れない。
結果
{ "main": { "その": 6, "子供": 4, "写真": 4, "よう": 2, "男": 2, "美醜": 2, "世辞": 2, "ひと": 2, "人たち": 2, "醜い": 2, "無い": 2, "顔": 1, "姉たち": 1, "呟": 1, "庭園": 1, "左": 1, "頗": 1, "大勢": 1, "それ": 1, "笑顔": 1, "坊ちゃん": 1, "空": 1, "想像": 1, "池": 1, "けれども": 1, "の": 1, "荒い": 1, "しかし": 1, "三葉": 1, "時": 1, "ひとめ": 1, "従姉妹いとこたち": 1, "袴はかま": 1, "頃": 1, "わけ": 1, "関心": 1, "一葉": 1, "手つき": 1, "妹たち": 1, "幼年時代": 1, "いや": 1, "私": 1, "みたい": 1, "毛虫": 1, "こと": 1, "謂": 1, "推定": 1, "三十度": 1, "つまり": 1, "可愛い": 1, "それから": 1, "通俗": 1, "さ": 1, "影": 1, "首": 1, "女": 1, "十歳前後": 1, "鈍い": 1, "訓練": 1, "ほとり": 1, "面白い": 1, "ない": 1, "なお": 1, "可愛らしい": 1, "縞": 1, "不快そう": 1 } }
今回はURLにパラメタをつけましたがちゃんとやるのであればPOSTとかにしてあげたほうが良さそうですね…
ただしっかりと形態素解析は来ましたのでこれを元に色々なことができそうです。
何科の参考になれば幸いです。