• Stars
    star
    189
  • Rank 197,973 (Top 5 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created almost 8 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Chooses correct Korean particle morphs for arbitrary words.

토씨

Build Status Coverage Status README in English

'토씨'λŠ” '쑰사'의 순우리말 μ΄λ¦„μž…λ‹ˆλ‹€. 토씨 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μž„μ˜μ˜ 단어 뒀에 올 κ°€μž₯ μžμ—°μŠ€λŸ¬μš΄ ν•œκ΅­μ–΄ 쑰사 ν˜•νƒœλ₯Ό κ³¨λΌμ€λ‹ˆλ‹€.

μ„€μΉ˜

$ pip install tossi

μ‚¬μš©λ²•

>>> import tossi
>>> tossi.postfix(u'집', u'(으)둜')
μ§‘μœΌλ‘œ
>>> tossi.postfix(u'말', u'μœΌλ‘œλŠ”')
λ§λ‘œλŠ”
>>> tossi.postfix(u'λŒ€ν•œλ―Όκ΅­', u'은(λŠ”)')
λŒ€ν•œλ―Όκ΅­μ€
>>> tossi.postfix(u'민주곡화ꡭ', u'λ‹€')
민주곡화ꡭ이닀

μžμ—°μŠ€λŸ¬μš΄ 쑰사 선택

의, 도, 만~, 에~, 께~, 뿐~, ν•˜~, 보닀~, 밖에~, 같이~, λΆ€ν„°~, κΉŒμ§€~, λ§ˆμ €~, μ‘°μ°¨~, 마λƒ₯~, 처럼~, 컀녕~μ—λŠ” μ–΄λ–€ 단어가 μ•žμ„œλ„ ν˜•νƒœκ°€ λ³€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€:

λ‚˜μ˜€μ˜, λͺ¨λ¦¬μ•ˆμ˜, ν‚€ν™€μ˜, λ‚˜μ˜€λ„, λͺ¨λ¦¬μ•ˆλ„, 킀홀도

반면 은(λŠ”), 이(κ°€), 을(λ₯Ό), κ³Ό(와)~λŠ” μ•žμ„  λ‹¨μ–΄μ˜ λ§ˆμ§€λ§‰ 음절의 λ°›μΉ¨ μœ λ¬΄μ— 따라 ν˜•νƒœκ°€ λ‹¬λΌμ§‘λ‹ˆλ‹€:

λ‚˜μ˜€λŠ”, λͺ¨λ¦¬μ•ˆμ€, 킀홀은

(으)둜~도 λΉ„μŠ·ν•œ κ·œμΉ™μ„ λ”°λ₯΄μ§€λ§Œ μ•žμ„  받침이 ㄹ일 κ²½μš°μ—” 받침이 μ—†λŠ” 것과 κ°™κ²Œ μ·¨κΈ‰ν•©λ‹ˆλ‹€:

λ‚˜μ˜€λ‘œ, λͺ¨λ¦¬μ•ˆμœΌλ‘œ, ν‚€ν™€λ‘œ

μ„œμˆ κ²© 쑰사 (이)λ‹€λŠ” μ–΄λ―Έκ°€ ν™œμš©λ˜μ–΄ λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ λ³€ν˜•λ  수 μžˆμŠ΅λ‹ˆλ‹€:

λ‚˜μ˜€μ§€λ§Œ, λͺ¨λ¦¬μ•ˆμ΄μ§€λ§Œ, ν‚€ν™€μ΄μ—μš”, λ‚˜μ˜€μ˜ˆμš”

ν† μ”¨λŠ” κ°€μž₯ μžμ—°μŠ€λŸ¬μš΄ 쑰사 ν˜•νƒœλ₯Ό μ„ νƒν•©λ‹ˆλ‹€. λ§Œμ•½ μ–΄λ–€ ν˜•νƒœκ°€ μžμ—°μŠ€λŸ¬μš΄μ§€ μ•Œ 수 없을 λ•Œμ—λŠ” 은(λŠ”), (으)둜처럼 λͺ¨λ“  ν˜•νƒœλ₯Ό λ³‘κΈ°ν•©λ‹ˆλ‹€:

>>> tossi.postfix(u'벽돌', u'으둜')
벽돌둜
>>> tossi.postfix(u'짚', u'으둜')
짚으둜
>>> tossi.postfix(u'黃金', u'으둜')
黃金(으)둜

단어가 숫자둜 λλ‚˜λ”λΌλ„ μžμ—°μŠ€λŸ¬μš΄ 쑰사 ν˜•νƒœκ°€ μ„ νƒλ©λ‹ˆλ‹€:

>>> tossi.postfix(u'레벨 10', u'이')
레벨 10이
>>> tossi.postfix(u'레벨 999', u'이')
레벨 999κ°€

κ΄„ν˜Έ 속 λ‹¨μ–΄λ‚˜ ꡬ두점은 쑰사 ν˜•νƒœλ₯Ό 선택할 λ•Œ μ°Έκ³ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€:

>>> tossi.postfix(u'λ‚˜λ­‡κ°€μ§€(λ§Œλ ™)', u'을')
λ‚˜λ­‡κ°€μ§€(λ§Œλ ™)λ₯Ό

병기 μˆœμ„œ

μ‘°μ‚¬μ˜ ν˜•νƒœλ₯Ό λͺ¨λ‘ 병기해야할 λ•Œ 병기할 μˆœμ„œλ₯Ό κ³ λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. κ°€λ Ή λŒ€λΆ€λΆ„μ˜ μΈμžκ°€ 일본어 단어일 κ²½μš°μ—” 단어가 λͺ¨μŒμœΌλ‘œ 끝날 ν™•λ₯ μ΄ λ†’μŠ΅λ‹ˆλ‹€. 이 경우 κΈ°λ³Έν˜•μΈ 은(λŠ”) μŠ€νƒ€μΌλ³΄λ‹¨ λŠ”(은) μŠ€νƒ€μΌμ΄ 더 μžμ—°μŠ€λŸ¬μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€:

>>> tolerance_style = tossi.parse_tolerance_style(u'λŠ”(은)')
>>> tossi.postfix(u'さくら', u'이', tolerance_style=tolerance_style)
さくら가(이)

은(λŠ”), (은)λŠ”, λŠ”(은), (λŠ”)은 λ„€ 가지 μŠ€νƒ€μΌ 쀑 ν”„λ‘œμ νŠΈμ— λ§žλŠ” 것을 κ³ λ₯΄μ„Έμš”.

API

tossi.pick(word, morph) -> str

word에 μžμ—°μŠ€λŸ½κ²Œ λ’€λ”°λ₯΄λŠ” 쑰사 ν˜•νƒœλ₯Ό κ΅¬ν•©λ‹ˆλ‹€.

>>> tossi.pick(u'토씨', '은')
λŠ”
>>> tossi.pick(u'우리말', '은')
은

tossi.postfix(word, morph) -> str

단어와 쑰사λ₯Ό μžμ—°μŠ€λŸ½κ²Œ μ—°κ²°ν•©λ‹ˆλ‹€.

>>> tossi.postfix(u'토씨', '은')
ν† μ”¨λŠ”
>>> tossi.postfix(u'우리말', '은')
μš°λ¦¬λ§μ€

tossi.parse(morph) -> Particle

λ¬Έμžμ—΄λ‘œ 된 쑰사 ν‘œκΈ°λ‘œλΆ€ν„° 쑰사 객체λ₯Ό μ–»μŠ΅λ‹ˆλ‹€.

>>> tossi.parse(u'으둜')
<Particle: u'(으)둜'>
>>> tossi.parse(u'(은)λŠ”')
<Particle: u'은(λŠ”)'>
>>> tossi.parse(u'이면')
<Particle: u'(이)'>

Particle[word[:morph]] -> str

word에 λ’€λ”°λ₯΄λŠ” ν‘œκΈ°λ₯Ό κ΅¬ν•©λ‹ˆλ‹€.

>>> Eun = tossi.parse(u'은')
>>> Eun[u'라면']
은
>>> Eun[u'라볢이']
λŠ”

morphλ₯Ό μ§€μ •ν•΄μ„œ 어미에 λ³€ν™”λ₯Ό 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

>>> Euro = tossi.parse(u'으둜')
>>> Euro[u'라면':u'으둠']
으둠
>>> Euro[u'라볢이':u'으둠']
λ‘ 

λ§Œλ“ μ΄μ™€ μ‚¬μš©κΆŒ

λ„₯슨 μ™“ μŠ€νŠœλ””μ˜€μ˜ 이ν₯μ„­κ³Ό 김찬웅이 λ§Œλ“€μ—ˆκ³  제3쑰항을 ν¬ν•¨ν•˜λŠ” BSD ν—ˆκ°€μ„œλ₯Ό μ±„νƒν–ˆμŠ΅λ‹ˆλ‹€.