nakamura196 commited on
Commit
b4bbd8c
·
1 Parent(s): 9c91424

feat: add vols

Browse files
Files changed (3) hide show
  1. README.md +1 -1
  2. app.py +41 -14
  3. requirements.txt +1 -1
README.md CHANGED
@@ -4,7 +4,7 @@ emoji: 👁
4
  colorFrom: purple
5
  colorTo: indigo
6
  sdk: gradio
7
- sdk_version: 5.13.1
8
  app_file: app.py
9
  pinned: false
10
  ---
 
4
  colorFrom: purple
5
  colorTo: indigo
6
  sdk: gradio
7
+ sdk_version: 4.44.1
8
  app_file: app.py
9
  pinned: false
10
  ---
app.py CHANGED
@@ -7,33 +7,60 @@ data_path = "./data.json"
7
  with open(data_path, "r") as f:
8
  documents_data = json.load(f)
9
 
10
- def search_similar_texts(query, top_n=5):
11
- # クエリをベクトル化
12
  results = []
13
-
14
  for doc in documents_data:
15
-
16
- score = ratio(query, doc["text"])
17
- results.append({
18
- "vol": doc["vol"],
19
- "page": doc["page"],
20
- "score": score,
21
- "text": doc["text"]
22
- })
23
- # print(score)
24
 
25
  results.sort(key=lambda x: x["score"], reverse=True)
 
 
 
 
 
 
26
 
27
- return results[:top_n]
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
  # Gradioインターフェースの作成
30
  demo = gr.Interface(
31
  fn=search_similar_texts,
32
  inputs=[
33
  gr.Textbox(label="検索テキスト", placeholder="検索したいテキストを入力してください"),
 
 
 
 
 
 
34
  gr.Slider(minimum=1, maximum=10, value=5, step=1, label="表示件数")
35
  ],
36
- outputs=gr.JSON(),
 
 
 
37
  title="校異源氏物語 類似テキスト検索",
38
  description="テキストを入力すると、校異源氏物語の類似する箇所を検索します。",
39
  allow_flagging="never",
 
7
  with open(data_path, "r") as f:
8
  documents_data = json.load(f)
9
 
10
+ def search_similar_texts(query, selected_vols, top_n=5):
 
11
  results = []
12
+
13
  for doc in documents_data:
14
+ # 選択された巻のみを検索対象とする
15
+ if not selected_vols or str(doc["vol"]) in selected_vols:
16
+ score = ratio(query, doc["text"])
17
+ results.append({
18
+ "vol": doc["vol"],
19
+ "page": doc["page"],
20
+ "score": score,
21
+ "text": doc["text"]
22
+ })
23
 
24
  results.sort(key=lambda x: x["score"], reverse=True)
25
+ top_results = results[:top_n] # top_nで指定された件数だけを取得
26
+
27
+ '''
28
+ # top_n件の結果における巻ごとの件数をカウント
29
+ vol_counts = {}
30
+ total_results = len(top_results)
31
 
32
+ for doc in top_results:
33
+ vol_str = f"巻{doc['vol']}"
34
+ vol_counts[vol_str] = vol_counts.get(vol_str, 0) + 1
35
+
36
+ # 巻ごとの割合を計算
37
+ vol_percentages = {
38
+ vol: f"{(count/total_results*100):.1f}%"
39
+ for vol, count in vol_counts.items()
40
+ } if total_results > 0 else {}
41
+
42
+ return [top_results, vol_percentages] # リストとして返す
43
+ '''
44
+
45
+ return [top_results] # , vol_percentages
46
 
47
  # Gradioインターフェースの作成
48
  demo = gr.Interface(
49
  fn=search_similar_texts,
50
  inputs=[
51
  gr.Textbox(label="検索テキスト", placeholder="検索したいテキストを入力してください"),
52
+ gr.Dropdown(
53
+ choices=[str(i) for i in range(1, 55)],
54
+ label="巻",
55
+ multiselect=True,
56
+ value=[],
57
+ ),
58
  gr.Slider(minimum=1, maximum=10, value=5, step=1, label="表示件数")
59
  ],
60
+ outputs=[
61
+ gr.JSON(),
62
+ # gr.JSON(label="巻ごとの割合")
63
+ ],
64
  title="校異源氏物語 類似テキスト検索",
65
  description="テキストを入力すると、校異源氏物語の類似する箇所を検索します。",
66
  allow_flagging="never",
requirements.txt CHANGED
@@ -1,2 +1,2 @@
1
  levenshtein
2
- gradio
 
1
  levenshtein
2
+ gradio==4.44.1