技術資料

目次 

研究内容 

目的 


実現目標 


準備 

プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山本/プログラム/main.zip にて保存(2025/06/24更新)

ファイル説明 

扱うデータ用途ファイル名ファイルの場所
アプリケーション全体 
アプリケーションの起動Flaskサーバーを起動するrun.pymain/
アプリケーション本体全てのWebページ(ルート)の処理、主要ロジックapp.pymain/app/
設定ファイル秘密鍵(SECRET_KEY)やソルト(SALT)の保存key.pymain/app/
計算モジュール科目推薦やレビュー信頼度の計算関数群Recommend.pymain/
データベース
ユーザー認証情報学籍番号、ハッシュ化パスワードStudentKey.dbmain/
成績・メタデータ学生の成績、古い科目メタデータStudentData.dbmain/
年度別マスターデータ 
年度ごとの科目情報科目名、フォルダ名、区分、単位数、必選、配当などcourse_catalog_YYYY.csvmain/catalogs/
教材データ
各回の教材リスト特定の講義回で表示する教材のリスト(Webサイト、動画)kyouzai_X.csv video_kyouzai_X.csvmain/app/Kamoku/{科目名}/Kyouzai/
各回のレビューデータユーザーが投稿したレビューの保存先(自動生成)Kyouzai_X_Review.csvmain/app/Kamoku/{科目名}/Kyouzai/
シラバス作成データ
教員と担当科目教員名と担当科目の対応リストmain/teacher.csvmain/
授業計画データ作成されたシラバスの授業計画(自動生成){科目名}_Custom.csvmain/app/templates/{科目名}/
ページの見た目 (HTML)
ログイン・新規登録ログインページ、新規登録ページtop.html, newcomer.htmlmain/app/templates/
メインページログイン後の履修状況・推薦科目表示ページindex.htmlmain/app/templates/
科目トップ(一覧)各科目の講義回一覧を表示するページ{科目名}.htmlmain/app/templates/{科目名}/
講義詳細(汎用)各講義の教材やレビュー機能を表示する共通ページlecture_page.htmlmain/app/templates/{科目名}/
シラバス(教員用)シラバス作成・確認用の一連のページteacher.html, subject.html, syllabus.html, true_syllabus.htmlmain/app/templates/
カスタムシラバス保存されたシラバスのHTML(自動生成){科目名}_Custom.htmlmain/app/templates/{科目名}/


環境とインストール 

Python3.11にて動作確認済み

ライブラリ名インストールコマンド主な用途
Flaskpip install FlaskWebアプリケーションのフレームワーク本体
pandas, numpypip install pandas numpyデータ分析や行列計算(data_all_npなど)で中心的に使われている
SQLAlchemypip install SQLAlchemy Flask-SQLAlchemyデータベースを操作するために使われている
MeCab別で記載レビュー信頼度計算で、日本語の文章を単語に分解するために必要
matplotlibpip install matplotlibグラフ描画のためにインポート
requests, bs4pip install requests beautifulsoup4Webページの情報取得などに使われている
pykakasipip install pykakasi科目名をURL用のローマ字フォルダ名に変換するスクリプトで提案したライブラリ


MeCab導入方法 

MeCab導入確認 

操作手順書 

このドキュメントは、提供されたFlaskアプリケーションの操作手順と画面遷移について説明します。 本アプリケーションは、大きく分けて以下の4つの機能群から構成されます。

主なアルゴリズムの解説 

本システムで採用されている特徴的な3つのアルゴリズムについて解説します。

1. 協調フィルタリングによる科目推薦 

def rank_items(data_all_np, similarities, target_user_index):

   """未履修科目の予測評価値を算出し、ランキング化する"""
   rankings = []
   # ... (未履修の各科目に対してループ) ...
   for i in range(num_items):
       if target[i] >= 0: # 履修済みはスキップ
           continue
       # 類似度の高い他の学生の評価を元に、予測値を計算
       rankings.append((i, predict(data_all_np, similarities, target_user_index, i)))
   return sorted(rankings, key=lambda r: r[1], reverse=True)

}}

2. 機械学習によるキャリアベースの科目推薦 

   # 2. ロジスティック回帰モデルを定義し、訓練(fit)する
   # L1正則化(penalty='l1')で、特に重要な科目の係数だけが残るようにする
   model = LogisticRegression(class_weight='balanced', C=1.0, penalty='l1', solver='liblinear', random_state=42)
   model.fit(X, y)
   # 3. 学習後の係数(model.coef_)を「重要度」として取り出す
   df_importance = pd.DataFrame({'科目名': X.columns, '重要度': model.coef_[0]})
   df_importance_sorted = df_importance.sort_values('重要度', ascending=False)
   
   # 4. 履修済み科目を除外して推薦リストを作成
   recommendations = df_importance_sorted[~df_importance_sorted['科目名'].isin(taken_courses)]
   
   return "成功", recommendations.head(10)

}}

3. レビューの信頼度スコアリング 

# レビュー投稿時に呼び出されるメイン処理 def _process_review(...):

   # ... (レビューをファイルに保存) ...
   
   # 信頼度計算に必要な各スコアを算出
   all_reviews_df = _read_csv_with_fallback(review_filepath)
   S_score_norm = Similarity(all_reviews_df)
   I_score_norm = Informative(all_reviews_df)
   C_score_norm = Concentration(all_reviews_df)
   
   # 信頼度スコアを計算
   Credibility_score, Ave_score = credibility_func(...)
   # 最終的な評価値をマスターファイルに保存
   df_master.at[item_original_index, '評価'] = final_score
   df_master.to_csv(filepath, index=False, encoding='utf-8-sig')

}}

学生向け機能 

学生としてシステムを利用する際の操作手順です。

ログイン・ログアウト 

登録済みのアカウントでシステムにアクセスします。

履修状況確認と科目推薦 (メインページ) 

ログイン後に表示されるメインページで、自身の履修状況や推薦科目を確認します。

キャリアベースの科目推薦 

希望する進路(業種)に基づいて、履修すべき科目の推薦を受けます。

教員向け機能 (シラバス作成) 

教員が担当科目のシラバスを作成し、システムに登録する手順です。

1. 担当教員選択 

2. シラバス情報入力 

3. プレビューと保存 

汎用科目ページ機能 

学生が推薦された科目や履修中の科目について、詳細情報を確認する機能です。

科目トップページ 

各科目のポータルとなるページです。

各回講義ページとレビュー投稿 

管理者向け機能 

システムのデータベースを直接管理するための機能です。アクセスは管理者のみに制限されている想定です。

管理トップページ 

テーブル閲覧・編集・削除 

数値実験1:協調フィルタリングによる科目推薦の動作検証 

目的 

準備 

プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山本/プログラム/test1.zip にて保存(2025/07/08更新) 

扱うデータ用途ファイル名ファイルの場所
実験用ファイル
計算モジュール科目推薦の計算関数群Recommend.pytest1/
実験用データ学生の成績データgrades.csvtest1/
実験実行ファイル実験の実行と結果のグラフ化experiment1_kamoku_suisen.pytest1/
実験実行ファイルデータ生成generate_dataset.pytest1/
実験結果データ数と精度の関係を示すグラフaccuracy_comparison_graph.pngtest1/


実験内容 

実験手順 

実験結果 

数値実験_実験手順_004.png
accuracy_comparison_graph.png

考察 




数値実験2:レビュー信頼度スコアの有効性検証 

目的 

準備 

プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山本/プログラム/test2.zip にて保存(2025/07/01更新) 

扱うデータ用途ファイル名ファイルの場所
実験用ファイル
計算モジュールレビュー信頼度の計算関数群Recommend.pytest2/
実験用データ教材のマスターデータmaterials.csvtest2/
実験用データ教材へのレビューデータreviews.csvtest2/
実験実行ファイル実験の実行と結果の要約・グラフ化experiment2_kyouzai_shinraido.pytest2/
実験結果「平均評価」と「最終信頼度スコア」の比較グラフreport_graph.pngtest2/


実験内容 

実験手順 

実験結果 

数値実験_実験手順_006.png

report_graph.png

考察 




数値実験3: 

目的 

準備 

プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山本/プログラム/test3.zip にて保存(2025/07/08更新) 

扱うデータ用途ファイル名ファイルの場所
実験用ファイル
計算モジュールキャリアパス推薦の計算ロジックcareer_recommender.pytest3/
データ生成実験用の大規模なダミーデータを生成create_test_dataset.pytest3/
就職先データ生成された卒業生の就職先リストemployment_data.csvtest3/
履修状況データ全学生の履修状況の0/1行列all_grades_matrix.csvtest3/


実験内容 

実験手順 

実験結果 

test3データ生成.png
test3科目推薦.png

考察 

その他 

その他 


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS