📑

学習指導要領コードの推薦アプリの試作

2024/04/16に公開

概要

学習指導要領コードの推薦アプリを作成しましたので、その紹介です。以下のhuggingfaceのspaceでお試しいただけます。学習指導要領LODを利用しました。

https://huggingface.co/spaces/nakamura196/jp-cos

使い方

テキストフォームに任意のテキストを入力します。「学校種別」は任意項目です。

結果が画面右側に表示されます。

サンプルも用意していますので、お試しください。NHK for Schoolの情報を利用しています。

仕組み

以下の記事を参考に、学習指導要領のテキストをベクトル化し、同様にベクトル化した質問文と類似する学習指導要領を返却します。

https://zenn.dev/yumefuku/articles/llm-langchain-rag

上記の記事の通り、ベクトル検索ライブラリには「FAISS」、埋め込みモデルには「multilingual-e5-large」を使用しています。

https://huggingface.co/intfloat/multilingual-e5-large

推論部分のソースコードは以下でご確認いただけます。

https://huggingface.co/spaces/nakamura196/jp-cos/blob/main/app.py

工夫点

「学校種別」などを用いたフィルタリング

「学校種別」が指定された場合、langchainのFAISS.similarity_search_with_scoreによる類似度検索において、フィルタリングを行っています。

具体的には、以下のfilterを用いています。

    metadata = {}
    if grade:
        metadata["学校種別"] = grade
    
    try:
        docs_and_scores = index.similarity_search_with_score(input_text, filter=metadata)
    except Exception as e:
        print(f"Error during search: {e}")
        return []

今後

「教科等」による絞り込み

「学校種別」による絞り込みに加えて、「教科等(理科、社会、数学など)」も追加予定です。

推薦精度の評価

学習指導要領コードがすでに付与されているNHK for Schoolのコンテンツを対象に、推薦精度の評価を行う予定です。

「学校種別」の追加

現在は、以下の7つの学校種別のみを使用しています。他の学習指導要領も今後追加予定です。

  • UpperSecondary/2018
  • UpperSecondaryDeptSNES/2019
  • Elementary/2017
  • ElementaryAndLowerSecondaryDeptSNES/2017
  • LowerSecondary/2017
  • Kindergarten/2017
  • KindergartenDeptSNES/2017

まとめ

学習指導要領LODの開発者の方々に感謝いたします。

Discussion