Spaces:
Build error
Build error
| import os | |
| import sys | |
| import pkg_resources | |
| # 必要なライブラリをインストール | |
| required_packages = ['Flask', 'torch', 'transformers', 'pandas', 'scikit-learn', 'tqdm', 'matplotlib', 'numpy'] | |
| for package in required_packages: | |
| try: | |
| pkg_resources.require(package) | |
| except pkg_resources.DistributionNotFound: | |
| os.system(f'pip install {package}') | |
| from flask import Flask, render_template, request, jsonify | |
| from predictor import load_models, predict_text | |
| import sys | |
| app = Flask(__name__) | |
| # アプリケーション起動時にモデルを読み込み | |
| print("Checking library versions...") | |
| print(f"Python version: {sys.version}") | |
| print(f"PyTorch version: {torch.__version__}") | |
| print("Library check complete.") | |
| # モデルを読み込み | |
| load_models() | |
| def index(): | |
| return render_template('index.html') | |
| def predict(): | |
| input_text = request.form.get('text', '') | |
| print("=== 推測ボタンが押されました ===", flush=True) | |
| print(f"入力されたテキスト: '{input_text}'", flush=True) | |
| print(f"テキストの長さ: {len(input_text)} 文字", flush=True) | |
| print("================================", flush=True) | |
| sys.stdout.flush() # 強制的にフラッシュ | |
| if not input_text.strip(): | |
| print("⚠️ 空のテキストが入力されました", flush=True) | |
| return render_template('index.html', | |
| error="テキストを入力してください。", | |
| input_text=input_text) | |
| try: | |
| # 予測を実行 | |
| result = predict_text(input_text) | |
| print("--- 予測結果 ---") | |
| print(f"入力文: {input_text}") | |
| print("年代の確率:") | |
| for age, percentage in result['age_percentages'].items(): | |
| print(f" {age}: {percentage}%") | |
| print("性別の確率:") | |
| for gender, percentage in result['gender_percentages'].items(): | |
| print(f" {gender}: {percentage}%") | |
| print("-----------------") | |
| return render_template('index.html', | |
| result=result, | |
| input_text=input_text) | |
| except Exception as e: | |
| print(f"予測中にエラーが発生しました: {e}", flush=True) | |
| import traceback | |
| traceback.print_exc() | |
| return render_template('index.html', | |
| error=f"予測中にエラーが発生しました: {str(e)}", | |
| input_text=input_text) | |
| if __name__ == '__main__': | |
| # Hugging Face Spaces用の設定 | |
| port = int(os.environ.get('PORT', 5000)) | |
| debug = os.environ.get('FLASK_ENV') == 'development' | |
| app.run(host='0.0.0.0', port=port, debug=debug) |