質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

646閲覧

python flaskにてjanome.tokenizerを呼び出す際にエラーが出る

kiol315sendai

総合スコア0

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/15 02:14

編集2021/05/18 04:03

前提・実現したいこと

web上で入力したものをjanomeを使って形態素分析したい。

xserverにてpythonの環境及びweb上で実行出来るよう.htaccesとcgiファイルの設定を行いました。
その他ファイル

発生している問題・エラーメッセージ

コマンドライン上で実行した場合にはエラーが発生せず、web上で実行した場合にのみサーバーエラーが発生してしまいます。

Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

python

1 2### 該当のソースコード 3from flask import Flask, request 4from janome.tokenizer import Tokenizer 5import pickle 6import re 7 8app = Flask(__name__) 9 10@app.route('/') 11def index(): 12 13 sent = "文章" 14 seperator = "。" 15 mixi_diary_origin = "" 16 17 data = re.sub("[|  「」\n]", "", sent) 18 mixi_diary_origin += data 19 20 mixi_diary_list = mixi_diary_origin.split(seperator) 21 mixi_diary_list = [x+seperator for x in mixi_diary_list] 22 t = Tokenizer() 23 24 mixi_diary_words = [] 25 for sentence in mixi_diary_list: 26 27 tokens = t.tokenize(sentence) 28 words = [] 29 for token in tokens: 30 31 partOfSpeech = token.part_of_speech.split(',')[0] 32 33 if partOfSpeech == u'名詞' or partOfSpeech == u'形容詞' : 34 words.append(token.surface) 35 36 if len(words) > 0: 37 mixi_diary_words.extend(words) 38 39### 動作確認用のretun文 40 return """ 41 <h1>hello</h1> 42 """ 43

試したこと

index関数の内容をそのまま別の.pyに記述し、コマンドラインで実行した際にはエラーは発生しませんでした。
エラーの個所を確認するために各所にreturn文を挿入した結果、
t = Tokenizer()
の直後に入れたところでサーバーエラーが発生したため、ここがエラーの原因であると判断しました。

5/15:21:00追記
クラスの呼び出しが出来ていないかと思い、自身で作成したクラスファイルを用意し、同じように呼び出してみるとこちらは問題なく動作しました。
また、別の形態素分析モジュールならいけるのではと思い、MeCabをインストールして同じように記述したところ、同じくクラスの呼び出しでサーバーエラーが発生しました。
コマンドラインでの実行も試しましたが、同じくエラーが発生せずに問題なく形態素分析が出来ました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2021/05/15 04:53

エラーが書かれていません。 コードは読めるようにコードブロックにしてください。 質問は後からでも編集できます。
kiol315sendai

2021/05/15 05:21

ご指摘いただきありがとうございます。 こちら修正させていただきました。
FiroProchainezo

2021/05/17 00:44

XSERVERは最初の状態ではpipが使えませんが、janomeはどうやってインストールしましたか? ローカルでは対象コードは動作するのでしょうか? 一応確認ですが、flaskの@app.route()に定義した関数はreturnで正しいデータを返さないとエラー(Internal Server Error)になりますが、返していますか?
kiol315sendai

2021/05/17 06:13

pipをインストールするためにanacondaをまずインストールしました。こちらはffftpを使用し、インストーラをサーバ内に用意してからSSH接続し、インストーラを実行しました。 その後、condaコマンドを使用してpipをインストールしました。 ローカルでの動作はすいません、まだ試していません。明日ローカルでためしてみようと思います。 ただ、一応SSHコマンドラインで関数内の処理を実行したところ、問題なく形態素分析が出来ていました。 returnで返しているデータは画面にHelloWorldを表示させるものでして、こちら別のプログラムでは問題なく動作していることを確認しております。 上記のそれぞれのソースについて、明日追記したいと思います。
guest

回答1

0

自己解決

こちら自分で試行錯誤した結果、エラーの原因が全く別の所にあったため、一旦クローズさせていただきたいと思います。

投稿2021/05/18 09:59

kiol315sendai

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問