Aoi785 commited on
Commit
ff525f5
Β·
verified Β·
1 Parent(s): aa58fb8

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +35 -51
  2. requirements.txt +2 -2
app.py CHANGED
@@ -1,60 +1,44 @@
1
 
2
  import gradio as gr
3
- from kiwipiepy import Kiwi
4
  from transformers import pipeline
5
-
6
- # ν˜•νƒœμ†Œ 뢄석기
7
- kiwi = Kiwi()
8
-
9
- # λ²ˆμ—­κΈ° μ„€μ •
10
- translators = {
11
- "en": pipeline("translation", model="Helsinki-NLP/opus-mt-ko-en"),
12
- "zh": pipeline("translation", model="Helsinki-NLP/opus-mt-ko-zh"),
13
- "vi": pipeline("translation", model="Helsinki-NLP/opus-mt-ko-vi")
14
- }
15
-
16
- # λ¬Έμž₯ λ‚˜λˆ„κΈ°
17
- def smart_split(text):
18
- text = text.replace("λ‹€.", "λ‹€.β˜…").replace("μš”.", "μš”.β˜…").replace("λ‹ˆλ‹€.", "λ‹ˆλ‹€.β˜…")
19
- return [s.strip() for s in text.split("β˜…") if s.strip()]
20
-
21
- # 핡심 μš”μ•½ 생성
22
- def disaster_style_summary(text):
23
- parts = smart_split(text)
24
- keywords = []
25
-
26
- for part in parts:
27
- tokens = kiwi.tokenize(part)
28
- nouns = [t.form for t in tokens if t.tag.startswith("N") and len(t.form) > 1]
29
- verbs = [t.form for t in tokens if t.tag.startswith("V") and len(t.form) > 1]
30
- if any(v in part for v in ["λ°”λžλ‹ˆλ‹€", "주의", "자제", "λŒ€ν”Ό", "착용"]):
31
- if nouns:
32
- keywords.append(nouns[0] + " " + (verbs[0] if verbs else "주의"))
33
- elif nouns:
34
- keywords.append(nouns[0])
35
- seen = []
36
- clean = [k for k in keywords if not (k in seen or seen.append(k))]
37
- return ". ".join(clean[:5])
38
-
39
- # λ²ˆμ—­
40
- def translate(text, lang):
41
- if lang == "ko":
42
- return text
43
- try:
44
- result = translators[lang](text, max_length=100)
45
- return result[0]["translation_text"]
46
- except Exception as e:
47
- return f"[λ²ˆμ—­ 였λ₯˜] {str(e)}"
48
-
49
- # μš”μ•½ + λ²ˆμ—­ ν•¨μˆ˜
50
  def summarize_and_translate(text, lang):
51
  if not text.strip():
52
  return "μž…λ ₯된 λ‚΄μš©μ΄ μ—†μŠ΅λ‹ˆλ‹€.", ""
53
- summary = disaster_style_summary(text)
54
- translated = translate(summary, lang)
55
- return summary, translated
 
 
 
 
 
 
56
 
57
- # μΈν„°νŽ˜μ΄μŠ€
58
  iface = gr.Interface(
59
  fn=summarize_and_translate,
60
  inputs=[
@@ -65,7 +49,7 @@ iface = gr.Interface(
65
  gr.Textbox(label="πŸ“Œ 핡심 μš”μ•½"),
66
  gr.Textbox(label="🌍 λ²ˆμ—­ μš”μ•½")
67
  ],
68
- title="πŸ“’ DISASTER SNAP v4"
69
  )
70
 
71
  iface.launch()
 
1
 
2
  import gradio as gr
 
3
  from transformers import pipeline
4
+ import re
5
+
6
+ # λ²ˆμ—­κΈ° μ΄ˆκΈ°ν™” ν•¨μˆ˜ (μ–Έμ–΄ 선택 μ‹œ λ‘œλ”©)
7
+ def load_translator(lang_code):
8
+ model_map = {
9
+ "en": "Helsinki-NLP/opus-mt-ko-en",
10
+ "zh": "Helsinki-NLP/opus-mt-ko-zh",
11
+ "vi": "Helsinki-NLP/opus-mt-ko-vi"
12
+ }
13
+ if lang_code == "ko":
14
+ return None
15
+ return pipeline("translation", model=model_map[lang_code])
16
+
17
+ # κ·œμΉ™ 기반 μš”μ•½
18
+ def rule_based_summary(text):
19
+ key_phrases = re.findall(r"(폭염|호우|μ§€μ§„|감염병|뢈|ν™”μž¬|λŒ€ν”Ό|주의|ν†΅μ œ|착용|자제|μ‹ κ³ |ν”Όν•΄).*?(λ°”λžλ‹ˆλ‹€|ν•˜μ„Έμš”|주의)", text)
20
+ flat = [" ".join(kp) for kp in key_phrases]
21
+ if not flat:
22
+ # μ€‘μš” λ¬Έμž₯이 μ—†λ‹€λ©΄ λͺ…사 μœ„μ£Ό μΆ”μΆœ
23
+ fallback = re.findall(r"[κ°€-힣]{2,}", text)
24
+ return ". ".join(fallback[:3]) if fallback else "μ€‘μš” λ¬Έμž₯ μ—†μŒ"
25
+ return ". ".join(flat[:3])
26
+
27
+ # 전체 처리 ν•¨μˆ˜
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  def summarize_and_translate(text, lang):
29
  if not text.strip():
30
  return "μž…λ ₯된 λ‚΄μš©μ΄ μ—†μŠ΅λ‹ˆλ‹€.", ""
31
+ summary = rule_based_summary(text)
32
+ if lang == "ko":
33
+ return summary, summary
34
+ try:
35
+ translator = load_translator(lang)
36
+ result = translator(summary, max_length=100)
37
+ return summary, result[0]["translation_text"]
38
+ except Exception as e:
39
+ return summary, f"[λ²ˆμ—­ 였λ₯˜] {str(e)}"
40
 
41
+ # Gradio UI
42
  iface = gr.Interface(
43
  fn=summarize_and_translate,
44
  inputs=[
 
49
  gr.Textbox(label="πŸ“Œ 핡심 μš”μ•½"),
50
  gr.Textbox(label="🌍 λ²ˆμ—­ μš”μ•½")
51
  ],
52
+ title="πŸ“’ DISASTER SNAP v5 Lite"
53
  )
54
 
55
  iface.launch()
requirements.txt CHANGED
@@ -1,5 +1,5 @@
 
1
  gradio
2
- kiwipiepy==0.16.1
3
  transformers
4
  sentencepiece
5
- torch
 
1
+
2
  gradio
 
3
  transformers
4
  sentencepiece
5
+ torch