さくらインターネットでPython MecabをCGIから使う
POSTED BY
2024-09-29
2024-09-29
Python3.8に形態素解析エンジンMecabモジュールを組み込むの延長だが、さくらインターネットでもソースからコンパイル・インストールを行う必要がある。
pipのインストール
当然ながらレンタルサーバにroot権限はないので、pipおよびソースコンパイル・インストールも自分のホームで行う。python自体はシステム/usr/local/bin/python3.8系が存在するのでそれを使う。
cd wget https://bootstrap.pypa.io/get-pip.py python3 get-pip.py
$HOME/.local/bin/pip
$HOME/.local/lib/python3.8/site-packages
などが出来上がっていることを確認。.local/binにパスを通しておく。
Mecabソースコードのダウンロード・コンパイル・インストール
cd wget https://files.pythonhosted.org/packages/86/e7/bfeba61fb1c5d1ddcd92bc9b9502f99f80bf71a03429a2b31218fc2d4da2/mecab-python-0.996.tar.gz tar xvfzp mecab-python-0.996.tar.gz cd mecab-python-0.996 vi setup.py
setup.pyを以下のように修正する。
# 変更前 def cmd2(str): return string.split (cmd1(str)) # 変更後 def cmd2(str): return cmd1(str).split()
コンパイル・インストール。インストール先をprefixで$HOME/.localにするのが最大のポイント。
python3.8 setup.py build python3.8 setup.py install --prefix=$HOME/.local
$HOME/.local/lib/python3.8/site-packagesにMecab関係のものが入ったことを確認。
Mecab CGIの作成とセットアップ
mecab.pyを以下のようなCGIとして書く。ユーザー入力をMeCabにかけて結果を出力するもの。
Python | mecab.py | GitHub Source |
#!/usr/local/bin/python3 # -*- coding: utf-8 -*- import codecs import cgi import os import sys import io import MeCab sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') def mecab_list(text): tagger = MeCab.Tagger("-Ochasen") tagger.parse('') node = tagger.parseToNode(text) word_class = [] while node: word = node.surface wclass = node.feature.split(',') if wclass[0] != u'BOS/EOS': if wclass[6] == None: word_class.append((word, wclass[0], wclass[1], wclass[2], "")) else: word_class.append( (word, wclass[0], wclass[1], wclass[2], wclass[6])) node = node.next return word_class form = cgi.FieldStorage() mecab_ta = form.getfirst('mecab_ta', '') test = mecab_list(mecab_ta) print("Content-Type: text/html; charset=UTF-8\r\n\r\n", end="") for ttt in test: i = 0 for tt in ttt: if i > 1: print(",", end="") print(tt, end="") if i == 0: print(" [") i += 1 print("]<br>\n", end="")
さくらインターネットに引っ越したときの設定で、.cgiは.phpにリダイレクトするようにしたので.cgiは以後使えない。.pyをCGIプログラムとして実行できるように設定する必要がある。.htaccessに以下のように書く。
AddType application/x-httpd-cgi .py
これを動かせる、完成したサンプルがこちら。
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
MatLab
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
OpenAI/ChatGPT
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
ドラレコ
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!ご連絡は以下アドレスまでお願いします★
【キーワード検索】
【最近の記事】【全部の記事】
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモさくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
HomeBrewでApache2を入れて自動起動つきで動かしPHPモジュールと連携する
macOSに標準付属のApacheを自動起動つきで動かす
HomeBrewでPostgreSQLを入れて自動起動つきで動かす
【人気の記事】【全部の記事】
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法Windows版Google Driveが使用中と言われアンインストールできない場合
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
進研ゼミチャレンジタッチをAndroid端末化する
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
Googleスプレッドシートで図形をコピーして使いまわすには
【Linux】iconv/libiconvをソースコードからインストール
【Apache】サーバーに同時接続可能なクライアント数を調整する
Pythonで処理にかかった時間を計測するには
Windows11のコマンドプロンプトでテキストをコピーする
【カテゴリーリンク】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
MatLab
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
OpenAI/ChatGPT
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
ドラレコ