山本Tさん卒論
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[技術資料]]
*目次 [#e890b3d5]
#CONTENTS
*研究内容 [#ccda06db]
**目的 [#h986282d]
-本研究は、大学における教学データ(成績・履修履歴・レビュ...
-推薦の信頼性を高めるために、レビューの信頼性指標(類似性...
-従来の学習支援では、主にGPAの向上や履修支援に焦点が当て...
&br;
**実現目標 [#v983808a]
-過去の卒業生データから、成績予測モデルを構築し、未履修科...
-単位要件(卒業・必修・選択必修)を満たしつつ、希望進路に...
-シラバスやYouTube等から教材を自動取得し、信頼性スコアに...
-最終的には、キャリアパスに沿った学習ナビゲーションを可能...
&br;
*準備 [#u3fe939b]
プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山...
**ファイル説明 [#j07bdc76]
|扱うデータ|用途|ファイル名|ファイルの場所|
|アプリケーション全体| | | |
|アプリケーションの起動|Flaskサーバーを起動する|run.py|ma...
|アプリケーション本体|全てのWebページ(ルート)の処理、主...
|設定ファイル|秘密鍵(SECRET_KEY)やソルト(SALT)の保存|key....
|計算モジュール|科目推薦やレビュー信頼度の計算関数群|Reco...
|データベース| | | |
|ユーザー認証情報|学籍番号、ハッシュ化パスワード|StudentK...
|成績・メタデータ|学生の成績、古い科目メタデータ|StudentD...
|年度別マスターデータ| | | |
|年度ごとの科目情報|科目名、フォルダ名、区分、単位数、必...
|教材データ| | | |
|各回の教材リスト|特定の講義回で表示する教材のリスト(Web...
|各回のレビューデータ|ユーザーが投稿したレビューの保存先...
|シラバス作成データ| | | |
|教員と担当科目|教員名と担当科目の対応リスト|main/teacher...
|授業計画データ|作成されたシラバスの授業計画(自動生成)|...
|ページの見た目 (HTML)|| | |
|ログイン・新規登録|ログインページ、新規登録ページ|top.ht...
|メインページ|ログイン後の履修状況・推薦科目表示ページ|in...
|科目トップ(一覧)|各科目の講義回一覧を表示するページ|{...
|講義詳細(汎用)|各講義の教材やレビュー機能を表示する共...
|シラバス(教員用)|シラバス作成・確認用の一連のページ|te...
|カスタムシラバス|保存されたシラバスのHTML(自動生成)|{...
&br;
**環境とインストール [#wc985780]
Python3.11にて動作確認済み
~
Webアプリケーション基盤 (Flask)
|Package |Version |役割・目的|
|Flask |2.2.2 |Webアプリケーションのフレームワーク本体。|
|Jinja2 |3.1.4 |HTMLテンプレートを処理するエンジン。|
|Werkzeug |2.2.2 |Flaskの基盤となるWSGIツールキット。|
|itsdangerous |2.2.0 |ログイン状態(セッション)などを安...
|click |8.1.7 |Flaskのコマンドライン機能をサポート。|
|blinker |1.9.0 |Flask内部のイベント通知システム。|
~
データ分析・数値計算 (Pandas & Scikit-learn)
|Package |Version |役割・目的|
|pandas |1.3.5 |CSVの読み書き、データ集計・加工など、デー...
|numpy |1.26.4 |高速な数値計算の基盤。PandasとScikit-lear...
|scikit-learn |1.5.2 |キャリア推薦の機械学習モデル(ロジ...
|scipy |1.11.4 |Scikit-learnが依存する科学計算ライブラリ。|
|joblib |1.4.2 |Scikit-learnが依存する処理の並列化ライブ...
|threadpoolctl |3.5.0 |Scikit-learnの計算処理を制御するた...
|python-dateutil |2.9.0.post0 |Pandasが依存する日付・時刻...
|pytz |2024.2 |Pandasが依存するタイムゾーン処理ライブラリ...
~
日本語処理 (Mecab)
|Package |Version |役割・目的|
|mecab |0.996.5 |レビュー信頼度計算で使う、日本語の形態素...
|ipadic |1.0.0 |Mecabが使用する標準的な日本語辞書。|
~
外部API連携 (Google API)
|Package |Version |役割・目的|
|google-api-python-client |2.177.0 |教材自動収集機能で、G...
|google-auth |2.36.0 |APIの認証処理を担当。|
|google-auth-httplib2 |0.2.0 |認証で使うHTTPクライアント。|
|google-api-core |2.23.0 |Google APIクライアントのコア機...
|httplib2 |0.22.0 |HTTP通信ライブラリ。|
|uritemplate |4.1.1 |URLのテンプレートを扱うライブラリ。|
|protobuf |5.28.3 |Googleが開発したデータ交換フォーマット...
|rsa |4.9 |認証で使われる暗号化ライブラリ。|
|pyasn1 |0.6.1 |認証で使われるデータ構造ライブラリ。|
|pyasn1-modules |0.4.1 |pyasn1の拡張モジュール。|
|cachetools |5.5.0 |認証情報のキャッシュ管理。|
~
***MeCab導入方法 [#l2d13af4]
-Mecab をインストールする
--Python に MeCab を pip した後に、PC本体にも入れる必要が...
https://github.com/ikegami-yukino/mecab/releases/tag/v0....
-パスを通しておく(システム環境変数の編集で変数Pathを編集...
-新規でmecab.exeがあるパスを追加する
C:\Program Files\MeCab\bin\
~
*** MeCab導入確認 [#g5535d54]
-下のMeCabテスト用のプログラムを実行して結果が出れば問題...
#ref(MeCab_test.ipynb,,MeCab_test.ipynb)
~
~
~
* 操作手順書 [#r6ce2bfa]
このドキュメントは、提供されたFlaskアプリケーションの操作...
本アプリケーションは、大きく分けて以下の4つの機能群から構...
- ''学生向け機能'': ログイン、履修状況の確認、協調フィル...
- ''教員向け機能'': 担当する授業のシラバス作成・登録
- ''汎用科目ページ機能'': 各科目の講義詳細や教材レビュー
- ''管理者向け機能'': データベースのメンテナンス
** 主なアルゴリズムの解説 [#nbf31627]
本システムで採用されている特徴的な3つのアルゴリズムについ...
*** 1. 協調フィルタリングによる科目推薦 [#f5d25f41]
- ''目的'': 学生一人ひとりの履修履歴に基づき、興味を持ち...
- ''解説'': 「あなたと履修科目の好みが似ている学生は、こ...
- ''関連コード (Recommend.py)''
#code(python){{
def get_correlation_coefficents(data_all_np, target_user_...
"""指定学生と他の全学生の類似度(相関係数)を計算"""
similarities = []
target = data_all_np[target_user_index]
for i, score in enumerate(data_all_np):
# ... (両者が評価済みの科目のみで相関係数を計算) ...
similarity = np.corrcoef(target[indices], score[i...
if not np.isnan(similarity):
similarities.append((i, similarity))
return sorted(similarities, key=lambda s: s[1], rever...
def rank_items(data_all_np, similarities, target_user_ind...
"""未履修科目の予測評価値を算出し、ランキング化する"""
rankings = []
# ... (未履修の各科目に対してループ) ...
for i in range(num_items):
if target[i] >= 0: # 履修済みはスキップ
continue
# 類似度の高い他の学生の評価を元に、予測値を計算
rankings.append((i, predict(data_all_np, similari...
return sorted(rankings, key=lambda r: r[1], reverse=T...
}}
*** 2. 機械学習によるキャリアベースの科目推薦 [#t8e3dc9a]
- ''目的'': 学生が希望する業種への就職に、どの科目の履修...
- ''解説'': これは「希望する業種に就職した先輩たちは、ど...
- ''関連コード (career_recommender.py)''
#code(python){{
def get_career_recommendations(target_industry, target_st...
# ... (データ準備) ...
# 1. 就職先データから、目標業種に行った学生(1)とそれ...
target_graduates = df_employment[df_employment['業種'...
y = X.index.isin(target_graduates).astype(int)
# 2. ロジスティック回帰モデルを定義し、訓練(fit)する
# L1正則化(penalty='l1')で、特に重要な科目の係数だけ...
model = LogisticRegression(class_weight='balanced', C...
model.fit(X, y)
# 3. 学習後の係数(model.coef_)を「重要度」として取り...
df_importance = pd.DataFrame({'科目名': X.columns, '...
df_importance_sorted = df_importance.sort_values('重...
# 4. 履修済み科目を除外して推薦リストを作成
recommendations = df_importance_sorted[~df_importance...
return "成功", recommendations.head(10)
}}
*** 3. レビューの信頼度スコアリング [#gb9e6445]
- ''目的'': 教材レビューの信頼性を多角的に評価し、やらせ...
- ''解説'': レビューの評価を単純な平均点にせず、以下の3つ...
-- ''1. 類似度 (Similarity)'': 他人のレビューのコピペや、...
-- ''2. 情報量 (Informative)'': レビューに具体性や有用な...
-- ''3. 集中性 (Concentration)'': 特定の短期間に不自然な...
- ''関連コード (Recommend.py)''
#code(python){{
def Credibility(S_score_norm, I_score_norm, C_score_norm,...
"""類似度・情報量・集中性の3つのスコアから最終的な信...
F_score = []
# ... (対象教材のレビューを取得) ...
# 3つのスコアを平均して、総合的な信頼性指標F_scoreを...
for i in range(len(index)):
F_score.append((S_score_norm[index[i]] + I_score_...
# ... (最終的なスコアを計算) ...
return F_cre_score, Ave_score
# レビュー投稿時に呼び出されるメイン処理
def _process_review(...):
# ... (レビューをファイルに保存) ...
# 信頼度計算に必要な各スコアを算出
all_reviews_df = _read_csv_with_fallback(review_filep...
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...
}}
---
** 学生向け機能 [#bc31bb50]
学生としてシステムを利用する際の操作手順です。
*** ログイン・ログアウト [#e6ec0d60]
登録済みのアカウントでシステムにアクセスします。
- ''操作手順 (ログイン)''
-- 1. トップページ (''/top'') にアクセスします。
~&ref(top.png,nolink,800x);
-- 2. ''学籍番号'' と ''パスワード'' を入力し、「ログイン...
-- 3. 認証が成功すると、メインページ (''/index'') へ遷移...
~&ref(index.png,nolink,800x);
- ''操作手順 (ログアウト)''
-- 1. ページ上部にある「ログアウト」ボタンをクリックしま...
-- 2. セッションが破棄され、トップページ (''/top'') へ遷...
*** 履修状況確認と科目推薦 (メインページ) [#qe2cc390]
ログイン後に表示されるメインページで、自身の履修状況や推...
- ''画面説明 (''/index'')''
~&ref(index.png,nolink,800x);
-- ''履修状況'': 自身のこれまでの履修科目と成績評価(◎, ▲...
-- ''推薦科目'': 以下のロジックに基づいて推薦された科目が...
--- ''協調フィルタリング'': 履修傾向が類似する他の学生の...
--- ''卒業要件'': 卒業に必要な単位が不足している区分があ...
~&ref(cmd_index.png,nolink,800x);
-- 各推薦科目のリンクをクリックすると、後述の ''科目トッ...
*** キャリアベースの科目推薦 [#o21d15f0]
希望する進路(業種)に基づいて、履修すべき科目の推薦を受...
- ''操作手順''
-- 1. メインページなどから「キャリア推薦」ページ (''/care...
~&ref(career.png,nolink,800x);
-- 2. プルダウンメニューから、興味のある ''業種'' を選択...
~&ref(career_pull.png,nolink,800x);
-- 3. 「推薦を表示」などのボタンをクリックします。
-- 4. 過去のキャリアデータから学習を開始、利用者の履修済...
~&ref(cmd_career.png,nolink,800x);
-- 5. ページ内に、推薦された科目がリストとして表示されま...
~&ref(career_list.png,nolink,800x);
** 教員向け機能 (シラバス作成) [#t03b9ed0]
教員が担当科目のシラバスを作成し、システムに登録する手順...
*** 1. シラバス情報入力 [#bd3fb1ef]
- ''操作手順''
-- 1. トップページ (''/top'') にアクセスします。
~&ref(top_teacher.png,nolink,800x);
-- 2. 教員を選択した状態で''教員ID'' と ''パスワード'' を...
-- 3. 認証が成功すると、シラバス作成ページ (''/subject'')...
~&ref(subject.png,nolink,800x);
-- 4. 担当科目選択ページ (''/subject'') で、自分が作成し...
~&ref(subject_select.png,nolink,800x);
-- 5. シラバスに必要な各種項目(英語科目名、科目区分、授...
-- 6. 全ての入力が終わったら、「作成」や「プレビュー」ボ...
*** 2. プレビューと保存 [#uc864b63]
- ''操作手順''
-- 1. シラバスプレビューページ (''/result'') に、入力内容...
~&ref(result.png,nolink,800x);
-- 2. 内容に問題がなければ、「保存」ボタンをクリックしま...
--3. シラバス全体がHTMLファイルとしてサーバーに保存され、...
--- ''保存先'': ''app/templates/<科目URL名>/<科目URL名>_C...
--- ''保存先'': ''app/templates/<科目URL名>/<科目URL名>_C...
~&ref(cmd_result.png,nolink,800x);
** 汎用科目ページ機能 [#ff99ae2a]
学生が推薦された科目や履修中の科目について、詳細情報を確...
*** 科目トップページ [#n6ba88d5]
各科目のポータルとなるページです。
- ''アクセス方法''
-- メインページ (''/index'') の推薦科目リストから科目名を...
~&ref(index.png,nolink,800x);
- ''画面説明 (''/kamoku/<科目名>'')''
~&ref(kamoku.png,nolink,800x);
-- ''講義一覧'': 第1回から第15回までの講義内容へのリンク...
-- ''シラバス表示'': 教員によってカスタムシラバスが作成さ...
*** 各回講義ページとレビュー投稿 [#t613dd41]
- ''操作手順''
-- 1. 科目トップページから、閲覧したい回の講義リンクをク...
-- 2. ページには、その回の ''講義タイトル'' や、参考とな...
~&ref(kyouzai.png,nolink,800x);
-- 3. 各教材の下にあるフォームから、5段階評価とコメントを...
~&ref(kyouzai_score.png,nolink,800x);
-- 4. レビューを投稿すると、教材の信頼度スコアが再計算さ...
~&ref(kyouzai_result.png,nolink,800x);
** 管理者向け機能 [#j1649cee]
システムのデータベースを直接管理するための機能です。アク...
*** 管理トップページ [#oaf284c2]
- ''アクセス方法'': URL ''/admin'' を直接入力します。
~&ref(url_admin.png,nolink,800x);
- ''画面説明''
~&ref(admin.png,nolink,800x);
-- ''テーブル一覧'': ''StudentData.db'' 内の全テーブル名...
-- ''CSVアップロード'': CSVファイルを選択し、データを格納...
~&ref(table_add.png,nolink,800x);
-- ''テーブル削除'': テーブル名を指定して、データベースか...
~&ref(table_delete.png,nolink,800x);
*** テーブル閲覧・編集・削除 [#va0d6c1a]
- ''操作手順''
~&ref(table.png,nolink,800x);
-- 1. 管理トップページ (''/admin'') でテーブル名をクリッ...
-- 2. 各行の右側にある ''「編集」'' ボタンをクリックする...
~&ref(edit.png,nolink,800x);
-- 3. 各行の右側にある ''「削除」'' ボタンをクリックする...
-- 4. 編集・削除処理後は、元のテーブル閲覧ページにリダイ...
*数値実験1:協調フィルタリングによる科目推薦の動作検証 [...
**目的 [#bcf9e4e6]
-本システムにベース機能として実装されている、一般的な協調...
~
**準備 [#j559bdb1]
プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山...
|扱うデータ|用途|ファイル名|ファイルの場所|
|実験用ファイル| | | |
|計算モジュール|科目推薦の計算関数群|Recommend.py|test1/|
|実験用データ|学生の成績データ|grades.csv|test1/|
|実験実行ファイル|実験の実行と結果のグラフ化|experiment1_...
|実験実行ファイル|データ生成|generate_dataset.py|test1/|
|実験結果|データ数と精度の関係を示すグラフ|accuracy_compa...
~
**実験内容 [#d93e47c5]
-ホールドアウト法を用いる。~
各学生の履修履歴の20%を「正解データ」として隠し、残りの80...
~
**実験手順 [#k7938f51]
**実験結果 [#j6e9fb4b]
#ref(数値実験_実験手順_004.png,nolink,800x);
#ref(accuracy_comparison_graph.png,nolink,800x);
-グラフから、学習データの学生数が増えるにつれて精度が安定...
**考察 [#lb203ba7]
~
~
~
*数値実験2:レビュー信頼度スコアの有効性検証 [#w89cd5f1]
**目的 [#s279e405]
-教材の質を測る上で、単純な平均評価点だけでなく、レビュー...
~
**準備 [#i9ed2952]
プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山...
|扱うデータ|用途|ファイル名|ファイルの場所|
|実験用ファイル| | | |
|計算モジュール|レビュー信頼度の計算関数群|Recommend.py|t...
|実験用データ|教材のマスターデータ|materials.csv|test2/|
|実験用データ|教材へのレビューデータ|reviews.csv|test2/|
|実験実行ファイル|実験の実行と結果の要約・グラフ化|experi...
|実験結果|「平均評価」と「最終信頼度スコア」の比較グラフ|...
~
**実験内容 [#pc46e999]
-「コピーレビュー」や「短文レビュー」といった、意図的に質...
-各レビューに類似度(S)・情報量(I)・集中度(C)の3つの観点で...
-質の低いレビューが投稿された教材の信頼度スコアが、元の平...
~
**実験手順 [#y216e87f]
**実験結果 [#t2199a54]
&ref(数値実験_実験手順_006.png,nolink,800x);
&ref(report_graph.png,nolink,800x);
-類似度スコアと情報量スコアは、それぞれコピーレビューと短...
~
**考察 [#udcc29bc]
~
~
~
*数値実験3: [#z93e971c]
**目的 [#p490da6b]
-本研究で主軸として提案する、機械学習を用いたキャリアパス...
**準備 [#fcb504c6]
プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山...
|扱うデータ|用途|ファイル名|ファイルの場所|
|実験用ファイル| | | |
|計算モジュール|キャリアパス推薦の計算ロジック|career_rec...
|データ生成|実験用の大規模なダミーデータを生成|create_tes...
|就職先データ|生成された卒業生の就職先リスト|employment_d...
|履修状況データ|全学生の履修状況の0/1行列|all_grades_matr...
~
**実験内容 [#k78c60bf]
-「IT業界に進む学生はネットワーク関連科目を履修しがち」の...
-L1正則化ロジスティック回帰モデルを使用。全卒業生の「履修...
-モデルが算出した「重要度スコア」が、データに仕込んだ傾向...
**実験手順 [#e63483c0]
**実験結果 [#ydc86d74]
#ref(test3データ生成.png,nolink,800x);
#ref(test3科目推薦.png,nolink,800x);
**考察 [#g1455153]
*その他 [#td0f2a65]
**その他 [#sbb67277]
終了行:
[[技術資料]]
*目次 [#e890b3d5]
#CONTENTS
*研究内容 [#ccda06db]
**目的 [#h986282d]
-本研究は、大学における教学データ(成績・履修履歴・レビュ...
-推薦の信頼性を高めるために、レビューの信頼性指標(類似性...
-従来の学習支援では、主にGPAの向上や履修支援に焦点が当て...
&br;
**実現目標 [#v983808a]
-過去の卒業生データから、成績予測モデルを構築し、未履修科...
-単位要件(卒業・必修・選択必修)を満たしつつ、希望進路に...
-シラバスやYouTube等から教材を自動取得し、信頼性スコアに...
-最終的には、キャリアパスに沿った学習ナビゲーションを可能...
&br;
*準備 [#u3fe939b]
プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山...
**ファイル説明 [#j07bdc76]
|扱うデータ|用途|ファイル名|ファイルの場所|
|アプリケーション全体| | | |
|アプリケーションの起動|Flaskサーバーを起動する|run.py|ma...
|アプリケーション本体|全てのWebページ(ルート)の処理、主...
|設定ファイル|秘密鍵(SECRET_KEY)やソルト(SALT)の保存|key....
|計算モジュール|科目推薦やレビュー信頼度の計算関数群|Reco...
|データベース| | | |
|ユーザー認証情報|学籍番号、ハッシュ化パスワード|StudentK...
|成績・メタデータ|学生の成績、古い科目メタデータ|StudentD...
|年度別マスターデータ| | | |
|年度ごとの科目情報|科目名、フォルダ名、区分、単位数、必...
|教材データ| | | |
|各回の教材リスト|特定の講義回で表示する教材のリスト(Web...
|各回のレビューデータ|ユーザーが投稿したレビューの保存先...
|シラバス作成データ| | | |
|教員と担当科目|教員名と担当科目の対応リスト|main/teacher...
|授業計画データ|作成されたシラバスの授業計画(自動生成)|...
|ページの見た目 (HTML)|| | |
|ログイン・新規登録|ログインページ、新規登録ページ|top.ht...
|メインページ|ログイン後の履修状況・推薦科目表示ページ|in...
|科目トップ(一覧)|各科目の講義回一覧を表示するページ|{...
|講義詳細(汎用)|各講義の教材やレビュー機能を表示する共...
|シラバス(教員用)|シラバス作成・確認用の一連のページ|te...
|カスタムシラバス|保存されたシラバスのHTML(自動生成)|{...
&br;
**環境とインストール [#wc985780]
Python3.11にて動作確認済み
~
Webアプリケーション基盤 (Flask)
|Package |Version |役割・目的|
|Flask |2.2.2 |Webアプリケーションのフレームワーク本体。|
|Jinja2 |3.1.4 |HTMLテンプレートを処理するエンジン。|
|Werkzeug |2.2.2 |Flaskの基盤となるWSGIツールキット。|
|itsdangerous |2.2.0 |ログイン状態(セッション)などを安...
|click |8.1.7 |Flaskのコマンドライン機能をサポート。|
|blinker |1.9.0 |Flask内部のイベント通知システム。|
~
データ分析・数値計算 (Pandas & Scikit-learn)
|Package |Version |役割・目的|
|pandas |1.3.5 |CSVの読み書き、データ集計・加工など、デー...
|numpy |1.26.4 |高速な数値計算の基盤。PandasとScikit-lear...
|scikit-learn |1.5.2 |キャリア推薦の機械学習モデル(ロジ...
|scipy |1.11.4 |Scikit-learnが依存する科学計算ライブラリ。|
|joblib |1.4.2 |Scikit-learnが依存する処理の並列化ライブ...
|threadpoolctl |3.5.0 |Scikit-learnの計算処理を制御するた...
|python-dateutil |2.9.0.post0 |Pandasが依存する日付・時刻...
|pytz |2024.2 |Pandasが依存するタイムゾーン処理ライブラリ...
~
日本語処理 (Mecab)
|Package |Version |役割・目的|
|mecab |0.996.5 |レビュー信頼度計算で使う、日本語の形態素...
|ipadic |1.0.0 |Mecabが使用する標準的な日本語辞書。|
~
外部API連携 (Google API)
|Package |Version |役割・目的|
|google-api-python-client |2.177.0 |教材自動収集機能で、G...
|google-auth |2.36.0 |APIの認証処理を担当。|
|google-auth-httplib2 |0.2.0 |認証で使うHTTPクライアント。|
|google-api-core |2.23.0 |Google APIクライアントのコア機...
|httplib2 |0.22.0 |HTTP通信ライブラリ。|
|uritemplate |4.1.1 |URLのテンプレートを扱うライブラリ。|
|protobuf |5.28.3 |Googleが開発したデータ交換フォーマット...
|rsa |4.9 |認証で使われる暗号化ライブラリ。|
|pyasn1 |0.6.1 |認証で使われるデータ構造ライブラリ。|
|pyasn1-modules |0.4.1 |pyasn1の拡張モジュール。|
|cachetools |5.5.0 |認証情報のキャッシュ管理。|
~
***MeCab導入方法 [#l2d13af4]
-Mecab をインストールする
--Python に MeCab を pip した後に、PC本体にも入れる必要が...
https://github.com/ikegami-yukino/mecab/releases/tag/v0....
-パスを通しておく(システム環境変数の編集で変数Pathを編集...
-新規でmecab.exeがあるパスを追加する
C:\Program Files\MeCab\bin\
~
*** MeCab導入確認 [#g5535d54]
-下のMeCabテスト用のプログラムを実行して結果が出れば問題...
#ref(MeCab_test.ipynb,,MeCab_test.ipynb)
~
~
~
* 操作手順書 [#r6ce2bfa]
このドキュメントは、提供されたFlaskアプリケーションの操作...
本アプリケーションは、大きく分けて以下の4つの機能群から構...
- ''学生向け機能'': ログイン、履修状況の確認、協調フィル...
- ''教員向け機能'': 担当する授業のシラバス作成・登録
- ''汎用科目ページ機能'': 各科目の講義詳細や教材レビュー
- ''管理者向け機能'': データベースのメンテナンス
** 主なアルゴリズムの解説 [#nbf31627]
本システムで採用されている特徴的な3つのアルゴリズムについ...
*** 1. 協調フィルタリングによる科目推薦 [#f5d25f41]
- ''目的'': 学生一人ひとりの履修履歴に基づき、興味を持ち...
- ''解説'': 「あなたと履修科目の好みが似ている学生は、こ...
- ''関連コード (Recommend.py)''
#code(python){{
def get_correlation_coefficents(data_all_np, target_user_...
"""指定学生と他の全学生の類似度(相関係数)を計算"""
similarities = []
target = data_all_np[target_user_index]
for i, score in enumerate(data_all_np):
# ... (両者が評価済みの科目のみで相関係数を計算) ...
similarity = np.corrcoef(target[indices], score[i...
if not np.isnan(similarity):
similarities.append((i, similarity))
return sorted(similarities, key=lambda s: s[1], rever...
def rank_items(data_all_np, similarities, target_user_ind...
"""未履修科目の予測評価値を算出し、ランキング化する"""
rankings = []
# ... (未履修の各科目に対してループ) ...
for i in range(num_items):
if target[i] >= 0: # 履修済みはスキップ
continue
# 類似度の高い他の学生の評価を元に、予測値を計算
rankings.append((i, predict(data_all_np, similari...
return sorted(rankings, key=lambda r: r[1], reverse=T...
}}
*** 2. 機械学習によるキャリアベースの科目推薦 [#t8e3dc9a]
- ''目的'': 学生が希望する業種への就職に、どの科目の履修...
- ''解説'': これは「希望する業種に就職した先輩たちは、ど...
- ''関連コード (career_recommender.py)''
#code(python){{
def get_career_recommendations(target_industry, target_st...
# ... (データ準備) ...
# 1. 就職先データから、目標業種に行った学生(1)とそれ...
target_graduates = df_employment[df_employment['業種'...
y = X.index.isin(target_graduates).astype(int)
# 2. ロジスティック回帰モデルを定義し、訓練(fit)する
# L1正則化(penalty='l1')で、特に重要な科目の係数だけ...
model = LogisticRegression(class_weight='balanced', C...
model.fit(X, y)
# 3. 学習後の係数(model.coef_)を「重要度」として取り...
df_importance = pd.DataFrame({'科目名': X.columns, '...
df_importance_sorted = df_importance.sort_values('重...
# 4. 履修済み科目を除外して推薦リストを作成
recommendations = df_importance_sorted[~df_importance...
return "成功", recommendations.head(10)
}}
*** 3. レビューの信頼度スコアリング [#gb9e6445]
- ''目的'': 教材レビューの信頼性を多角的に評価し、やらせ...
- ''解説'': レビューの評価を単純な平均点にせず、以下の3つ...
-- ''1. 類似度 (Similarity)'': 他人のレビューのコピペや、...
-- ''2. 情報量 (Informative)'': レビューに具体性や有用な...
-- ''3. 集中性 (Concentration)'': 特定の短期間に不自然な...
- ''関連コード (Recommend.py)''
#code(python){{
def Credibility(S_score_norm, I_score_norm, C_score_norm,...
"""類似度・情報量・集中性の3つのスコアから最終的な信...
F_score = []
# ... (対象教材のレビューを取得) ...
# 3つのスコアを平均して、総合的な信頼性指標F_scoreを...
for i in range(len(index)):
F_score.append((S_score_norm[index[i]] + I_score_...
# ... (最終的なスコアを計算) ...
return F_cre_score, Ave_score
# レビュー投稿時に呼び出されるメイン処理
def _process_review(...):
# ... (レビューをファイルに保存) ...
# 信頼度計算に必要な各スコアを算出
all_reviews_df = _read_csv_with_fallback(review_filep...
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...
}}
---
** 学生向け機能 [#bc31bb50]
学生としてシステムを利用する際の操作手順です。
*** ログイン・ログアウト [#e6ec0d60]
登録済みのアカウントでシステムにアクセスします。
- ''操作手順 (ログイン)''
-- 1. トップページ (''/top'') にアクセスします。
~&ref(top.png,nolink,800x);
-- 2. ''学籍番号'' と ''パスワード'' を入力し、「ログイン...
-- 3. 認証が成功すると、メインページ (''/index'') へ遷移...
~&ref(index.png,nolink,800x);
- ''操作手順 (ログアウト)''
-- 1. ページ上部にある「ログアウト」ボタンをクリックしま...
-- 2. セッションが破棄され、トップページ (''/top'') へ遷...
*** 履修状況確認と科目推薦 (メインページ) [#qe2cc390]
ログイン後に表示されるメインページで、自身の履修状況や推...
- ''画面説明 (''/index'')''
~&ref(index.png,nolink,800x);
-- ''履修状況'': 自身のこれまでの履修科目と成績評価(◎, ▲...
-- ''推薦科目'': 以下のロジックに基づいて推薦された科目が...
--- ''協調フィルタリング'': 履修傾向が類似する他の学生の...
--- ''卒業要件'': 卒業に必要な単位が不足している区分があ...
~&ref(cmd_index.png,nolink,800x);
-- 各推薦科目のリンクをクリックすると、後述の ''科目トッ...
*** キャリアベースの科目推薦 [#o21d15f0]
希望する進路(業種)に基づいて、履修すべき科目の推薦を受...
- ''操作手順''
-- 1. メインページなどから「キャリア推薦」ページ (''/care...
~&ref(career.png,nolink,800x);
-- 2. プルダウンメニューから、興味のある ''業種'' を選択...
~&ref(career_pull.png,nolink,800x);
-- 3. 「推薦を表示」などのボタンをクリックします。
-- 4. 過去のキャリアデータから学習を開始、利用者の履修済...
~&ref(cmd_career.png,nolink,800x);
-- 5. ページ内に、推薦された科目がリストとして表示されま...
~&ref(career_list.png,nolink,800x);
** 教員向け機能 (シラバス作成) [#t03b9ed0]
教員が担当科目のシラバスを作成し、システムに登録する手順...
*** 1. シラバス情報入力 [#bd3fb1ef]
- ''操作手順''
-- 1. トップページ (''/top'') にアクセスします。
~&ref(top_teacher.png,nolink,800x);
-- 2. 教員を選択した状態で''教員ID'' と ''パスワード'' を...
-- 3. 認証が成功すると、シラバス作成ページ (''/subject'')...
~&ref(subject.png,nolink,800x);
-- 4. 担当科目選択ページ (''/subject'') で、自分が作成し...
~&ref(subject_select.png,nolink,800x);
-- 5. シラバスに必要な各種項目(英語科目名、科目区分、授...
-- 6. 全ての入力が終わったら、「作成」や「プレビュー」ボ...
*** 2. プレビューと保存 [#uc864b63]
- ''操作手順''
-- 1. シラバスプレビューページ (''/result'') に、入力内容...
~&ref(result.png,nolink,800x);
-- 2. 内容に問題がなければ、「保存」ボタンをクリックしま...
--3. シラバス全体がHTMLファイルとしてサーバーに保存され、...
--- ''保存先'': ''app/templates/<科目URL名>/<科目URL名>_C...
--- ''保存先'': ''app/templates/<科目URL名>/<科目URL名>_C...
~&ref(cmd_result.png,nolink,800x);
** 汎用科目ページ機能 [#ff99ae2a]
学生が推薦された科目や履修中の科目について、詳細情報を確...
*** 科目トップページ [#n6ba88d5]
各科目のポータルとなるページです。
- ''アクセス方法''
-- メインページ (''/index'') の推薦科目リストから科目名を...
~&ref(index.png,nolink,800x);
- ''画面説明 (''/kamoku/<科目名>'')''
~&ref(kamoku.png,nolink,800x);
-- ''講義一覧'': 第1回から第15回までの講義内容へのリンク...
-- ''シラバス表示'': 教員によってカスタムシラバスが作成さ...
*** 各回講義ページとレビュー投稿 [#t613dd41]
- ''操作手順''
-- 1. 科目トップページから、閲覧したい回の講義リンクをク...
-- 2. ページには、その回の ''講義タイトル'' や、参考とな...
~&ref(kyouzai.png,nolink,800x);
-- 3. 各教材の下にあるフォームから、5段階評価とコメントを...
~&ref(kyouzai_score.png,nolink,800x);
-- 4. レビューを投稿すると、教材の信頼度スコアが再計算さ...
~&ref(kyouzai_result.png,nolink,800x);
** 管理者向け機能 [#j1649cee]
システムのデータベースを直接管理するための機能です。アク...
*** 管理トップページ [#oaf284c2]
- ''アクセス方法'': URL ''/admin'' を直接入力します。
~&ref(url_admin.png,nolink,800x);
- ''画面説明''
~&ref(admin.png,nolink,800x);
-- ''テーブル一覧'': ''StudentData.db'' 内の全テーブル名...
-- ''CSVアップロード'': CSVファイルを選択し、データを格納...
~&ref(table_add.png,nolink,800x);
-- ''テーブル削除'': テーブル名を指定して、データベースか...
~&ref(table_delete.png,nolink,800x);
*** テーブル閲覧・編集・削除 [#va0d6c1a]
- ''操作手順''
~&ref(table.png,nolink,800x);
-- 1. 管理トップページ (''/admin'') でテーブル名をクリッ...
-- 2. 各行の右側にある ''「編集」'' ボタンをクリックする...
~&ref(edit.png,nolink,800x);
-- 3. 各行の右側にある ''「削除」'' ボタンをクリックする...
-- 4. 編集・削除処理後は、元のテーブル閲覧ページにリダイ...
*数値実験1:協調フィルタリングによる科目推薦の動作検証 [...
**目的 [#bcf9e4e6]
-本システムにベース機能として実装されている、一般的な協調...
~
**準備 [#j559bdb1]
プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山...
|扱うデータ|用途|ファイル名|ファイルの場所|
|実験用ファイル| | | |
|計算モジュール|科目推薦の計算関数群|Recommend.py|test1/|
|実験用データ|学生の成績データ|grades.csv|test1/|
|実験実行ファイル|実験の実行と結果のグラフ化|experiment1_...
|実験実行ファイル|データ生成|generate_dataset.py|test1/|
|実験結果|データ数と精度の関係を示すグラフ|accuracy_compa...
~
**実験内容 [#d93e47c5]
-ホールドアウト法を用いる。~
各学生の履修履歴の20%を「正解データ」として隠し、残りの80...
~
**実験手順 [#k7938f51]
**実験結果 [#j6e9fb4b]
#ref(数値実験_実験手順_004.png,nolink,800x);
#ref(accuracy_comparison_graph.png,nolink,800x);
-グラフから、学習データの学生数が増えるにつれて精度が安定...
**考察 [#lb203ba7]
~
~
~
*数値実験2:レビュー信頼度スコアの有効性検証 [#w89cd5f1]
**目的 [#s279e405]
-教材の質を測る上で、単純な平均評価点だけでなく、レビュー...
~
**準備 [#i9ed2952]
プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山...
|扱うデータ|用途|ファイル名|ファイルの場所|
|実験用ファイル| | | |
|計算モジュール|レビュー信頼度の計算関数群|Recommend.py|t...
|実験用データ|教材のマスターデータ|materials.csv|test2/|
|実験用データ|教材へのレビューデータ|reviews.csv|test2/|
|実験実行ファイル|実験の実行と結果の要約・グラフ化|experi...
|実験結果|「平均評価」と「最終信頼度スコア」の比較グラフ|...
~
**実験内容 [#pc46e999]
-「コピーレビュー」や「短文レビュー」といった、意図的に質...
-各レビューに類似度(S)・情報量(I)・集中度(C)の3つの観点で...
-質の低いレビューが投稿された教材の信頼度スコアが、元の平...
~
**実験手順 [#y216e87f]
**実験結果 [#t2199a54]
&ref(数値実験_実験手順_006.png,nolink,800x);
&ref(report_graph.png,nolink,800x);
-類似度スコアと情報量スコアは、それぞれコピーレビューと短...
~
**考察 [#udcc29bc]
~
~
~
*数値実験3: [#z93e971c]
**目的 [#p490da6b]
-本研究で主軸として提案する、機械学習を用いたキャリアパス...
**準備 [#fcb504c6]
プログラムは iie.lab.tpu.2526のドライブより 学生/25_o4山...
|扱うデータ|用途|ファイル名|ファイルの場所|
|実験用ファイル| | | |
|計算モジュール|キャリアパス推薦の計算ロジック|career_rec...
|データ生成|実験用の大規模なダミーデータを生成|create_tes...
|就職先データ|生成された卒業生の就職先リスト|employment_d...
|履修状況データ|全学生の履修状況の0/1行列|all_grades_matr...
~
**実験内容 [#k78c60bf]
-「IT業界に進む学生はネットワーク関連科目を履修しがち」の...
-L1正則化ロジスティック回帰モデルを使用。全卒業生の「履修...
-モデルが算出した「重要度スコア」が、データに仕込んだ傾向...
**実験手順 [#e63483c0]
**実験結果 [#ydc86d74]
#ref(test3データ生成.png,nolink,800x);
#ref(test3科目推薦.png,nolink,800x);
**考察 [#g1455153]
*その他 [#td0f2a65]
**その他 [#sbb67277]
ページ名: