nakamura196 commited on
Commit
8ebb769
1 Parent(s): 10c0e13

refactor: refactor

Browse files
Files changed (4) hide show
  1. README.md +1 -1
  2. app.py +51 -56
  3. jp-cos/.gitattributes +0 -35
  4. jp-cos/README.md +0 -13
README.md CHANGED
@@ -1,5 +1,5 @@
1
  ---
2
- title: 学習指導要領コード Predictor
3
  emoji: 🦀
4
  colorFrom: gray
5
  colorTo: red
 
1
  ---
2
+ title: Japanese Course of Study Predictor
3
  emoji: 🦀
4
  colorFrom: gray
5
  colorTo: red
app.py CHANGED
@@ -2,78 +2,73 @@ import gradio as gr
2
  from langchain_community.vectorstores.faiss import FAISS
3
  from langchain_community.embeddings.huggingface import HuggingFaceEmbeddings
4
 
5
- # インデックスのパス
6
- index_path = "./storage"
7
-
8
- # 埋め込みモデルの読み込み
9
- embedding_model = HuggingFaceEmbeddings(
10
- model_name="intfloat/multilingual-e5-large"
11
- )
12
-
13
- # インデックスの読み込み
14
- index = FAISS.load_local(
15
- folder_path=index_path,
16
- embeddings=embedding_model,
17
- allow_dangerous_deserialization=True
18
- )
19
-
20
- def search_documents(input_text, grade):
21
- output = []
22
 
 
 
 
 
23
  metadata = {}
24
-
25
  if grade:
26
  metadata["学校種別"] = grade
27
 
28
- docs_and_scores = index.similarity_search_with_score(
29
- input_text,
30
- filter=metadata
31
- )
32
-
33
 
34
- for idx, (doc, score) in enumerate(docs_and_scores):
35
- row = [
36
- f"<a href=\"https://w3id.org/jp-cos/{doc.metadata['id']}\" target=\"_blank\">{doc.metadata['id']}</a>",
37
  doc.metadata["学校種別"],
38
  doc.metadata["教科等"],
39
  round(float(score), 3),
40
  doc.page_content,
41
  ]
42
-
43
- output.append(row)
44
-
45
- return output
46
-
47
- # Components for input and output
48
- text_input = gr.Textbox(lines=2, placeholder="テキストを入力してください。", label="テキスト")
49
-
50
- schools = ['小学校', '特別支援学校小学部, 特別支援学校中学部', '幼稚園', '特別支援学校幼稚部', '中学校', '高等学校']
51
-
52
- metadata_selector = gr.CheckboxGroup(schools, label="学校種別")
53
- output_table = gr.Dataframe(
54
- headers=["学習指導要領コード", "学校種別", "教科等", "スコア", "テキスト"],
55
- datatype=["html", "str", "str", "str", "number"])
56
 
57
- # Interface
 
 
 
 
 
 
 
 
 
58
 
59
- examples=[
60
  ["空気鉄砲や水鉄砲、ペットボトルロケットなどのしくみを調べ、空気はおし縮められ体積が小さくなるにつれて反発する力が大きくなるが、水はおし縮められないことに気づく。", "小学校"],
61
  ["頼朝の妻・北条政子は、頼朝が築いた「ご恩と奉公」の絆で御家人たちを団結させ、復権をねらう朝廷に打ち勝った。鎌倉幕府の力をさらに強固なものにした政子の功績を知る。", "小学校"],
62
  ["胞子をつくるキノコ。胞子が菌糸を伸ばし新しいキノコを作る", "中学校"],
63
  ["今回のテーマは「鋭角の三角比の定義」。三角比は、高校で初めて扱う分野です。サイン、コサイン、タンジェント・・・これから何回かにわたり、この言葉を使って図形などの問題を解いていきますので、定義をばっちり覚えておきましょう。ミニコーナーでは、物語を書いたことで有名な、ある数学者を紹介します。\n出演:アイク ぬわら、酒井 蒼澄、藤本 ばんび、湯浅 弘一", "高等学校"]
64
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
 
66
- article = "<p style='text-align: center'><a href='https://jp-cos.github.io/' target='_blank'>学習指導要領LOD</a> | <a href='https://www.nhk.or.jp/school/' target='_blank'>NHK for School</a></p>"
67
-
68
- demo = gr.Interface(
69
- search_documents,
70
- [text_input, metadata_selector],
71
- output_table,
72
- title="学習指導要領コード Predictor",
73
- description="入力したテキストに類似するテキストを持つ学習指導要領コードを検索します。",
74
- article=article,
75
- examples=examples,
76
- allow_flagging=False,
77
- )
78
-
79
- demo.launch()
 
2
  from langchain_community.vectorstores.faiss import FAISS
3
  from langchain_community.embeddings.huggingface import HuggingFaceEmbeddings
4
 
5
+ def load_index():
6
+ index_path = "./storage"
7
+ embedding_model = HuggingFaceEmbeddings(model_name="intfloat/multilingual-e5-large")
8
+ return FAISS.load_local(
9
+ folder_path=index_path,
10
+ embeddings=embedding_model,
11
+ allow_dangerous_deserialization=True
12
+ )
 
 
 
 
 
 
 
 
 
13
 
14
+ def search_documents(input_text, grade, index):
15
+ if not input_text:
16
+ return []
17
+
18
  metadata = {}
 
19
  if grade:
20
  metadata["学校種別"] = grade
21
 
22
+ try:
23
+ docs_and_scores = index.similarity_search_with_score(input_text, filter=metadata)
24
+ except Exception as e:
25
+ print(f"Error during search: {e}")
26
+ return []
27
 
28
+ return [
29
+ [
30
+ f"<a href='https://w3id.org/jp-cos/{doc.metadata['id']}' target='_blank'>{doc.metadata['id']}</a>",
31
  doc.metadata["学校種別"],
32
  doc.metadata["教科等"],
33
  round(float(score), 3),
34
  doc.page_content,
35
  ]
36
+ for doc, score in docs_and_scores
37
+ ]
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
+ def setup_gradio_interface():
40
+ text_input = gr.Textbox(lines=2, placeholder="テキストを入力してください。", label="テキスト")
41
+ schools = ['小学校', '特別支援学校小学部', '特別支援学校中学部', '幼稚園', '特別支援学校幼稚部', '中学校', '高等学校']
42
+ metadata_selector = gr.CheckboxGroup(schools, label="学校種別")
43
+ output_table = gr.Dataframe(
44
+ headers=["学習指導要領コード", "学校種別", "教科等", "スコア", "テキスト"],
45
+ datatype=["html", "str", "str", "number", "str"]
46
+ )
47
+
48
+ index = load_index()
49
 
50
+ examples=[
51
  ["空気鉄砲や水鉄砲、ペットボトルロケットなどのしくみを調べ、空気はおし縮められ体積が小さくなるにつれて反発する力が大きくなるが、水はおし縮められないことに気づく。", "小学校"],
52
  ["頼朝の妻・北条政子は、頼朝が築いた「ご恩と奉公」の絆で御家人たちを団結させ、復権をねらう朝廷に打ち勝った。鎌倉幕府の力をさらに強固なものにした政子の功績を知る。", "小学校"],
53
  ["胞子をつくるキノコ。胞子が菌糸を伸ばし新しいキノコを作る", "中学校"],
54
  ["今回のテーマは「鋭角の三角比の定義」。三角比は、高校で初めて扱う分野です。サイン、コサイン、タンジェント・・・これから何回かにわたり、この言葉を使って図形などの問題を解いていきますので、定義をばっちり覚えておきましょう。ミニコーナーでは、物語を書いたことで有名な、ある数学者を紹介します。\n出演:アイク ぬわら、酒井 蒼澄、藤本 ばんび、湯浅 弘一", "高等学校"]
55
  ]
56
+
57
+ interface = gr.Interface(
58
+ fn=lambda text, grade: search_documents(text, grade, index),
59
+ inputs=[text_input, metadata_selector],
60
+ outputs=output_table,
61
+ title="Japanese Course of Study Predictor",
62
+ description="入力したテキストに類似するテキストを持つ学習指導要領コードを検索します。",
63
+ article=(
64
+ "<p style='text-align: center'><a href='https://jp-cos.github.io/' target='_blank'>"
65
+ "学習指導要領LOD</a> | <a href='https://www.nhk.or.jp/school/' target='_blank'>"
66
+ "NHK for School</a></p>"
67
+ ),
68
+ examples=examples,
69
+ allow_flagging="never"
70
+ )
71
+ return interface
72
 
73
+ demo = setup_gradio_interface()
74
+ demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
jp-cos/.gitattributes DELETED
@@ -1,35 +0,0 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
jp-cos/README.md DELETED
@@ -1,13 +0,0 @@
1
- ---
2
- title: Jp Cos
3
- emoji: 🦀
4
- colorFrom: gray
5
- colorTo: red
6
- sdk: gradio
7
- sdk_version: 4.26.0
8
- app_file: app.py
9
- pinned: false
10
- license: cc-by-4.0
11
- ---
12
-
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference