KoalaNLP
์๊ฐ
KoalaNLP๋ ํ๊ตญ์ด ์ฒ๋ฆฌ์ ํตํฉ ์ธํฐํ์ด์ค๋ฅผ ์งํฅํ๋ Java/Kotlin/Scala Library์ ๋๋ค.
์ด ํ๋ก์ ํธ๋ ์๋ก ๋ค๋ฅธ ํํ์ ํํ์ ๋ถ์๊ธฐ๋ฅผ ๋ชจ์, ๋์ผํ ์ธํฐํ์ด์ค ์๋์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ๋ชฉ์ ์ ๋๋ค. (์ ๋ ฌ์ ๊ฐ๋ฐ๋จ์ฒด/๊ฐ๋ฐ์๋ช ๊ตญ๋ฌธ ๊ฐ๋๋ค์)
- ๊น์์ค๋์ Daon ๋ถ์๊ธฐ
- Shineware์ ์ฝ๋ชจ๋ v3.3.9
- ์์ธ๋์ ๊ผฌ๊ผฌ๋ง ํํ์/๊ตฌ๋ฌธ ๋ถ์๊ธฐ v2.1
- ETRI์ ๊ณต๊ณต ์ธ๊ณต์ง๋ฅ Open API
- OpenKoreanText์ ์คํ ์์ค ํ๊ตญ์ด ์ฒ๋ฆฌ๊ธฐ v2.3.1 (๊ตฌ Twitter ํ๊ตญ์ด ๋ถ์๊ธฐ)
- ์ธ์ฐ๋ํ๊ต์ UTagger 2018๋ 10์ 31์ผ์ 1-2, (๋ณ๋์ค์น ํ์: ์ค์น๋ฒ)
- ์์ ํ๋ข ํ๋ก์ ํธ์ SEunjeon(S์์ ) v1.5.0 (Mecab-ko์ Scala/Java ํ๋ณธ)
- ์ด์๋ช ๋์ Arirang Morpheme Analyzer 1-1
- ์ต์์ฌ๋์ RHINO v3.7.8
- KAIST์ ํ๋๋ ํํ์ ๋ถ์๊ธฐ์ NLP_HUB ๊ตฌ๋ฌธ๋ถ์๊ธฐ
- Kakao์ ์นด์ด(Khaiii) v0.4 (๋ณ๋์ค์น ํ์: ์ค์น๋ฒ)
์ฃผ1-1 Arirang ๋ถ์๊ธฐ์ ์ถ๋ ฅ์ ํํ์๋ถ์์ ์ ํฉํ๊ฒ ์กฐ๊ธ ๋ค๋ฌ์์ผ๋ฏ๋ก, ์๋ณธ๊ณผ ์ฝ๊ฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ผ ์๋ ์์ต๋๋ค.
์ฃผ1-2 UTagger์ 2019-7 ๋ฒ์ ๋ ๊ณต๊ฐ๋์ด ์์ง๋ง, ๋ฆฌ๋ ์ค ๊ฐ๋ฐํ๊ฒฝ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ด ๊ณต๊ฐ๋์ด์์ง ์์ ์ง์ํ์ง ์์ต๋๋ค.
๋ถ์๊ธฐ์ ๊ฐ์ ์ด๋ ์ถ๊ฐ ๋ฑ์ ํ๊ณ ์ถ์ผ์๋ค๋ฉด,
- ๊ฐ๋ฐ์ด ์ง์ ๊ฐ๋ฅํ์๋ค๋ฉด pull request๋ฅผ ๋ณด๋ด์ฃผ์ธ์. ํ ์คํธ ํ ๋ฐ์ํ ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค.
- ๊ฐ๋ฐ์ด ์ด๋ ต๋ค๋ฉด issue tracker์ ๋ฑ๋กํด์ฃผ์ธ์. ๊ฒํ ํ ๋ต๋ณํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
ํน์ง
KoalaNLP๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
-
๋ณต์กํ ์ค์ ์ด ํ์์๋ ํ ์คํธ ๋ถ์:
๋ชจ๋ธ์ ์๋์ผ๋ก Maven์ผ๋ก ๋ฐฐํฌ๋๊ธฐ ๋๋ฌธ์, ๊ฐ ๋ชจ๋ธ์ ๋ณ๋๋ก ์ค์นํ ํ์๊ฐ ์์ต๋๋ค.
-
์ฝ๋ 2~3 ์ค๋ก ์ํํ๋ ํ ์คํธ ์ฒ๋ฆฌ:
๋ชจ๋ธ๋ง๋ค ๋ค๋ฅธ ๋ณต์กํ ์ค์ ๊ณผ์ , ์ด๊ธฐํ ๊ณผ์ ์ ํ์ํ์ง ์์ต๋๋ค. Dependency์ ์ถ๊ฐํ๊ณ , ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๋ถ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ 3์ค์ด๋ฉด ๋๋ฉ๋๋ค.
-
๋ชจ๋ธ์ ์๊ด ์๋ ๋์ผํ ์ฝ๋, ๋์ผํ ๊ฒฐ๊ณผ:
๋ชจ๋ธ๋ง๋ค ์คํ ๋ฐฉ๋ฒ, ์คํ ๊ฒฐ๊ณผ๋ฅผ ํํํ๋ ํํ๊ฐ ๋ค๋ฆ ๋๋ค. KoalaNLP๋ ์ด๋ฅผ ์ ๋ถ ๋ฐ ๊ด๊ณ๊ธฐ๊ด์ ํ์ค์์ ๋ฐ๋ผ ํ์คํํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ธ์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
-
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 ํจํค์ง ๋ชฉ๋ก
์ฃผ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์์ ์ฌ์ฉ์ ์ ํ์ด ์์ ์ ์์ผ๋ฉฐ, ์ด๋ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. - Python๊ณผ NodeJS๋ ๊ฐ๊ฐ์ ์ ์ฅ์๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค:
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: ๊ฒฐ๊ณผ๋น๊ต๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์.