Task #57

KG Entity μ„€λͺ… 생성 β€” μ΅œμ’… λ³΄κ³ μ„œ

μž‘μ—… λͺ…λ Ήμ–΄
[🟑 NORMAL] ## KG Entity μ„€λͺ… 생성 β€” Task #56 후속 (μ‹€μ œ μ‹€ν–‰) ### λ°°κ²½ Task #56μ—μ„œ 진단 μ™„λ£Œλ¨: - Neo4j: Docker 둜컬 (bolt://localhost:7687), .envμ—μ„œ λΉ„λ°€λ²ˆν˜Έ λ‘œλ“œ - Ollama: qwen3.5:4b (think=False λͺ¨λ“œ) - summary μ—†λŠ” Entity λ…Έλ“œ: 26개 (US 쀑볡 6개 μ œμ™Έ) ### 처리 λŒ€μƒ μ—”ν‹°ν‹° (μ •ν™•ν•œ 이름) 1. Bulgaria (Location) 2. Circuit Breaker (Concept) 3. Class struggle (Concept) 4. Corporate Governance (Concept) 5. Democratic governance (Policy) 6. Foreign Investment (Concept) 7. Hanbok (Asset) 8. Hanji (Asset) 9. Historical materialism (Concept) 10. Iran-Israel war (Campaign) 11. Kazakh language (Concept) 12. Minab (Location) 13. Minister of Planning and Budget (Person) 14. No Kings Protests (Campaign) 15. President Jer (Person) 16. Quantum Computing (Asset) 17. Russian language (Concept) 18. Saudi military base (Location) 19. Ultra-imperialism (Concept) 20. cyber domains (Concept) 21. household debt (Concept) 22. labor environment (Concept) 23. like-minded nations (Organization) 24. liquefied natural gas (LNG) (Asset) 25. military domains (Concept) 26. myocardial infarction (Concept) ### μ‹€ν–‰ 방법 **Step 1**: .env νŒŒμΌμ—μ„œ Neo4j λΉ„λ°€λ²ˆν˜Έ λ‘œλ“œ ```python from dotenv import load_dotenv import os load_dotenv() NEO4J_URI = os.getenv("NEO4J_URI", "bolt://localhost:7687") NEO4J_USER = os.getenv("NEO4J_USER", "neo4j") NEO4J_PASSWORD = os.getenv("NEO4J_PASSWORD") ``` **Step 2**: Ollama둜 각 μ—”ν‹°ν‹° μ„€λͺ… 생성 - URL: http://localhost:11434/api/chat - λͺ¨λΈ: qwen3.5:4b - think: False (μ€‘μš”! /api/chatμ—μ„œ options에 λ„£μ§€ 말고 μ΅œμƒμœ„μ— "think": false) - μ–Έμ–΄: ν•œκ΅­μ–΄, 2-3λ¬Έμž₯ **Step 3**: Neo4j에 summary ν•„λ“œ μ—…λ°μ΄νŠΈ ```cypher MATCH (n:Entity {name: $name}) SET n.summary = $summary ``` **Step 4**: κ²°κ³Όλ₯Ό temp_dev/kg_enricher_κ²°κ³Ό.json에 μ €μž₯ ### μ£Όμ˜μ‚¬ν•­ - US 쀑볡 λ…Έλ“œ(6개)λŠ” κ±΄λ“œλ¦¬μ§€ 말 것 - think: False νŒŒλΌλ―Έν„°λŠ” λ°˜λ“œμ‹œ μ΅œμƒμœ„ λ ˆλ²¨μ— μœ„μΉ˜ (options μ•ˆμ΄ μ•„λ‹˜) - Ollama ν”„λ‘¬ν”„νŠΈ: "λ‹€μŒ κ°œλ…/엔티티에 λŒ€ν•΄ ν•œκ΅­μ–΄λ‘œ 2-3λ¬Έμž₯의 κ°„κ²°ν•œ μ„€λͺ…을 μž‘μ„±ν•΄μ€˜. 지정학적/역사적 λ§₯락을 포함할 것. μ—”ν‹°ν‹°: {name} (νƒ€μž…: {label})" - 각 μ—”ν‹°ν‹° 처리 ν›„ μ¦‰μ‹œ Neo4j μ—…λ°μ΄νŠΈ (배치 μ•„λ‹Œ μ‹€μ‹œκ°„) - μ‹€νŒ¨ν•œ 것듀은 μ—λŸ¬ λ‘œκ·Έμ— 기둝 ### μ™„λ£Œ 쑰건 26개 μ—”ν‹°ν‹° λͺ¨λ‘ summary ν•„λ“œκ°€ μ±„μ›Œμ§„ μƒνƒœλ‘œ Neo4j에 μ €μž₯됨