Task #59

KG Entity ์„ค๋ช… ์ƒ์„ฑ โ€” ๋ฐฐ์น˜ 3 ์‹คํ–‰ ๋ณด๊ณ ์„œ

์ž‘์—… ๋ช…๋ น์–ด
[๐ŸŸก NORMAL] ## KG Entity ์„ค๋ช… ์ƒ์„ฑ โ€” Task #57 ํ›„์† (๋ฐฐ์น˜ 3, ๋‚˜๋จธ์ง€ 6๊ฐœ) ### ๋ฐฐ๊ฒฝ Task #57์—์„œ 20๊ฐœ ์™„๋ฃŒ, ์˜ˆ์‚ฐ ์†Œ์ง„์œผ๋กœ ๋ฐฐ์น˜ 3 (6๊ฐœ) ๋ฏธ์ฒ˜๋ฆฌ. ### ๋ฏธ์ฒ˜๋ฆฌ ์—”ํ‹ฐํ‹ฐ (๋ฐฐ์น˜ 3, 21-26๋ฒˆ) Task #57 ๋ณด๊ณ ์„œ ๊ธฐ์ค€: - 21. No Kings Protests - 22. Quantum Computing - 23. Saudi military base - 24. Ultra-imperialism - 25. household debt - 26. labor environment - (+) myocardial infarction ๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ โ€” KG์—์„œ summary ์—†๋Š” Entity ๋…ธ๋“œ ์ „์ˆ˜ ํ™•์ธ ํ›„ ์ฒ˜๋ฆฌ ### ์‹คํ–‰ ์ง€์นจ **์ง„๋‹จ ์—†์ด ๋ฐ”๋กœ ์‹คํ–‰.** 1. Neo4j ์—ฐ๊ฒฐ: bolt://localhost:7687, ์ธ์ฆ ์ •๋ณด๋Š” `/root/.env` ํŒŒ์ผ์—์„œ load (NEO4J_PASSWORD) 2. Ollama: http://localhost:11434, ๋ชจ๋ธ `qwen3.5:4b`, options={"think": false} 3. summary๊ฐ€ ์—†๋Š” Entity ๋…ธ๋“œ ์ „์ˆ˜ ์กฐํšŒ: ```cypher MATCH (e:Entity) WHERE e.summary IS NULL OR e.summary = '' RETURN e.name, e.uuid ``` 4. ๊ฐ ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•ด Ollama๋กœ ํ•œ๊ตญ์–ด 2-3๋ฌธ์žฅ ์„ค๋ช… ์ƒ์„ฑ ํ›„ Neo4j `summary` ํ•„๋“œ ์—…๋ฐ์ดํŠธ 5. ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ” ๋ณด๊ณ  ### ์ฃผ์˜์‚ฌํ•ญ - `python-dotenv` import ๊ธˆ์ง€ โ€” `/root/.env` ํŒŒ์ผ ์ง์ ‘ ํŒŒ์‹ฑ: ```python env = {} with open('/root/.env') as f: for line in f: line = line.strip() if line and not line.startswith('#') and '=' in line: k, v = line.split('=', 1) env[k.strip()] = v.strip() ``` - `neo4j` ํŒจํ‚ค์ง€ ์‚ฌ์šฉ (pip install neo4j if needed) - Ollama API: POST http://localhost:11434/api/generate, payload: {"model":"qwen3.5:4b","prompt":"...","stream":false,"options":{"think":false}}