プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山本/プログラム/main.zip にて保存(2025/06/24更新)
| 扱うデータ | 用途 | ファイル名 | ファイルの場所 |
| アプリケーション全体 | |||
| アプリケーションの起動 | Flaskサーバーを起動する | run.py | main/ |
| アプリケーション本体 | 全てのWebページ(ルート)の処理、主要ロジック | app.py | main/app/ |
| 設定ファイル | 秘密鍵(SECRET_KEY)やソルト(SALT)の保存 | key.py | main/app/ |
| 計算モジュール | 科目推薦やレビュー信頼度の計算関数群 | Recommend.py | main/ |
| データベース | |||
| ユーザー認証情報 | 学籍番号、ハッシュ化パスワード | StudentKey.db | main/ |
| 成績・メタデータ | 学生の成績、古い科目メタデータ | StudentData.db | main/ |
| 年度別マスターデータ | |||
| 年度ごとの科目情報 | 科目名、フォルダ名、区分、単位数、必選、配当など | course_catalog_YYYY.csv | main/catalogs/ |
| 教材データ | |||
| 各回の教材リスト | 特定の講義回で表示する教材のリスト(Webサイト、動画) | kyouzai_X.csv video_kyouzai_X.csv | main/app/Kamoku/{科目名}/Kyouzai/ |
| 各回のレビューデータ | ユーザーが投稿したレビューの保存先(自動生成) | Kyouzai_X_Review.csv | main/app/Kamoku/{科目名}/Kyouzai/ |
| シラバス作成データ | |||
| 教員と担当科目 | 教員名と担当科目の対応リスト | main/teacher.csv | main/ |
| 授業計画データ | 作成されたシラバスの授業計画(自動生成) | {科目名}_Custom.csv | main/app/templates/{科目名}/ |
| ページの見た目 (HTML) | |||
| ログイン・新規登録 | ログインページ、新規登録ページ | top.html, newcomer.html | main/app/templates/ |
| メインページ | ログイン後の履修状況・推薦科目表示ページ | index.html | main/app/templates/ |
| 科目トップ(一覧) | 各科目の講義回一覧を表示するページ | {科目名}.html | main/app/templates/{科目名}/ |
| 講義詳細(汎用) | 各講義の教材やレビュー機能を表示する共通ページ | lecture_page.html | main/app/templates/{科目名}/ |
| シラバス(教員用) | シラバス作成・確認用の一連のページ | teacher.html, subject.html, syllabus.html, true_syllabus.html | main/app/templates/ |
| カスタムシラバス | 保存されたシラバスのHTML(自動生成) | {科目名}_Custom.html | main/app/templates/{科目名}/ |
Python3.11にて動作確認済み
| ライブラリ名 | インストールコマンド | 主な用途 |
| Flask | pip install Flask | Webアプリケーションのフレームワーク本体 |
| pandas, numpy | pip install pandas numpy | データ分析や行列計算(data_all_npなど)で中心的に使われている |
| SQLAlchemy | pip install SQLAlchemy Flask-SQLAlchemy | データベースを操作するために使われている |
| MeCab | 別で記載 | レビュー信頼度計算で、日本語の文章を単語に分解するために必要 |
| matplotlib | pip install matplotlib | グラフ描画のためにインポート |
| requests, bs4 | pip install requests beautifulsoup4 | Webページの情報取得などに使われている |
| pykakasi | pip install pykakasi | 科目名をURL用のローマ字フォルダ名に変換するスクリプトで提案したライブラリ |
https://github.com/ikegami-yukino/mecab/releases/tag/v0.996
C:\Program Files\MeCab\bin\
このドキュメントは、提供されたFlaskアプリケーションの操作手順と画面遷移について説明します。 本アプリケーションは、大きく分けて以下の4つの機能群から構成されます。
本システムで採用されている特徴的な3つのアルゴリズムについて解説します。
#code(python){{ def get_correlation_coefficents(data_all_np, target_user_index):
"""指定学生と他の全学生の類似度(相関係数)を計算"""
similarities = []
target = data_all_np[target_user_index]
for i, score in enumerate(data_all_np):
# ... (両者が評価済みの科目のみで相関係数を計算) ...
similarity = np.corrcoef(target[indices], score[indices])[0, 1]
if not np.isnan(similarity):
similarities.append((i, similarity))
return sorted(similarities, key=lambda s: s[1], reverse=True)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)
}}
#code(python){{ def get_career_recommendations(target_industry, target_student_id, df_employment, df_grades):
# ... (データ準備) ... # 1. 就職先データから、目標業種に行った学生(1)とそれ以外(0)の正解ラベルyを作成 target_graduates = df_employment[df_employment['業種'] == target_industry]['学籍番号'].tolist() y = X.index.isin(target_graduates).astype(int)
# 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)
}}
#code(python){{ def Credibility(S_score_norm, I_score_norm, C_score_norm, HPnumber, df):
"""類似度・情報量・集中性の3つのスコアから最終的な信頼度を計算する"""
F_score = []
# ... (対象教材のレビューを取得) ...
# 3つのスコアを平均して、総合的な信頼性指標F_scoreを算出
for i in range(len(index)):
F_score.append((S_score_norm[index[i]] + I_score_norm[index[i]] + C_score_norm[index[i]]) / 3)
# ... (最終的なスコアを計算) ...
return F_cre_score, Ave_score# レビュー投稿時に呼び出されるメイン処理 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')
}}
学生としてシステムを利用する際の操作手順です。
登録済みのアカウントでシステムにアクセスします。


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


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




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





学生が推薦された科目や履修中の科目について、詳細情報を確認する機能です。
各科目のポータルとなるページです。





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






プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山本/プログラム/test1.zip にて保存(2025/07/08更新)
| 扱うデータ | 用途 | ファイル名 | ファイルの場所 |
| 実験用ファイル | |||
| 計算モジュール | 科目推薦の計算関数群 | Recommend.py | test1/ |
| 実験用データ | 学生の成績データ | grades.csv | test1/ |
| 実験実行ファイル | 実験の実行と結果のグラフ化 | experiment1_kamoku_suisen.py | test1/ |
| 実験実行ファイル | データ生成 | generate_dataset.py | test1/ |
| 実験結果 | データ数と精度の関係を示すグラフ | accuracy_comparison_graph.png | test1/ |


プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山本/プログラム/test2.zip にて保存(2025/07/01更新)
| 扱うデータ | 用途 | ファイル名 | ファイルの場所 |
| 実験用ファイル | |||
| 計算モジュール | レビュー信頼度の計算関数群 | Recommend.py | test2/ |
| 実験用データ | 教材のマスターデータ | materials.csv | test2/ |
| 実験用データ | 教材へのレビューデータ | reviews.csv | test2/ |
| 実験実行ファイル | 実験の実行と結果の要約・グラフ化 | experiment2_kyouzai_shinraido.py | test2/ |
| 実験結果 | 「平均評価」と「最終信頼度スコア」の比較グラフ | report_graph.png | test2/ |


プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山本/プログラム/test3.zip にて保存(2025/07/08更新)
| 扱うデータ | 用途 | ファイル名 | ファイルの場所 |
| 実験用ファイル | |||
| 計算モジュール | キャリアパス推薦の計算ロジック | career_recommender.py | test3/ |
| データ生成 | 実験用の大規模なダミーデータを生成 | create_test_dataset.py | test3/ |
| 就職先データ | 生成された卒業生の就職先リスト | employment_data.csv | test3/ |
| 履修状況データ | 全学生の履修状況の0/1行列 | all_grades_matrix.csv | test3/ |

