kr.bydelta:koalanlp-twitter_2.12

koalaNLP-twitter


Keywords
java, korean, parser, sentence, tagger, scala, kotlin
License
MIT

Documentation

KoalaNLP

Version MIT License API Doc

Build Status Code coverage Known Vulnerabilities

๋ถ„์„๊ธฐ๋ณ„ ํ’ˆ์‚ฌ๋น„๊ตํ‘œ nodeJS python scala

์†Œ๊ฐœ

KoalaNLP๋Š” ํ•œ๊ตญ์–ด ์ฒ˜๋ฆฌ์˜ ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€ํ–ฅํ•˜๋Š” Java/Kotlin/Scala Library์ž…๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ๋ฅผ ๋ชจ์•„, ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์•„๋ž˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. (์ •๋ ฌ์€ ๊ฐœ๋ฐœ๋‹จ์ฒด/๊ฐœ๋ฐœ์ž๋ช… ๊ตญ๋ฌธ ๊ฐ€๋‚˜๋‹ค์ˆœ)

์ฃผ1-1 Arirang ๋ถ„์„๊ธฐ์˜ ์ถœ๋ ฅ์„ ํ˜•ํƒœ์†Œ๋ถ„์„์— ์ ํ•ฉํ•˜๊ฒŒ ์กฐ๊ธˆ ๋‹ค๋“ฌ์—ˆ์œผ๋ฏ€๋กœ, ์›๋ณธ๊ณผ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ1-2 UTagger์˜ 2019-7 ๋ฒ„์ „๋„ ๊ณต๊ฐœ๋˜์–ด ์žˆ์ง€๋งŒ, ๋ฆฌ๋ˆ…์Šค ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์ด ๊ณต๊ฐœ๋˜์–ด์žˆ์ง€ ์•Š์•„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ถ„์„๊ธฐ์˜ ๊ฐœ์„ ์ด๋‚˜ ์ถ”๊ฐ€ ๋“ฑ์„ ํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด,

  • ๊ฐœ๋ฐœ์ด ์ง์ ‘ ๊ฐ€๋Šฅํ•˜์‹œ๋‹ค๋ฉด pull request๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”. ํ…Œ์ŠคํŠธ ํ›„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ด ์–ด๋ ต๋‹ค๋ฉด issue tracker์— ๋“ฑ๋กํ•ด์ฃผ์„ธ์š”. ๊ฒ€ํ†  ํ›„ ๋‹ต๋ณ€ํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŠน์ง•

KoalaNLP๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ณต์žกํ•œ ์„ค์ •์ด ํ•„์š”์—†๋Š” ํ…์ŠคํŠธ ๋ถ„์„:

    ๋ชจ๋ธ์€ ์ž๋™์œผ๋กœ Maven์œผ๋กœ ๋ฐฐํฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ๋ชจ๋ธ์„ ๋ณ„๋„๋กœ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  2. ์ฝ”๋“œ 2~3 ์ค„๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ:

    ๋ชจ๋ธ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ณต์žกํ•œ ์„ค์ • ๊ณผ์ •, ์ดˆ๊ธฐํ™” ๊ณผ์ •์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Dependency์— ์ถ”๊ฐ€ํ•˜๊ณ , ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋ถ„์„ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” 3์ค„์ด๋ฉด ๋๋‚ฉ๋‹ˆ๋‹ค.

  3. ๋ชจ๋ธ์— ์ƒ๊ด€ ์—†๋Š” ๋™์ผํ•œ ์ฝ”๋“œ, ๋™์ผํ•œ ๊ฒฐ๊ณผ:

    ๋ชจ๋ธ๋งˆ๋‹ค ์‹คํ–‰ ๋ฐฉ๋ฒ•, ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํ˜•ํƒœ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. KoalaNLP๋Š” ์ด๋ฅผ ์ •๋ถ€ ๋ฐ ๊ด€๊ณ„๊ธฐ๊ด€์˜ ํ‘œ์ค€์•ˆ์— ๋”ฐ๋ผ ํ‘œ์ค€ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋ธ์— ๋…๋ฆฝ์ ์œผ๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  4. Java, Kotlin, Scala, Python 3, NodeJS์—์„œ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์€ ์ฝ”๋“œ:

    KoalaNLP๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋””์„œ ๊ฐœ๋ฐœ์„ ํ•˜๋”๋ผ๋„ ํฌ๊ฒŒ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋ชจ๋“  ์ฝ”๋“œ๋Š” Kotlin์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Java๋‚˜ Scala์— ๋น„ํ•ด์„œ ์œ ์ง€ ๋ณด์ˆ˜์— ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • Kotlin์˜ ์‚ฌ์šฉ๋ฒ•์€ Try Kotlin (๊ณต์‹)์—์„œ ํ•™์Šตํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ฝ”๋“œ๋Š” Java์™€ Kotlin์—์„œ ์™„๋ฒฝํžˆ ์ƒํ˜ธ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ๋”๋ถˆ์–ด ๊ธฐ์กด 1.x์˜ Scala ์‚ฌ์šฉ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด์„œ koalanlp-scala๋ฅผ ํ†ตํ•ด Implicit ๋ณ€ํ™˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

License ์กฐํ•ญ

์ด ํ”„๋กœ์ ํŠธ ์ž์ฒด(KoalaNLP-core)์™€ ์ธํ„ฐํŽ˜์ด์Šค ํ†ตํ•ฉ์„ ์œ„ํ•œ ์ฝ”๋“œ๋Š” ์†Œ์Šค์ฝ”๋“œ์— ์ €์ž‘๊ถŒ ๊ท€์†์— ๋Œ€ํ•œ ๋ณ„๋„ ์ง€์‹œ์‚ฌํ•ญ์ด ์—†๋Š” ํ•œ v1.8.0๋ถ€ํ„ฐ MIT License์„ ๋”ฐ๋ฅด๋ฉฐ, ์›๋ณธ ๋ถ„์„๊ธฐ์˜ License์™€ ์ €์ž‘๊ถŒ์€ ๊ฐ ์ €์ž‘๊ถŒ์ž๊ฐ€ ์ง€์ •ํ•œ ๋ฐ”๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๋‹จ, GPL์˜ ์ €์ž‘๊ถŒ ์กฐํ•ญ์— ๋”ฐ๋ผ, GPL ํ•˜์—์„œ ์ด์šฉ์ด ํ—ˆ๊ฐ€๋˜๋Š” ํŒจํ‚ค์ง€๋“ค์˜ ์ €์ž‘๊ถŒ์€ ํ•ด๋‹น ์ €์ž‘๊ถŒ ๊ทœ์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

  • Hannanum ๋ฐ NLP_HUB: GPL v3
  • KKMA: GPL v2 (GPL v2๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š๋”๋ผ๋„, ์ƒ์—…์  ์ด์šฉ์‹œ ๋ณ„๋„ ํ˜‘์˜ ๊ฐ€๋Šฅ)
  • KOMORAN 3.x: Apache License 2.0
  • Open Korean Text: Apache License 2.0
  • UTagger: ๊ต์œก ๋ฐ ์—ฐ๊ตฌ์šฉ์œผ๋กœ ์‚ฌ์šฉ์‹œ ์ œํ•œ ์—†์Œ. ์ƒ์—…์šฉ์ธ ๊ฒฝ์šฐ ์šธ์‚ฐ๋Œ€์™€ ๊ธฐ์ˆ ์ด์ „ ๋“ฑ์˜ ์œ ๋ฃŒ ํ˜‘์•ฝ ํ•„์š”
  • SEunjeon: Apache License 2.0
  • ์•„๋ฆฌ๋ž‘: Apache License 2.0
  • RHINO: MIT (์ฐธ๊ณ : ์ด์ „ ๋ฒ„์ „์€ GPL v3)
  • Daon: ์ง€์ •๋œ ์กฐํ•ญ ์—†์Œ
  • ETRI: ๋ณ„๋„ API ํ‚ค ๋ฐœ๊ธ‰ ๋™์˜ ํ•„์š”
  • Khaiii: Apache License 2.0

Dependency ์ถ”๊ฐ€

Java ํŒจํ‚ค์ง€ ๋ชฉ๋ก

ํŒจํ‚ค์ง€๋ช… ์„ค๋ช… ๋ฒ„์ „ License (์›๋ณธ)
koalanlp-core ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ •์˜๊ฐ€ ๋“ฑ์žฌ๋œ ์ค‘์‹ฌ ๋ฌถ์Œ์ž…๋‹ˆ๋‹ค. Version MIT
koalanlp-scala Scala๋ฅผ ์œ„ํ•œ ํŽธ์˜๊ธฐ๋Šฅ (Implicit conversion ๋“ฑ) Version MIT
koalanlp-server HTTP ์„œ๋น„์Šค ๊ตฌ์„ฑ์„ ์œ„ํ•œ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. (2.x ๊ฐœ๋ฐœ์ค‘) MIT
koalanlp-kmr ์ฝ”๋ชจ๋ž€ Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ Version Apache 2.0
koalanlp-eunjeon ์€์ „ํ•œ๋‹ข Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ Version Apache 2.0
koalanlp-arirang ์•„๋ฆฌ๋ž‘ Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ 2-1 Version Apache 2.0
koalanlp-rhino RHINO Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ 2-1 Version MIT
koalanlp-daon Daon Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ 2-1 Version MIT(๋ณ„๋„ ์ง€์ • ์—†์Œ)
koalanlp-khaiii Kakao Khaiii Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ 2-3 Version Apache 2.0
koalanlp-utagger ์šธ์‚ฐ๋Œ€ UTagger Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ 2-4 Version ๊ต์œก/์—ฐ๊ตฌ์šฉ ๋ฌด๋ฃŒ, ์ƒ์—…์šฉ ๋ณ„๋„ํ˜‘์•ฝ
koalanlp-okt Open Korean Text Wrapper / ๋ถ„์„๋ฒ”์œ„: ๋ฌธ์žฅ๋ถ„๋ฆฌ, ํ˜•ํƒœ์†Œ Version Apache 2.0
koalanlp-kkma ๊ผฌ๊ผฌ๋งˆ Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ, ์˜์กด๊ตฌ๋ฌธ 2-1 Version GPL v2
koalanlp-hnn ํ•œ๋‚˜๋ˆ” Wrapper / ๋ถ„์„๋ฒ”์œ„: ๋ฌธ์žฅ๋ถ„๋ฆฌ, ํ˜•ํƒœ์†Œ, ๊ตฌ๋ฌธ๋ถ„์„, ์˜์กด๊ตฌ๋ฌธ 2-1 Version GPL v3
koalanlp-etri ETRI Open API Wrapper / ๋ถ„์„๋ฒ”์œ„: ํ˜•ํƒœ์†Œ, ๊ตฌ๋ฌธ๋ถ„์„, ์˜์กด๊ตฌ๋ฌธ, ๊ฐœ์ฒด๋ช…, ์˜๋ฏธ์—ญ Version MIT2-2

์ฃผ2-1 ๊ผฌ๊ผฌ๋งˆ, ํ•œ๋‚˜๋ˆ”, ์•„๋ฆฌ๋ž‘, RHINO ๋ถ„์„๊ธฐ๋Š” ํƒ€ ๋ถ„์„๊ธฐ์™€ ๋‹ฌ๋ฆฌ Maven repository์— ๋“ฑ์žฌ๋˜์–ด ์žˆ์ง€ ์•Š์•„, ์›๋ž˜๋Š” ์ˆ˜๋™์œผ๋กœ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ์ด ๋ถˆํŽธํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ์—, KoalaNLP๋Š” assembly ํ˜•ํƒœ๋กœ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐฐํฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํฌํ•จ๋œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, assembly classifier๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. "assembly" classifier๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด, ๊ฐ ๋ถ„์„๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋น ์ง„ ์ฑ„๋กœ dependency๊ฐ€ ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค.

์ฃผ2-2 ETRI์˜ ๊ฒฝ์šฐ Open API๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ๋ถ€๋ถ„์€ KoalaNLP์˜ License ์ •์ฑ…์— ๊ท€์†๋˜์ง€๋งŒ, Open API ์ ‘๊ทผ ์ดํ›„์˜ ์‚ฌ์šฉ๊ถŒ์— ๊ด€ํ•œ ์กฐํ•ญ์€ ETRI์—์„œ ๋ณ„๋„๋กœ ์ •ํ•œ ๋ฐ”๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ETRI์˜ ์‚ฌ์šฉ๊ถŒ ์กฐํ•ญ์— ๋™์˜ํ•˜์‹œ๊ณ  ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ•˜์…”์•ผ ํ•˜๋ฉฐ, ๋‹ค์Œ ์œ„์น˜์—์„œ ๋ฐœ๊ธ‰์„ ์‹ ์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ํ‚ค ๋ฐœ๊ธ‰ ์‹ ์ฒญ

์ฃผ2-3 Khaiii ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ๋Š” Java๊ฐ€ ์•„๋‹Œ C++๋กœ ๊ตฌํ˜„๋˜์–ด ์‚ฌ์šฉ ์ „ ๋ถ„์„๊ธฐ์˜ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Python3.6 ๋ฐ CMake 3.10+๋งŒ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ์„ค์น˜ ์ž์ฒด๊ฐ€ ๋ณต์žกํ•œ ํŽธ์€ ์•„๋‹ˆ๋‹ˆ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์„ค์น˜ํ•ด๋ณด์„ธ์š”. ์ฐธ๊ณ ๋กœ, KoalaNLP๊ฐ€ Travis CI์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์ž๋™ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌํ˜„๋œ bash script๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ2-4 UTagger ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ์—๋„ C/C++๋กœ ๊ตฌํ˜„๋˜์–ด, ์‚ฌ์šฉ ์ „ ๋ถ„์„๊ธฐ์˜ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์œˆ๋„์šฐ์™€ ๋ฆฌ๋ˆ…์Šค(์šฐ๋ถ„ํˆฌ, CentOS)์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋งŒ ์ œ๊ณต๋˜๋ฉฐ, ์„ค์น˜ ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์‹คํ–‰ํ™˜๊ฒฝ

  • KoalaNLP์˜ ๋ชจ๋“  ์ฝ”๋“œ๋Š” OpenJDK 12์—์„œ ํ…Œ์ŠคํŠธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Kotlin์˜ ๊ฒฝ์šฐ๋Š” 1.3.50์ด ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.
  • Scala์˜ ๊ฒฝ์šฐ๋Š” KoalaNLP-scala ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „์— ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋‹จ, ์€์ „ํ•œ๋‹ข๊ณผ Open Korean Text๋Š” ์˜์กดํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Scala์—์„œ ๊ฐœ๋ฐœ๋˜์–ด Scala์—์„œ ์‚ฌ์šฉ์‹œ ์ œํ•œ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” scala-koalanlp๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
  • Python๊ณผ NodeJS๋Š” ๊ฐ๊ฐ์˜ ์ €์žฅ์†Œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค: nodejs-koalanlp py-koalanlp

Gradle

ext.koala_version = '2.1.4'

repositories {
    mavenCentral()
    jcenter()
    maven { url "https://jitpack.io" } // ์ฝ”๋ชจ๋ž€์˜ ๊ฒฝ์šฐ์—๋งŒ ์ถ”๊ฐ€.
}

dependencies{
    // ์ฝ”๋ชจ๋ž€์˜ ๊ฒฝ์šฐ
    implementation "kr.bydelta:koalanlp-kmr:${ext.koala_version}" 
    // ์€์ „ํ•œ๋‹ข ํ”„๋กœ์ ํŠธ(Mecab-ko)์˜ ๊ฒฝ์šฐ
    implementation "kr.bydelta:koalanlp-eunjeon:${ext.koala_version}"
    // ์•„๋ฆฌ๋ž‘์˜ ๊ฒฝ์šฐ
    implementation "kr.bydelta:koalanlp-arirang:${ext.koala_version}:assembly"
    // RHINO์˜ ๊ฒฝ์šฐ 
    implementation "kr.bydelta:koalanlp-rhino:${ext.koala_version}:assembly"
    // Daon์˜ ๊ฒฝ์šฐ
    implementation "kr.bydelta:koalanlp-daon:${ext.koala_version}:assembly"
    // OpenKoreanText์˜ ๊ฒฝ์šฐ
    implementation "kr.bydelta:koalanlp-okt:${ext.koala_version}" 
    // ๊ผฌ๊ผฌ๋งˆ์˜ ๊ฒฝ์šฐ
    implementation "kr.bydelta:koalanlp-kkma:${ext.koala_version}:assembly"
    // ํ•œ๋‚˜๋ˆ”์˜ ๊ฒฝ์šฐ
    implementation "kr.bydelta:koalanlp-hnn:${ext.koala_version}:assembly" 
    // ETRI Open API์˜ ๊ฒฝ์šฐ
    implementation "kr.bydelta:koalanlp-etri:${ext.koala_version}"
    // Khaiii์˜ ๊ฒฝ์šฐ (Khaiii C++ ๋ณ„๋„ ์„ค์น˜ ํ•„์š”)
    implementation "kr.bydelta:koalanlp-khaiii:${ext.koala_version}"
    // REST Server Service์˜ ๊ฒฝ์šฐ (์ค€๋น„์ค‘)
    implementation "kr.bydelta:koalanlp-server:${ext.koala_version}"
}

SBT

(๋ฒ„์ „์€ Latest Release ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. SNAPSHOT์„ ์‚ฌ์šฉํ•˜์‹œ๋ ค๋ฉด, latest.integration์„ ์‚ฌ์šฉํ•˜์„ธ์š”.)

val koalaVer = "2.1.4"

// ์ฝ”๋ชจ๋ž€ ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
resolvers += "jitpack" at "https://jitpack.io/"
libraryDependencies += "kr.bydelta" % "koalanlp-kmr" % koalaVer

// ์€์ „ํ•œ๋‹ข ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
libraryDependencies += "kr.bydelta" % "koalanlp-eunjeon" % koalaVer

// ์•„๋ฆฌ๋ž‘ ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
libraryDependencies += "kr.bydelta" % "koalanlp-arirang" % koalaVer classifier "assembly"

// RHINO ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
libraryDependencies += "kr.bydelta" % "koalanlp-rhino" % koalaVer classifier "assembly"

// Daon ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
libraryDependencies += "kr.bydelta" % "koalanlp-daon" % koalaVer classifier "assembly"

// Open Korean Text ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
libraryDependencies += "kr.bydelta" % "koalanlp-okt" % koalaVer

// ๊ผฌ๊ผฌ๋งˆ ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
libraryDependencies += "kr.bydelta" % "koalanlp-kkma" % koalaVer classifier "assembly"

// ํ•œ๋‚˜๋ˆ” ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
libraryDependencies += "kr.bydelta" % "koalanlp-hannanum" % koalaVer classifier "assembly"

// ETRI ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ
resolvers += Resolver.JCenterRepository
libraryDependencies += "kr.bydelta" % "koalanlp-etri" % koalaVer

// Khaiii ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ (Khaiii C++ ๋ณ„๋„ ์„ค์น˜ ํ•„์š”)
resolvers += Resolver.JCenterRepository
libraryDependencies += "kr.bydelta" % "koalanlp-khaiii" % koalaVer

// UTagger ๋ถ„์„๊ธฐ์˜ ๊ฒฝ์šฐ (UTagger C++ ๋ณ„๋„ ์„ค์น˜ ํ•„์š”)
resolvers += Resolver.JCenterRepository
libraryDependencies += "kr.bydelta" % "koalanlp-utagger" % koalaVer

// REST Server Service์˜ ๊ฒฝ์šฐ (์ค€๋น„์ค‘)
libraryDependencies += "kr.bydelta" % "koalanlp-server" % koalaVer

Maven

Maven์„ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ${TAGGER_PACK}์œ„์น˜์—๋Š” ์›ํ•˜๋Š” ํ’ˆ์‚ฌ๋ถ„์„๊ธฐ์˜ ํŒจํ‚ค์ง€๋ฅผ ์จ์ฃผ์‹œ๊ณ , ${TAGGER_VER}์œ„์น˜์—๋Š” ํ’ˆ์‚ฌ๋ถ„์„๊ธฐ์˜ ๋ฒ„์ „์„ ์จ์ฃผ์„ธ์š”.

<dependency>
  <groupId>kr.bydelta</groupId>
  <artifactId>koalanlp-${TAGGER.PACK}</artifactId>
  <version>${TAGGER_VER}</version>
</dependency>

Classifier๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ค ๊ฒฝ์šฐ, <artifactId>๋‹ค์Œ ํ–‰์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

  <classifier>assembly</classifier>

์˜ˆ๋ฅผ ๋“ค์–ด์„œ, ๊ผฌ๊ผฌ๋งˆ ๋ถ„์„๊ธฐ(koalanlp-kkma) ๋ฒ„์ „ 2.1.3์„ ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<dependency>
  <groupId>kr.bydelta</groupId>
  <artifactId>koalanlp-kkma</artifactId>
  <classifier>assembly</classifier>
  <version>2.1.3</version>
</dependency>

์‚ฌ์šฉ๋ฐฉ๋ฒ•

์•„๋ž˜์—๋Š” ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•๋งŒ ๊ธฐ์ˆ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ธํ•œ ์‚ฌํ•ญ์€ Usage, Sample ๋˜๋Š” API Doc์„ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€์˜ ์‚ฌ์šฉ

ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€๊ฐ„์˜ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ๋Š” ํƒ€ ํŒจํ‚ค์ง€์˜ ํ’ˆ์‚ฌ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํ† ๋Œ€๋กœ ๊ตฌ๋ฌธ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Note:

  • ๋ณธ ๋ถ„์„์˜ ๊ฒฐ๊ณผ๋Š” ๊ฒ€์ฆ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ์‹ ์กฐ์–ด ๋“ฑ์œผ๋กœ ์ธํ•ด ํ•œ๋‚˜๋ˆ”์ด๋‚˜ ๊ผฌ๊ผฌ๋งˆ์—์„œ ํ’ˆ์‚ฌ ๋ถ„์„์ด ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ •์˜ ์‚ฌ์ „์€ Tagger์™€ Parser์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ํŒจํ‚ค์ง€์— ๋ชจ๋‘์— ์ถ”๊ฐ€ํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํƒ€ ํŒจํ‚ค์ง€์˜ ๋ถ„์„ ๊ฒฐ๊ณผ๋Š” ETRI ๋ถ„์„๊ธฐ์˜ ์ž…๋ ฅ์œผ๋กœ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Kotlin

/* ํŒจํ‚ค์ง€ ๋ช…: ํ•œ๋‚˜๋ˆ”(hnn), ์ฝ”๋ชจ๋ž€(kmr), ๊ผฌ๊ผฌ๋งˆ(kkma), ์€์ „ํ•œ๋‹ข(eunjeon), ํŠธ์œ„ํ„ฐ(twt), ์•„๋ฆฌ๋ž‘(arirang) */
// ์˜ˆ์‹œ์—์„œ๋Š” ํŠธ์œ„ํ„ฐ ๋ฌธ์žฅ๋ถ„์„๊ธฐ, ์€์ „ํ•œ๋‹ข ํ’ˆ์‚ฌ ๋ถ„์„, ๊ผฌ๊ผฌ๋งˆ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์ง„ํ–‰ํ•จ.
import kr.bydelta.koala.twt.SentenceSplitter
import kr.bydelta.koala.eunjeon.Tagger
import kr.bydelta.koala.kkma.Parser

val splitter = SentenceSplitter()
val tagger = Tagger()
val parser = Parser()

val paragraph = "๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋งํ–ˆ๋‹ค. Python์—๋Š” KoNLPy๊ฐ€ ์žˆ๋‹ค. Kotlin์€ KoalaNLP๊ฐ€ ์žˆ๋‹ค."
val sentences = splitter(paragraph)
val tagged = sentences.map{ tagger.tagSentence(it) }
val parsed = tagged.map{ parser.parse(it) }

Scala

import kr.bydelta.koala.twt.SentenceSplitter
import kr.bydelta.koala.eunjeon.Tagger
import kr.bydelta.koala.kkma.Parser

val splitter = new SentenceSplitter
val tagger = new Tagger
val parser = new Parser

val paragraph = "๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋งํ–ˆ๋‹ค. Python์—๋Š” KoNLPy๊ฐ€ ์žˆ๋‹ค. Scala๋Š” KoalaNLP๊ฐ€ ์žˆ์—ˆ๋‹ค."
val sentences = splitter.invoke(paragraph)
val tagged = sentences.map(tagger.tagSentence)
val parsed = tagged.map(parser.parse)

Java

import kr.bydelta.koala.twt.SentenceSplitter;
import kr.bydelta.koala.eunjeon.Tagger;
import kr.bydelta.koala.kkma.Parser;
import kr.bydelta.koala.Sentence;

SentenceSplitter splitter = new SentenceSplitter();
Tagger tagger = new Tagger();
Tagger parser = new Parser();

String paragraph = "๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋งํ–ˆ๋‹ค. Python์—๋Š” KoNLPy๊ฐ€ ์žˆ๋‹ค. Java๋Š” KoalaNLP๊ฐ€ ์žˆ์—ˆ๋‹ค.";
List<String> sentences = splitter.invoke(paragraph);
for(String line : sentences){
  Sentence tagged = tagger.tagSentence(line);
  Sentence parsed = parser.parse(tagged);
}

ํ’ˆ์‚ฌ๋ถ„์„๊ธฐ๋ณ„ ๊ฒฐ๊ณผ ๋น„๊ต

Sample: ๊ฒฐ๊ณผ๋น„๊ต๋ฅผ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.