XREA で Python・MeCab を触ってみる・ついでに Python CGI で動かしてみる
s15 サーバの頃からお世話になり続けている XREA。Perl・PHP・Ruby・Python などの言語で実装した CGI の他、MySQL・PostgreSQL が使える。さらに、ひっそりと形態素解析ツールの MeCab までプリインストールされている。
コレは使うっきゃない、ということで確かめてみた。
目次
- MeCab を試してみる
- Python から MeCab を触ってみる
.htaccess
を編集して Python CGI を有効にする- MeCab を使用する Python CGI を書いてみる
- 今回はココまで
MeCab を試してみる
まずは XREA サーバに SSH 接続して、MeCab を試してみる。XREA サーバに SSH 接続する方法は以下の記事で紹介したとおり。
# LANG 環境変数は以下のとおりであること・設定されていなければ設定しておく
$ echo $LANG
ja_JP.UTF-8
# MeCab が入っていることを確認する
$ mecab --version
mecab of 0.996
# UTF-8 でエンコードされた辞書ファイルを参照してコマンドラインで動かしてみる
$ mecab -d /usr/lib64/mecab/dic/ipadic/
# Ctrl + D で抜ける
こんな感じ。
Python から MeCab を触ってみる
続いて、XREA にプリインストールされている Python の環境を確認する。
$ type python
python は /usr/local/bin/python です
$ python --version
Python 2.7.5
$ type python3
python3 は /usr/local/bin/python3 です
$ python3 --version
Python 3.6.8
このように、Python2 系と Python3 系が導入されている。
Python3 で MeCab を使うため、次のように mecab-python3
をインストールする。
$ python3 -m pip install mecab-python3 --user
この時点で、python3
コマンドで対話式プロンプトを立ち上げると、import mecab
と出来るようになっている。
今回はもう少し進んで、Python CGI として実行してみる。
.htaccess
を編集して Python CGI を有効にする
.htaccess
ファイルを作り、.py
形式のファイルを CGI として処理するようにしておく。コレを書かないと、.py
ファイルにアクセスしてもその内容がテキストファイルのようにそのままレスポンスされて終わってしまう。
# `public_html/` 直下に配置する
$ touch .htaccess
public_html/.htaccess
# 以下を記す
AddHandler cgi-script .py
MeCab を使用する Python CGI を書いてみる
次のように Python CGI を書いてみよう。
public_html/example-mecab.py
#!/usr/local/bin/python3
# 日本語文字を表示するための設定
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding = 'utf-8')
import cgi
import MeCab
mecab = MeCab.Tagger('-d /usr/lib64/mecab/dic/ipadic/')
print('Content-type: text/html; charset=UTF-8\n')
print(mecab.parse('MeCab を使った形態素解析のテストです'))
固定文言を mecab.parse()
し、その結果を出力しているだけ。
$ chmod 755 example-mecab.py
と実行権限を付与したら、ブラウザでアクセスして動作確認してみよう。
もしも上手く動作していない場合は、import cgi
の次の行あたりに以下を追加し、スタックトレースを表示できるようにして詳細を確認してみると良いだろう。構文エラーなどは検知できないが、実行時エラーは確認できる。
# CGI エラー時にデバッグ情報を表示する
import cgitb
cgitb.enable()
ココまでの内容で参考にした文献は以下のとおり。特に「日本語文字を表示するための設定」というのがないと、日本語文字列を print
した瞬間に以降の行が動かなくなってしまって困っていた。
- 参考 : PythonのCGIで日本語が文字化けしたときの対処法 - Qiita … 日本語文字を表示するための設定
- 参考 : PythonでCGIスクリプトを書く方法【初心者向け】 | TechAcademyマガジン … CGI エラー時にデバッグ情報を表示する
- 参考 : https://qiita.com/sirogane/items/d095d0f59c3ac498442aa … Python MeCab を使用する
- 参考 : pythonファイルをCGIとしてレンタルサーバー上でphp経由でCorn実行することで「500 Internal Server Error」を回避する方法 - なろう分析記録 … Content-Type 指定
今回はココまで
というワケで、XREA にプリインストールされている MeCab を使ってみた。ついでに XREA 上で Python を CGI として実行できることまで確認した。
スクリプトを調整していけば、リクエストパラメータを mecab-python3
経由でパースさせることもできるので、様々な使い道が考えられそうだ。