Spaces:
Sleeping
Sleeping
| # 1. νμν λꡬ νκΊΌλ²μ μ€μΉ | |
| import gradio as gr | |
| from sentence_transformers import SentenceTransformer, util | |
| # 2. λͺ¨λΈκ³Ό λ°μ΄ν° μ€λΉ (λ± ν λ²λ§ μ€νλ¨) | |
| model = SentenceTransformer('jhgan/ko-sroberta-multitask') | |
| physics_kb = [ | |
| "μλμ± μ΄λ‘ : μ곡κ°μ κ΄μ°°μμ λ°λΌ μλμ μ΄λ©° μ€λ ₯μ μν΄ νμ΄μ§ μ μμ΅λλ€.", | |
| "μμ μν: 미립μμ μΈκ³μμλ κ΄μΈ‘ μ κΉμ§ μ¬λ¬ μνκ° μ€μ²©λμ΄ μ‘΄μ¬ν©λλ€.", | |
| "μ΄μν μ 2λ²μΉ: κ³ λ¦½κ³μ μνΈλ‘νΌ(무μ§μλ)λ μκ°μ΄ νλ₯Όμλ‘ νμ μ¦κ°ν©λλ€.", | |
| "λ΄ν΄μ μ 3λ²μΉ: λͺ¨λ μμ©μλ ν¬κΈ°κ° κ°κ³ λ°©ν₯μ΄ λ°λμΈ λ°μμ©μ΄ μ‘΄μ¬ν©λλ€.", | |
| "κ°μλ: λ¨μ μκ°λΉ 물체μ μλκ° λ³νλ μ λλ₯Ό λνλ΄λ 물리λμ λλ€.", | |
| "κ°μ μ’νκ³: κ°μλ μ΄λμ νλ κ΄μ°°μκ° κΈ°μ€μ΄ λλ μ’νκ³λ‘, κ΄μ±λ ₯μ΄ λνλ©λλ€.", | |
| "κ°μλ: μμ΄λ νλ λ¬Όμ²΄κ° λ¨μ μκ°λΉ νμ νλ κ°λλ₯Ό μλ―Έν©λλ€.", | |
| "κ°μ 무λ¬: λ κ° μ΄μμ νλμ΄ κ²Ήμ³μ§λ©΄μ 보κ°λκ±°λ μμλμ΄ λνλλ λ°κ³ μ΄λμ΄ λ¬΄λ¬μ λλ€.", | |
| "κ°μ μ 체: μΈλΆ μ κΈ°μ₯μ΄ μμ΄λ λΆκ·Ήμ μ μ§νλ©°, μ κΈ°μ₯μ μν΄ λΆκ·Ή λ°©ν₯μ΄ λ°λλ λ¬Όμ§μ λλ€.", | |
| "κ²μ κΈ°: μ μ κΈ° μ λ νμμ μ΄μ©νμ¬ λ¬Όμ²΄μ λμ μ¬λΆλ₯Ό μμλ΄λ μ₯μΉμ λλ€.", | |
| "곡λͺ μ§λμ: λ¬Όμ²΄κ° κ°μ§ κ³ μ μ§λμμ μΈλΆ νμ μ§λμκ° μΌμΉνμ¬ μ§νμ΄ μ΅λκ° λλ μ§μ μ λλ€.", | |
| "곡μ : ν μ²μ²΄κ° λ€λ₯Έ μ²μ²΄μ μ£Όμλ₯Ό μΌμ ν κΆ€λλ₯Ό λ°λΌ λλ μ΄λμ λλ€.", | |
| "κ΄μμ(κ΄μ): λΉμ μ μλ‘ λ³΄μμ λμ μ΅μ λ¨μλ‘, μλμ§λ₯Ό κ°μ§ μ μμ λλ€.", | |
| "κ΄μ ν¨κ³Ό: κΈμμ λΉμ λΉμΆμμ λ μ μκ° νμ΄λμ€λ νμμΌλ‘ λΉμ μ μμ±μ μ¦λͺ ν©λλ€.", | |
| "ꡬμ¬λ ₯: μμ΄λ νλ 물체λ₯Ό μμ μ€μ¬ λ°©ν₯μΌλ‘ λμ΄λΉκΈ°λ νμ λλ€.", | |
| "κΈ°μ λ ₯: νλ‘μ μ λ₯λ₯Ό νλ₯΄κ² νλ μλλ ₯μ΄ λλ μ μμ λλ€.", | |
| "λ¨μ§μ: μ€μ λ§€λ¬λ¦° μΆκ° μ€λ ₯μ μν΄ μΌμ ν μ£ΌκΈ°λ₯Ό κ°μ§κ³ μ볡 μ΄λμ νλ μ₯μΉμ λλ€.", | |
| "λμ 체: μ κΈ°λ₯Ό λ κ³ μλ 물체λ₯Ό μλ―Έν©λλ€.", | |
| "λνλ¬ ν¨κ³Ό: νμκ³Ό κ΄μ°°μμ μλμ μ΄λμΌλ‘ μΈν΄ μ리λ λΉμ μ§λμκ° λ³νλ νμμ λλ€.", | |
| "λλ¦Όν(ν ν¬): 물체λ₯Ό νμ μν€λ €λ νμ μμ©μΌλ‘, νμ ν¬κΈ°μ νμ κΈΈμ΄μ λΉλ‘ν©λλ€.", | |
| "λλΈλ‘μ΄ν: μμ§μ΄λ λͺ¨λ μ μκ° νλμ μ±μ§μ κ°λλ€λ μ΄λ‘ μμμ νλμ λλ€.", | |
| "λ±κ°μλ μ΄λ: κ°μλκ° μκ°μ λ°λΌ λ³νμ§ μκ³ μΌμ ν μ΄λμ λλ€.", | |
| "λΌλμ: μμ λ°μ§λ¦κ³Ό νΈμ κΈΈμ΄κ° κ°μ λμ κ°λλ₯Ό 1λ‘ μ μνλ λ¨μμ λλ€.", | |
| "λ μΈ λ²μΉ: μ μκΈ° μ λ μ μ λ μ λ₯λ μκΈ°μ₯μ λ³νλ₯Ό λ°©ν΄νλ λ°©ν₯μΌλ‘ νλ¦ λλ€.", | |
| "λ§μ°°λ ₯: 물체μ μ΄λμ λ°©ν΄νλ νμΌλ‘ μ μ΄λ©΄μ μ±μ§κ³Ό λλ₯΄λ νμ λΉλ‘ν©λλ€.", | |
| "무μ μΈμ(RFID): μ νλ₯Ό μ΄μ©νμ¬ λ¨Ό 거리μμ μ 보λ₯Ό μΈμνλ κΈ°μ μ λλ€.", | |
| "λ¬Όμ§ν: μ μμ κ°μ μ μκ° λνλ΄λ νλμ μ±μ§μ λλ€.", | |
| "λ°μ΄μ΄μ€ μ μ: λ°λ체 μμκ° μλνλλ‘ μΈλΆμμ κ±Έμ΄μ£Όλ μ μμ λλ€.", | |
| "λ°λ체: λ체μ λΆλ체μ μ€κ° μ±μ§μ κ°μ§λ©°, μ¨λλ λΆμλ¬Όμ μν΄ μ κΈ° μ λμ±μ΄ λ³ν©λλ€.", | |
| "λ°μ κΈ°: μνμ μλμ§λ₯Ό μ μκΈ° μ λ λ²μΉμ μ΄μ©ν΄ μ κΈ° μλμ§λ‘ λ°κΎΈλ μ₯μΉμ λλ€.", | |
| "λ³΄μ΄ μμ λͺ¨ν: μ μκ° νΉμ κΆ€λμμλ§ μλμ§ λ°©μΆ μμ΄ νμ νλ€λ μμ λͺ¨λΈμ λλ€.", | |
| "λΆνμ μ± μ리: μ μμ μμΉμ μ΄λλμ λμμ μ ννκ² μΈ‘μ ν μ μλ€λ μμ μνμ μ리μ λλ€.", | |
| "λΈλν: μ€λ ₯μ΄ κ·Ήλ¨μ μΌλ‘ κ°ν΄ λΉμ‘°μ°¨ λΉ μ Έλκ° μ μλ μ²μ²΄μ λλ€.", | |
| "λΉμ΄: λ¬Όμ§ 1gμ μ¨λλ₯Ό 1λ μ¬λ¦¬λ λ° νμν μ΄λμ λλ€.", | |
| "λΉμ κ΅΄μ : λΉμ΄ λ€λ₯Έ λ§€μ§λ‘ λ€μ΄κ° λ μλ μ°¨μ΄λ‘ μΈν΄ μ§ν λ°©ν₯μ΄ κΊΎμ΄λ νμμ λλ€.", | |
| "μλμ± μ΄λ‘ : μ곡κ°μ΄ κ΄μ°°μμ μνλ μ€λ ₯μ λ°λΌ μλμ μ΄λΌλ μμΈμνμΈμ μ΄λ‘ μ λλ€.", | |
| "μλ³΄μ± μ리: λΉμ΄λ μ μκ° μ μμ±κ³Ό νλμ±μ λμμ κ°μ§λ©° μν©μ λ°λΌ ν μͺ½μ΄ λνλλ€λ μ리μ λλ€.", | |
| "μλΉ μ λ ₯: μ κΈ° μ₯μΉκ° λ¨μ μκ° λμ μ¬μ©νλ μ κΈ° μλμ§μ μμ λλ€.", | |
| "μλ λ Έμ΄λ: μν΅νμΌλ‘ μ΄μ΄νκ² κ°μ μ½μΌλ‘, μ λ₯κ° νλ₯΄λ©΄ λ΄λΆμμ μΌμ ν μκΈ°μ₯μ΄ μκΉλλ€.", | |
| "μ‘μ : λ°μ μμμ λ§λ μ κΈ°λ₯Ό μμ©κ°κΉμ§ 보λ΄λ κ³Όμ μ λλ€.", | |
| "μμ§ νλ ₯: λ©΄μ΄ λ¬Όμ²΄λ₯Ό μμ§μΌλ‘ λ λ°μΉλ νμ λλ€.", | |
| "μλ’°λ©κ±°μ κ³ μμ΄: μμ μνμ μ€μ²© μνλ₯Ό μ€λͺ νκΈ° μν μ λͺ ν μ¬κ³ μ€νμ λλ€.", | |
| "μ€μΉΌλΌλ: λ°©ν₯ μμ΄ ν¬κΈ°λ§μΌλ‘ λνλ΄λ 물리λ(μ§λ, μκ° λ±)μ λλ€.", | |
| "μ곡κ°: μκ°κ³Ό 곡κ°μ λΆλ¦¬ν μ μλ νλμ 4μ°¨μμ μ°μμ²΄λ‘ λ³΄λ κ°λ μ λλ€.", | |
| "μ΄μν μ 1λ²μΉ: μλμ§λ μμ±λκ±°λ μλ©Έλμ§ μκ³ ννλ§ λ°λλ€λ μλμ§ λ³΄μ‘΄ λ²μΉμ λλ€.", | |
| "μ΄μν μ 2λ²μΉ: κ³ λ¦½κ³μ μνΈλ‘νΌλ νμ μ¦κ°νλ λ°©ν₯μΌλ‘ μΌμ΄λλ€λ λ²μΉμ λλ€.", | |
| "μμ μ€ν: λΉμ κ°μ νμμ ν΅ν΄ λΉμ΄ νλμμ μ¦λͺ ν μ€νμ λλ€. ", | |
| "μ΄μ λ²μΉ: μ λ₯μ μΈκΈ°λ μ μμ λΉλ‘νκ³ μ νμ λ°λΉλ‘νλ€λ λ²μΉμ λλ€.", | |
| "μμ¬λ ₯: μμ΄λ νλ κ΄μ°°μκ° λλΌλ, μ€μ¬ λ°μΌλ‘ λκ°λ €λ κ°μμ νμ λλ€.", | |
| "μ λ κΈ°μ λ ₯: μκΈ°μ₯μ λ³νμ μν΄ μ½μΌμ λ°μνλ μ μμ λλ€.", | |
| "μ μ λΆκ·Ή: μ μ°μ²΄μ μ κΈ°μ₯μ κ°ν λ μμ λ΄ μ νκ° μ¬λ°°μΉλμ΄ μ κΈ°λ₯Ό λ λ νμμ λλ€.", | |
| "μ΄μ€ μ¬λ¦Ώ μ€ν: μ μλ λΉμ΄ λ κ°μ νμ μ§λ κ°μ 무λ¬λ₯Ό λ§λλ μ€νμ λλ€.", | |
| "μΌ-μ΄λ μλμ§ μ 리: 물체μ ν΄μ€ μΌμ μμ 물체μ μ΄λ μλμ§ λ³νλκ³Ό κ°λ€λ μ 리μ λλ€.", | |
| "μκΈ°λ ₯: μμμ΄λ μ λ₯κ° νλ₯΄λ λμ μ¬μ΄μμ μμ©νλ νμ λλ€.", | |
| "μ κΈ°μ₯: μ νκ° μ£Όμ 곡κ°μ μ κΈ°λ ₯μ λ―ΈμΉλ 곡κ°μ λλ€.", | |
| "μ μκΈ° μ λ: μκΈ°μ₯μ λ³νκ° μ λ₯λ₯Ό λ°μμν€λ νμμ λλ€.", | |
| "μ μ κΈ° μ λ: λμ 체λ₯Ό κ°κΉμ΄ ν λ 물체 λ΄λΆμ μ νκ° μ΄λνμ¬ μ κΈ°λ₯Ό λ λ νμμ λλ€.", | |
| "μ€λ ₯ κ°μλ: μ§κ΅¬ μ€λ ₯μ μν΄ μμ λν νλ λ¬Όμ²΄κ° μ»λ κ°μλ(μ½ 9.8m/sΒ²)μ λλ€.", | |
| "μΌνλ¬ μ 1λ²μΉ(νμ κΆ€λ λ²μΉ): νμ±μ νμμ ν μ΄μ μΌλ‘ νλ νμ κΆ€λλ₯Ό λλλ€. ", | |
| "ν°λλ§ ν¨κ³Ό: μ μκ° μλμ§κ° λΆμ‘±ν΄λ μμ μνμ νλ₯ λ‘ μ₯λ²½μ ν΅κ³Όνλ νμμ λλ€.", | |
| "ν¨λ¬λ°μ΄ λ²μΉ: μκΈ°μ₯μ λ³νκ° ν΄μλ‘ λ ν° μ λ κΈ°μ λ ₯μ΄ λ°μνλ€λ λ²μΉμ λλ€.", | |
| "ν€λ₯΄μΈ μ€ν: μ€νμ ν΅ν΄ μ μκΈ°νμ μ‘΄μ¬λ₯Ό μ²μμΌλ‘ μ¦λͺ ν μ°κ΅¬μ λλ€." | |
| ] | |
| encoded_kb = model.encode(physics_kb) | |
| # 3. μ§λ¬Έμ λ΅νλ ν΅μ¬ κΈ°λ₯ (μ νλ λνμ λ²μ !) | |
| def physics_bot(user_question): | |
| # μ μ²λ¦¬: μ§λ¬Έμμ 곡백, λ¬Όμν, λ§μΉ¨νλ₯Ό λ€ μ§μλ²λ¦½λλ€. | |
| clean_q = user_question.replace(" ", "").replace("?", "").replace(".", "") | |
| # [κ°λ ₯ μ‘°μΉ] λ¨μ΄κ° ν€μλμ 'μμ ν' μΌμΉνλμ§ λ¨Όμ νμΈ | |
| for item in physics_kb: | |
| # μ½λ‘ (:) μλΆλΆμ΄ ν€μλμ λλ€. | |
| keyword = item.split(":")[0].strip() | |
| clean_k = keyword.replace(" ", "") | |
| # μ¬μ©μκ° μ λ ₯ν κ² ν€μλλ λκ°κ±°λ, ν€μλκ° μ§λ¬Έμ ν¬ν¨λμ΄ μμΌλ©΄ λ°λ‘ μΆλ ₯! | |
| if clean_q == clean_k or clean_q == clean_k + "λ" or clean_q == clean_k + "μ΄λμΌ": | |
| return item | |
| # λ§μ½ μμμ λͺ» μ°ΎμΌλ©΄, κ·Έλ AI λͺ¨λΈ(SentenceTransformer)μ΄ λΉμ·ν¨μ κ³μ°ν©λλ€. | |
| query_vec = model.encode(user_question) | |
| scores = util.cos_sim(query_vec, encoded_kb)[0] | |
| best_idx = scores.argmax() | |
| return physics_kb[best_idx] | |
| # 4. β λ§λ²μ ꡬκ°: μΉ νλ©΄ λ§λ€κΈ°β | |
| demo = gr.Interface( | |
| fn=physics_bot, | |
| inputs=gr.Textbox(label="물리μ λν΄ κΆκΈν κ²μ λ¬Όμ΄λ³΄μΈμ!", placeholder="μ: μνΈλ‘νΌκ° λμΌ?"), | |
| outputs=gr.Textbox(label="AI 물리νμμ λ΅λ³"), | |
| title="λλ§μ AI 물리 μ¬μ ", | |
| description="Hugging Face λͺ¨λΈμ μ΄μ©ν΄ 물리 μ§μμ μλ €μ£Όλ μ±λ΄μ λλ€." | |
| ) | |
| # μ€ν! (λμ€λ URLμ ν΄λ¦νλ©΄ μΉνμ΄μ§κ° λΉλλ€) | |
| demo.launch(share=True) |