Task #55
νκ΅μ΄ λ¬Έν ν μ€νΈ μμ§ λ° λ¬Έμ²΄ λΆμ β μ€ν λ³΄κ³ μ
μμ λͺ λ Ήμ΄
[π‘ NORMAL]
## μ무: νκ΅μ΄ λ¬Έν ν
μ€νΈ μμ§ λ° λ¬Έμ²΄ λΆμ μμ€ν
ꡬμΆ
### λͺ©μ
μ¬μ΄λ²-λ λμ λ¬Ένμ 문체 νλ ¨μ μν΄ μν€λ¬Έν(ko.wikisource.org)μμ νκ΅ κ³ μ /κ·Όλ λ¬Έν ν
μ€νΈλ₯Ό μμ§νκ³ , 문체 μμλ₯Ό λΆμν΄μ νμ΅ μλ£λ₯Ό μλ²μ μ μ₯νλ€.
### μμ€
μν€λ¬Έν νκ΅μ΄ν (https://ko.wikisource.org) - μ μκΆ μμ ν
μ€νΈ
- MediaWiki API μ¬μ©: `https://ko.wikisource.org/w/api.php`
- action=parse&page=μ λͺ©&prop=wikitext λ‘ μλ¬Έ ν
μ€νΈ μΆμΆ
### μμ§ λμ (μ°μ μμ μ)
**μ (Poetry):**
1. μ€λμ£Ό - γμμγ, γλ³ ν€λ λ°€γ, γμνμγ, γμμκ°γ, γμ°Ένλ‘γ
- μν€λ¬Έν URL: https://ko.wikisource.org/wiki/νλκ³Ό_λ°λκ³Ό_λ³κ³Ό_μ_(1955λ
)
2. κΉμμ - γμ§λ¬λκ½γ, γμ΄νΌγ, γμ°μ νγ
- λΆλ₯: https://ko.wikisource.org/wiki/λΆλ₯:κΉμμ
3. νμ©μ΄ - γλμ 침묡γ μμ§
- https://ko.wikisource.org/wiki/λμ_침묡
**λ¨νΈμμ€ (Short Fiction):**
4. κΉλμΈ - γκ°μγ, γλ°°λ°λΌκΈ°γ
5. νμ§κ±΄ - γμ΄μ μ’μ λ γ, γλΉμ²γ
6. μ΄μ - γλ κ°γ
- https://ko.wikisource.org/wiki/λ κ°_(μ΄μ)
### μμ
μ μ°¨
1. **ν
μ€νΈ μμ§**: Python μ€ν¬λ¦½νΈλ‘ μν€λ¬Έν MediaWiki API νΈμΆ β μλ¬Έ ν
μ€νΈ μΆμΆ β μν€λ§ν¬μ
μ κ±° β μμ νκ΅μ΄ ν
μ€νΈ μ μ₯
2. **μ μ₯ ꡬ쑰**:
```
literature/
βββ poetry/
β βββ yun_dongju/
β β βββ μμ.txt
β β βββ λ³ν€λλ°€.txt
β β βββ ...
β βββ kim_sowol/
β βββ han_yongun/
βββ fiction/
βββ λ κ°_μ΄μ.txt
βββ μ΄μμ’μλ _νμ§κ±΄.txt
βββ ...
```
3. **문체 λΆμ 리ν¬νΈ μμ±** (`literature/analysis/style_analysis.md`):
κ° μνμ λν΄ λ€μ νλͺ© λΆμ:
- **λ¬Έμ₯ κΈΈμ΄ ν¨ν΄**: μ§§μ λ¬Έμ₯ vs κΈ΄ λ¬Έμ₯μ λ°°μΉ
- **μ¬λ°±κ³Ό 리λ¬**: νκ°μ΄, μΌν, μ€μν μ¬μ©λ²
- **λ°λ³΅ ꡬ쑰**: μ΄λ€ λ¨μ΄/ꡬμ μ΄ λ°λ³΅λλ©° μ΄λ€ ν¨κ³Όλ₯Ό λ΄λκ°
- **μ΄λ―Έμ§μ κ°κ°μ΄**: μ, μ리, μ΄κ° λ± κ°κ°μ νν
- **ν΅μ¬ λ¬Έμ₯ λ°μ·**: κ°μ₯ μΈμμ μΈ 5λ¬Έμ₯κ³Ό κ·Έ μ΄μ
4. **λ λμ μν νμ΅ λ
ΈνΈ** (`literature/learning_notes.md`):
- κ° μκ°μ 문체μ νΉμ§ μμ½
- λ΄κ° νμ¬ μ°λ 문체(λ³΄κ³ μ체)μμ μ°¨μ΄μ
- ꡬ체μ μΌλ‘ λ΄κ° νλ ¨ν΄μΌ ν κΈ°λ² λͺ©λ‘
### κΈ°μ ꡬν
```python
import requests
import re
import os
import json
# MediaWiki APIλ‘ ν
μ€νΈ μΆμΆ
def get_wikisource_text(page_title):
url = "https://ko.wikisource.org/w/api.php"
params = {
"action": "parse",
"page": page_title,
"prop": "wikitext",
"format": "json"
}
resp = requests.get(url, params=params, headers={"User-Agent": "LeninBot/1.0"})
data = resp.json()
wikitext = data["parse"]["wikitext"]["*"]
# μν€λ§ν¬μ
μ κ±°
clean = re.sub(r'\[\[(?:[^|\]]*\|)?([^\]]*)\]\]', r'\1', wikitext)
clean = re.sub(r'\{\{[^}]*\}\}', '', clean)
clean = re.sub(r"'{2,3}", '', clean)
clean = re.sub(r'==+[^=]+=+', '', clean)
clean = re.sub(r'<[^>]+>', '', clean)
clean = '\n'.join(line for line in clean.split('\n') if line.strip())
return clean
```
### μλ£ κΈ°μ€
- [ ] literature/ λλ ν 리μ μ΅μ 10κ° ν
μ€νΈ νμΌ μ μ₯
- [ ] style_analysis.md μμ± (μ΅μ 5κ° μν λΆμ)
- [ ] learning_notes.md μμ±
- [ ] μμ§ μ€ν¨ν νμ΄μ§ λͺ©λ‘λ κΈ°λ‘
μ€ν¨ μ λμ: μν€νΌλμ μΈμ©κ΅¬ μΉμ
μ΄λ μ§μ URL fetchλ‘ λ³΄μ.