Korean Space Error Corrector
soyspacing μ νκ΅μ΄ λμ΄μ°κΈ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν ν΄λ¦¬μ€ν± μκ³ λ¦¬μ¦μ μ 곡ν©λλ€. Conditional Random Field μ λΉκ΅νμ¬ κ°λ²Όμ΄ λͺ¨λΈ μ¬μ΄μ¦μ λΉ λ₯Έ νμ΅μ΄ κ°λ₯ν©λλ€.
μ΄ μκ³ λ¦¬μ¦μ ScatterLabμ sungguλ, Emily Yunha Shinλκ³Ό ν¨κ» μμ νμμ΅λλ€.
- version = 0.1.23μ λ―Έμμ±λ CRF κΈ°λ° λμ΄μ°κΈ° μκ³ λ¦¬μ¦μ ν¬ν¨νκ³ μμμ΅λλ€.
- version = 1.0.0λΆν° λ―Έμμ±λ CRFλ₯Ό μ§μ°κ³ ν΄λ¦¬μ€ν± κΈ°λ° μκ³ λ¦¬μ¦λ§ μ 곡ν©λλ€.
νμ¬ (1.0.15) λ²μ μμλ νμ΅λ λͺ¨λΈμ μ 곡νμ§ μμ΅λλ€. λμ΄μ°κΈ° κ΅μ μ μ΄λ₯Ό μ μ©ν λ°μ΄ν°μ μ λ¨μ΄ λΆν¬μ λ°λΌ μ ν©ν λͺ¨λΈμ΄ λ€λ¦ λλ€. μ΄λ¬ν μ΄μ λ‘ soyspacing μμλ νμ΅λ λͺ¨λΈ λμ , νμ΅μ΄ κ°λ₯ν ν¨ν€μ§λ§μ μ 곡ν©λλ€. μ¬μ©λ²μ μλμ usage μ, λ μμΈν μ€λͺ μ slides λ₯Ό μ°Έκ³ νμΈμ.
Setup
pip install soyspacing
Require
- Python >= 3.4 (not tested in Python 2)
- numpy >= 1.12.1
Usage
νμ΅μ ν μ€νΈ νμΌ κ²½λ‘λ₯Ό μ λ ₯ν©λλ€.
from soyspacing.countbase import CountSpace
corpus_fname = '../demo_model/134963_norm.txt'
model = CountSpace()
model.train(corpus_fname)
νμ΅λ λͺ¨λΈμ μ μ₯μ μν΄μλ λͺ¨λΈ νμΌ κ²½λ‘λ₯Ό μ λ ₯ν©λλ€. JSON νμμΌλ‘ λͺ¨λΈμ μ μ₯ν μ μμ΅λλ€. μ μ₯λ νμΌ μ©λμ κ³ λ €νλ©° JSON νμμ΄ μλ λ save / load κ° μ’ λ μ½μ΅λλ€.
model.save_model(model_fname, json_format=False)
νμ΅λ λͺ¨λΈμ λΆλ¬μ¬ μ μμ΅λλ€.
model = CountSpace()
model.load_model(another_model_fname, json_format=False)
λμ΄μ°κΈ° κ΅μ μ μν ν¨λ¬λ©ν°λ λ€ κ°μ§κ° μμ΅λλ€. μ΄λ₯Ό μ λ ₯νμ§ μμΌλ©΄ default value λ₯Ό μ΄μ©ν©λλ€.
verbose=False
mc = 10 # min_count
ft = 0.3 # force_abs_threshold
nt =-0.3 # nonspace_threshold
st = 0.3 # space_threshold
sent = 'μ΄κ±΄μ§μ§μ’μμν λΌλΌλλμ§μ§μ’μμν'
# with parameters
sent_corrected, tags = model.correct(
doc=sent,
verbose=verbose,
force_abs_threshold=ft,
nonspace_threshold=nt,
space_threshold=st,
min_count=mc)
# without parameters
sent_corrected, tags = model.correct(sent)
print(sent_corrected)
# μ΄κ±΄ μ§μ§ μ’μ μν λΌλΌλλμ§μ§ μ’μ μν
νΉμ λ¨μ΄, νΉμ μ΄μ μ μ λ€λ₯Ό λ°λμ λκ±°λ λΆμ¬μ΄λ€λ κ·μΉμ΄ μλ€λ©΄ μ΄λ₯Ό μ μ©ν μ μμ΅λλ€. μλμ²λΌ μ΄μ κ³Ό μ΄μ μ, λ€μ λν λμ΄μ°κΈ° νκ·Έκ° ν¬ν¨λμ΄ μλ ν
μ€νΈ νμΌμ μ€λΉν©λλ€. μ§μ§
λΌλ λ¨μ΄μ μ, λ€λ λ°λμ λμ΄μ°κΈ°λ₯Ό νκ³ , μ§
κ³Ό μ§
μ¬μ΄μλ λ°λμ λΆμ¬μ°κΈ°λ₯Ό νλ€λ μλ―Έμ
λλ€. μ΄ νμΌμ rules.txt
μ μ μ₯ν©λλ€.
κ°λ Ή 101
μ§μ§ 101
κ°κ²λ 1001
κ°κ²λ‘ 1001
κ°κ²μΌ 1001
μμ νμΌμ RuleDict
λ‘ μ½μ΄μ¨ λ€, μμ μμλ₯Ό λ€μ μ μ©νλ©΄ λΌλΌλλμ μ§μ§ μ¬μ΄κ° λμ΄μ‘μμ νμΈν μ μμ΅λλ€.
from soyspacing.countbase import RuleDict
rule_dict = RuleDict('filepath')
sent_corrected, tags = model.correct(sent, rules=rule_dict)
print(sent_corrected)
# μ΄κ±΄ μ§μ§ μ’μ μν λΌλΌλλ μ§μ§ μ’μ μν
λ μμΈν λ΄μ©μ Jupyter notebook νμ tutorial νμΌμ΄ ./tutorials/μ μμ΅λλ€.
κ΄λ ¨ μ°κ΅¬ / μ μλ λͺ¨λΈμ μ리 / CRF μμ μ±λ₯ λΉκ΅ / κ·Έ μΈ νμ© νμ λ΄μ©μ΄ ν¬ν¨λμ΄ μλ presentation νμΌμ΄ μ 곡λ©λλ€.
CRF based space error correction
pycrfsuite λ₯Ό μ΄μ©νμ¬ λμ΄μ°κΈ°λ₯Ό κ΅μ νλ ν¨ν€μ§μ λλ€. pycrfsuite μ λ°μ΄ν°λ₯Ό μ λ ₯νκΈ° νΈνλλ‘ Template, Transformer μ utils λ₯Ό ν¨κ» μ 곡ν©λλ€.