### Install Homebrew on Mac Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install Homebrew, a package manager for macOS, by running a Ruby script. ```bash /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ``` -------------------------------- ### Install Scala 2.13.6 on Mac using Homebrew Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install Scala version 2.13.6 using Homebrew. ```bash brew install scala ``` -------------------------------- ### Maven Example (Kkma) Source: https://koalanlp.github.io/koalanlp Example Maven dependency for the Kkma tagger. ```xml kr.bydelta koalanlp-kkma assembly 2.1.3 ``` -------------------------------- ### Install Java JDK 11 on RedHat-based Linux Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install OpenJDK 11 JDK on RedHat-based Linux distributions. ```bash sudo yum install java-1.11.0-openjdk ``` -------------------------------- ### Install Node.JS 16.2.0 on Mac using Homebrew Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install Node.JS version 16.2.0 using Homebrew. ```bash brew install nodejs ``` -------------------------------- ### Install Java JDK 11 on Debian-based Linux Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install OpenJDK 11 JDK on Debian-based Linux distributions. ```bash sudo apt install openjdk-11-jdk ``` -------------------------------- ### Kotlin Dependency Parsing Source: https://koalanlp.github.io/koalanlp/usage/DepParse.html Example of performing dependency parsing in Kotlin using the KoalaNLP library. It shows how to initialize a parser and process text to get dependency edges. ```kotlin import kr.bydelta.koala.hnn.Parser // 또는 kkma.Parser, etri.Parser val parser = Parser() // ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: Parser(API_KEY) val parsed = parser.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") // 또는 parser(...), parser.invoke(...) // 첫번째 문장의 의존구조를 출력합니다. parsed[0].getDependencies().forEach{ println(it) } ``` -------------------------------- ### Install Node.JS LTS on Windows using Chocolatey Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install the Long-Term Support (LTS) version of Node.JS (14.17.0) using Chocolatey. ```powershell choco install nodejs-lts --version 14.17.0 -y ``` -------------------------------- ### Install Python 3.9.5 on Windows using Chocolatey Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install Python version 3.9.5 using Chocolatey. ```powershell choco install python --version 3.9.5 -y ``` -------------------------------- ### Install Chocolatey on Windows Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install Chocolatey, a package manager for Windows, to simplify software installation. ```powershell "@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" ``` -------------------------------- ### Install Python 3.9.5 on Mac using Homebrew Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Commands to install Python version 3.9.5 using Homebrew. Note the use of --ignore-dependencies. ```bash brew install python3 brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb --ignore-dependencies ``` -------------------------------- ### Kotlin Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.daon/from-sejong-p-o-s.html Example of converting Sejong POS to Daon POS in Kotlin. ```kotlin POS.NNG.fromSejongPOS() ``` -------------------------------- ### Java Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.daon/from-sejong-p-o-s.html Example of converting Sejong POS to Daon POS in Java. ```java Util.fromSejongPOS(POS.NNG) ``` -------------------------------- ### Kotlin Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.hnn/kotlin.-string/to-e-t-r-i-dep-tag.html Example of converting a dependency tag string to ETRI format in Kotlin. ```kotlin "SBJ".toSejongPOS() ``` -------------------------------- ### SBT Dependencies Source: https://koalanlp.github.io/koalanlp/usage/installation.html Dependencies for various KoalaNLP analyzers using SBT. ```scala val koalaScalaVer = "2.1.0" val koalaVer = "2.1.4" // Implicit method 사용시 Scala support 추가 libraryDependencies += "kr.bydelta" %% "koalanlp-scala" % koalaScalaVer // 코모란 분석기의 경우 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 ``` -------------------------------- ### Java Syntax Parsing Example Source: https://koalanlp.github.io/koalanlp/usage/SyntaxParse.html Provides an example of syntax parsing in Java using the Hannanum Parser. It analyzes text and prints the syntax tree string for the first sentence. ```java import kr.bydelta.koala.hnn.Parser; import kr.bydelta.koala.data.Sentence; Parser parser = new Parser(); List parsed = parser.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다."); // 또는 parser.invoke(...) System.out.println(parsed.get(0).getSyntaxTree().getTreeString()); // 첫번째 문장의 구문구조 트리를 출력합니다. ``` -------------------------------- ### Java SRL Example Source: https://koalanlp.github.io/koalanlp/usage/SRL.html Example of performing Semantic Role Labeling using the ETRI RoleLabeler in Java. ```java import kr.bydelta.koala.etri.RoleLabeler; import kr.bydelta.koala.data.Sentence; import kr.bydelta.koala.data.RoleEdge; String API_KEY = /** ETRI에서 발급받은 키 **/ RoleLabeler labeler = new RoleLabeler(API_KEY); List parsed = labeler.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") // 또는 labeler.invoke(...) // 첫번째 문장의 의미역들을 출력합니다. for(RoleEdge role : parsed[0].getRoles()) { println(role); } ``` -------------------------------- ### JavaScript (NodeJS) Syntax Parsing Example - Synchronous Call Source: https://koalanlp.github.io/koalanlp/usage/SyntaxParse.html Shows a synchronous syntax parsing example in JavaScript (NodeJS), noting that this feature is under preparation. It analyzes text and prints the syntax tree string of the first sentence. ```javascript const {Parser} = require('koalanlp/proc'); const {HNN} = require('koalanlp/API'); // .... let parser = new Parser(HNN); let result = parser.analyzeSync("이 문단을 분석합니다. 문단 구분은 자동으로 합니다."); /* Result는 Sentence[] 타입입니다. */ console.log(result[0].getSyntaxTree().getTreeString()); // 첫번째 문장의 구문구조 트리를 출력합니다. // ... ``` -------------------------------- ### Java Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.hnn/kotlin.-string/to-e-t-r-i-dep-tag.html Example of converting a dependency tag string to ETRI format in Java. ```java Util.toETRIDepTag("SBJ") ``` -------------------------------- ### Kotlin SRL Example Source: https://koalanlp.github.io/koalanlp/usage/SRL.html Example of performing Semantic Role Labeling using the ETRI RoleLabeler in Kotlin. ```kotlin import kr.bydelta.koala.etri.RoleLabeler val API_KEY = /** ETRI에서 발급받은 키 **/ val labeler = RoleLabeler(API_KEY) val parsed = labeler.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") // 또는 labeler(...), labeler.invoke(...) // 첫번째 문장의 의미역들을 출력합니다. parsed[0].getRoles().forEach{ role -> println(role) } ``` -------------------------------- ### Install Java JDK 11 on Mac using Homebrew Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install Java JDK version 11 using Homebrew. This is the recommended LTS version for KoalaNLP. ```bash brew install openjdk@11 ``` -------------------------------- ### Install Java JDK 11 on Windows using Chocolatey Source: https://koalanlp.github.io/koalanlp/usage/PlatformInstall.html Command to install Java JDK version 11.0.11.9 using Chocolatey. This is the recommended LTS version for KoalaNLP. ```powershell choco install openjdk --version 11.0.11.9 -y ``` -------------------------------- ### NodeJS (JavaScript) SRL Example - Async/Await Source: https://koalanlp.github.io/koalanlp/usage/SRL.html Example of performing Semantic Role Labeling using the ETRI RoleLabeler in NodeJS with Async/Await. ```javascript const {RoleLabeler} = require('koalanlp/proc'); const {ETRI} = require('koalanlp/API'); const API_KEY =; ??/** ETRI에서 발급받은 키 **/ async function someAsyncFunction(){ // .... let labeler = new RoleLabeler(ETRI, {etriKey: API_KEY}); let result = await labeler("이 문단을 분석합니다. 문단 구분은 자동으로 합니다."); // 또는 labeler.analyze(...) /* Result는 Sentence[] 타입입니다. */ for(const role of result[0].getRoles()){ console.log(role.toString()); // 첫번째 문장의 의미역들을 출력합니다. } // ... } someAsyncFunction().then( () => console.log('After function finished'), (error) => console.error('Error occurred!', error) ); ``` -------------------------------- ### Scala SRL Example Source: https://koalanlp.github.io/koalanlp/usage/SRL.html Example of performing Semantic Role Labeling using the ETRI RoleLabeler in Scala. ```scala import kr.bydelta.koala.etri.EntityRecognizer import kr.bydelta.koala.Implicits._ val API_KEY = /** ETRI에서 발급받은 키 **/ val labeler = new RoleLabeler(API_KEY) val parsed = labeler.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") // 또는 labeler(...), labeler.invoke(...) // 첫번째 문장의 의미역들을 출력합니다. parsed[0].getRoles().forEach{ role => println(role) } ``` -------------------------------- ### Scala Examples Source: https://koalanlp.github.io/koalanlp/usage/ReadingForeign.html Examples of using Scala extensions for converting alphabetic and Hanja characters to Korean. ```scala import kr.bydelta.koala._ import kr.bydelta.koala.Implicits._ "ABCD".alphaToHangul // "에이비씨디" "갤럭시S".alphaToHangul // "갤럭시에스" "cup".alphaToHangul // "씨유피" "에스비에스".isAlphaPronounced // true "갤럭시에스".isAlphaPronounced // false "갤럭시에스".hangulToAlpha // "갤럭시S" "에이디에이치디".hangulToAlpha // "ADHD" '國'.isHanja // true '國'.isCJKHanja // true "國篇".hanjaToHangul() // "국편" "國篇은 오늘".hanjaToHangul() // "국편은 오늘" "300 兩의 돈".hanjaToHangul() // "300 냥의 돈" "樂園".hanjaToHangul() // "낙원" (두음법칙) ``` -------------------------------- ### Kotlin Examples Source: https://koalanlp.github.io/koalanlp/usage/ReadingForeign.html Examples of using Kotlin extensions for converting alphabetic and Hanja characters to Korean. ```kotlin import kr.bydelta.koala.* "ABCD".alphaToHangul() // "에이비씨디" "갤럭시S".alphaToHangul() // "갤럭시에스" "cup".alphaToHangul() // "씨유피" "에스비에스".isAlphaPronounced() // true "갤럭시에스".isAlphaPronounced() // false "갤럭시에스".hangulToAlpha() // "갤럭시S" "에이디에이치디".hangulToAlpha() // "ADHD" '國'.isHanja() // true '國'.isCJKHanja() // true "國篇".hanjaToHangul() // "국편" "國篇은 오늘".hanjaToHangul() // "국편은 오늘" "300 兩의 돈".hanjaToHangul() // "300 냥의 돈" "樂園".hanjaToHangul() // "낙원" (두음법칙) ``` -------------------------------- ### Python 3 SRL Example Source: https://koalanlp.github.io/koalanlp/usage/SRL.html Example of performing Semantic Role Labeling using the ETRI RoleLabeler in Python 3. ```python from koalanlp import API from koalanlp.proc import EntityRecognizer labeler = RoleLabeler(API.ETRI, etri_key=API_KEY) parsed = labeler("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") # 또는 labeler.analyze(...), labeler.invoke(...) # 첫번째 문장의 의미역들을 출력합니다. for role in parsed[0].getRoles(): print(role) ``` -------------------------------- ### Java Usage Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.etri/-role-labeler/index.html Example of how to use RoleLabeler in Java, demonstrating direct sentence analysis and analysis following other parsers. ```java // 문장에서 바로 분석할 때 Parser parser = Parser() List sentences = parser.analyze("문장 2개입니다. 결과는 목록이 됩니다.") // 또는 parser.invoke("문장 2개입니다. 결과는 목록이 됩니다.") // 타 분석기에서 분석한 다음 이어서 분석할 때 Sentence taggedSentence = ... Sentence sentence = parser.analyze(taggedSentence) // 또는 parser.invoke(taggedSentence) List taggedSentList = ... List sentences = parser.analyze(taggedSentList) // 또는 parser.invoke(taggedSentList) ``` -------------------------------- ### Python 3 Reference: Tagger Source: https://koalanlp.github.io/koalanlp/usage/POSTag.html Example of using the Tagger in Python 3. ```python from koalanlp import API from koalanlp.proc import Tagger tagger = Tagger(API.EUNJEON) # (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: Tagger(kmr_light=True) # (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: Tagger(etri_key=API_KEY) # (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: Tagger(khaiii_resource=some_path) # (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다. # from koalanlp.proc import UTagger # UTagger.setPath(library_path, config_path) // (라이브러리 파일 위치와 설정파일 위치 지정) # 문단을 분석해서 문장들로 얻기 (각 API가 문단 분리를 지원하지 않아도, KoalaNLP가 자동으로 구분합니다) taggedParagraph = tagger("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다.") # 또는 tagger.tag(...), tagger.invoke(...) print(taggedParagraph[0].singleLineString()) # "문단을 분석합니다."의 품사분석 결과 출력 ``` -------------------------------- ### JavaScript Hangul Assembly Examples Source: https://koalanlp.github.io/koalanlp/usage/HangulAssembly.html Provides examples for using Hangul Assembly functions in JavaScript, compatible with CommonJS (NodeJS > 8). All ExtUtil functions are synchronous. ```JavaScript const ExtUtil = require('koalanlp/ExtUtil'); /**** 한글 여부 확인 ****/ ExtUtil.isHangul('가'); // [true] ExtUtil.isHangul('ㄱ'); // [true] ExtUtil.isHangul('a'); // [false] ExtUtil.isHangulEnding("갤럭시S는"); // true ExtUtil.isHangulEnding("abc"); // false ExtUtil.isHangulEnding("보기 ㄱ"); // true ExtUtil.isCompleteHangul('가'); // [true] ExtUtil.isCompleteHangul('ㄱ'); // [false] ExtUtil.isCompleteHangul('a'); // [false] /**** 종성으로 끝나는지 확인 ****/ ExtUtil.isJongsungEnding('각'); // true ExtUtil.isJongsungEnding('가'); // false ExtUtil.isJongsungEnding('m'); // false /**** 초, 중, 종성 한글 자모 값으로 분해 ****/ ExtUtil.getChosung('가'); // 'ㄱ'에 해당하는 초성 문자 [\u1100] ExtUtil.getJungsung('가'); // 'ㅏ'에 해당하는 초성 문자 [\u1161] ExtUtil.getJongsung('가'); // [undefined] ExtUtil.getJongsung('각'); // 'ㄱ'에 해당하는 종성문자 [\u11A8] ExtUtil.getChosung('ㄱ'); // [undefined] ExtUtil.dissembleHangul('가'); // '\u1100\u1161' ExtUtil.dissembleHangul('각'); // '\u1100\u1161\u11A8' ExtUtil.dissembleHangul("가각"); // "\u1100\u1161\u1100\u1161\u11A8" (문자 사이를 띄워서 표시하면: 'ᄀ ᅡ ᄀ ᅡ ᆨ') /**** 종성 한글 자모값으로 변환 ****/ ChoToJong.get('ㄵ'); // \u11AC /**** 한글 자모 범위에 속하는 초, 중, 종성인지 확인 ****/ ExtUtil.isChosungJamo('ㄱ'); // [false] ExtUtil.isChosungJamo('\u1100'); // [true] ExtUtil.isJungsungJamo('ㅏ'); // [false] ExtUtil.isJungsungJamo('\u1161'); // [true] ExtUtil.isJongsungJamo('ㄱ'); // [false] ExtUtil.isJongsungJamo('\u11A8'); // [true] /**** 한글 자모 결합 ****/ ExtUtil.assembleHangul("\u1100\u1161\u1102\u1161\u11ab"); // "가난" ExtUtil.assembleHangulTriple(undefined, '\u1161'); // '아' ExtUtil.assembleHangulTriple('\u1100', undefined, '\u11A8'); // '극' ``` -------------------------------- ### NodeJS (JavaScript) SRL Example - Promise Source: https://koalanlp.github.io/koalanlp/usage/SRL.html Example of performing Semantic Role Labeling using the ETRI RoleLabeler in NodeJS with Promises. ```javascript const {RoleLabeler} = require('koalanlp/proc'); const {ETRI} = require('koalanlp/API'); const API_KEY =; ??/** ETRI에서 발급받은 키 **/ let labeler = new RoleLabeler(ETRI, {etriKey: API_KEY}); labeler("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") // 또는 labeler.analyze(...) .then((result) => { /* Result는 Sentence[] 타입입니다. */ for(const role of result[0].getRoles()){ console.log(role.toString()); // 첫번째 문장의 의미역들을 출력합니다. } }, (error) => console.error('Error occurred!', error)); ``` -------------------------------- ### NodeJS NER Example (Async/Await) Source: https://koalanlp.github.io/koalanlp/usage/NER.html Example of performing Named Entity Recognition using ETRI's EntityRecognizer in NodeJS with Async/Await. ```javascript const {EntityRecognizer} = require('koalanlp/proc'); const {ETRI} = require('koalanlp/API'); const API_KEY =; ??/** ETRI에서 발급받은 키 **/ async function someAsyncFunction(){ // .... let recognizer = new EntityRecognizer(ETRI, {etriKey: API_KEY}); let result = await recognizer("이 문단을 분석합니다. 문단 구분은 자동으로 합니다."); // 또는 recognizer.analyze(...) /* Result는 Sentence[] 타입입니다. */ // 첫번째 문장의 개체명들을 출력합니다. for(const entity of parsed[0].getEntities()){ console.log(entity.toString()); } // ... } someAsyncFunction().then( () => console.log('After function finished'), (error) => console.error('Error occurred!', error) ); ``` -------------------------------- ### Promise Source: https://koalanlp.github.io/koalanlp/usage/POSTag.html Example of using the Tagger with a Promise-based approach in JavaScript. ```javascript const {Tagger} = require('koalanlp/proc'); const {EUNJEON} = require('koalanlp/API'); let tagger = new Tagger(EUNJEON); // (1) 코모란 분석기는 경량 분석기를 사용하는 옵션이 있습니다. 예: new Tagger(KMR, {kmrLight:true}); // (2) ETRI 분석기의 경우 API 키를 필수적으로 전달해야 합니다. 예: new Tagger(ETRI, {etriKey: API_KEY}); // (3) Khaiii 분석기의 경우 Khaiii 리소스 폴더를 필수적으로 전달해야 합니다. 예: new Tagger(KHAIII, {khaResource: resourcePath}); // (4) UTagger 분석기의 경우 사용 전 아래와 같이 UTagger 초기화 절차가 필요합니다. // const {utagger} = require('koalanlp/proc'); // UTagger.setPath(libraryPath, configPath); // (라이브러리 파일 위치와 설정파일 위치 지정) tagger("문단을 분석합니다. 자동으로 분리되어 목록을 만듭니다.") // 또는 tagger.tag(...) .then((result) => { /* Result는 string[] 타입입니다. */ console.log(result[0].singleLineString()); // "문단을 분석합니다."의 품사분석 결과 출력 }, (error) => console.error('Error occurred!', error)); ``` -------------------------------- ### Java Usage Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.daon/-tagger/index.html Illustrates the usage of the Tagger class in Java. ```java Tagger tagger = new Tagger() Sentence sentence = tagger.tagSentence("문장 1개입니다.") List sentences = tagger.tag("문장들입니다. 결과는 목록이 됩니다.") // 또는 List sentences = tagger.invoke("문장들입니다. 결과는 목록이 됩니다.") ``` -------------------------------- ### Kotlin Usage Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala/-han-second-list.html Demonstrates how to access the first element of the HanSecondList in Kotlin. ```kotlin ExtUtil.HanSecondList[0] // 중성 문자 '\u1161' ``` -------------------------------- ### startsWith Function Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala/-p-o-s/index.html Checks if the POS tag starts with a given tag. ```kotlin fun startsWith(tag: CharSequence): Boolean ``` -------------------------------- ### Java Usage Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.daon/-tagger/-init-.html Illustrates how to use the Tagger class in Java. ```java Tagger tagger = new Tagger() Sentence sentence = tagger.tagSentence("문장 1개입니다.") List sentences = tagger.tag("문장들입니다. 결과는 목록이 됩니다.") // 또는 List sentences = tagger.invoke("문장들입니다. 결과는 목록이 됩니다.") ``` -------------------------------- ### Constructor Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.khaiii/-khaiii-morph/-by-reference/-init-.html The default constructor for KhaiiiMorph.ByReference. ```kotlin ByReference() ``` -------------------------------- ### Scala Usage Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala/-han-last-list.html Shows how to get the HanLastList in Scala and retrieve a jamo character using the get method. ```scala ExtUtil.getHanLastList.get(1) // 종성 문자 '\u11A8' ``` -------------------------------- ### Kotlin Example Source: https://koalanlp.github.io/koalanlp/usage/CombinePackages.html Demonstrates combining SentenceSplitter (OKT), Tagger (KMR), and Parser (HNN) in Kotlin. ```kotlin import kr.bydelta.koala.okt.SentenceSplitter import kr.bydelta.koala.kmr.Tagger import kr.bydelta.koala.hnn.Parser val splitter = SentenceSplitter() val tagger = Tagger() val parser = Parser() val splits = splitter("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") val tagged = splits.map{ tagger.tagSentence(it) } val parsed = parser(tagged) for(sent in parsed){ println(sent.getSyntaxTree().getTreeString()) } ``` -------------------------------- ### JavaScript Promise Example Source: https://koalanlp.github.io/koalanlp/usage/CombinePackages.html Demonstrates combining SentenceSplitter (OKT), Tagger (KMR), and Parser (HNN) in JavaScript using Promises. ```javascript const {SentenceSplitter, Tagger, Parser} = require('koalanlp/proc'); const {OKT, KMR, HNN} = require('koalanlp/API'); let splitter = new SentenceSplitter(OKT); let tagger = new Tagger(KMR); let parser = new Parser(HNN); splitter("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") .then(tagger.tagSentence) .then(parser) .then((result) => { /* Result는 Sentence[] 타입입니다. */ for(const sent of parsed){ console.log(sent.getSyntaxTree().getTreeString()) } }, (error) => console.error('Error occurred!', error)); ``` -------------------------------- ### Java Example Source: https://koalanlp.github.io/koalanlp/usage/CombinePackages.html Demonstrates combining SentenceSplitter (OKT), Tagger (KMR), and Parser (HNN) in Java. ```java import kr.bydelta.koala.data.Sentence; import kr.bydelta.koala.data.SyntaxTree; import kr.bydelta.koala.okt.SentenceSplitter; import kr.bydelta.koala.kmr.Tagger; import kr.bydelta.koala.hnn.Parser; SentenceSplitter splitter = new SentenceSplitter(); Tagger tagger = new Tagger(); Parser parser = new Parser(); List splits = splitter.sentences("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") List tagged = splits.map(it -> tagger.tagSentence(it)) List parsed = parser.analyze(tagged) for(Sentence sent : parsed){ System.out.println(sent.getSyntaxTree().getTreeString()) } ``` -------------------------------- ### JavaScript (NodeJS) Syntax Parsing Example - Async/Await Source: https://koalanlp.github.io/koalanlp/usage/SyntaxParse.html Demonstrates asynchronous syntax parsing in JavaScript (NodeJS) using async/await. It analyzes text and logs the syntax tree string of the first sentence. ```javascript const {Parser} = require('koalanlp/proc'); const {HNN} = require('koalanlp/API'); async function someAsyncFunction(){ // .... let parser = new Parser(HNN); let result = await parser("이 문단을 분석합니다. 문단 구분은 자동으로 합니다."); // 또는 parser.analyze(...) /* Result는 Sentence[] 타입입니다. */ console.log(result[0].getSyntaxTree().getTreeString()); // 첫번째 문장의 구문구조 트리를 출력합니다. // ... } someAsyncFunction().then( () => console.log('After function finished'), (error) => console.error('Error occurred!', error) ); ``` -------------------------------- ### Kotlin Syntax Parsing Example Source: https://koalanlp.github.io/koalanlp/usage/SyntaxParse.html Demonstrates how to use the Hannanum Parser in Kotlin to analyze text and retrieve the syntax tree string for the first sentence. ```kotlin import kr.bydelta.koala.hnn.Parser val parser = Parser() val parsed = parser.analyze("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") // 또는 parser(...), parser.invoke(...) println(parsed[0].getSyntaxTree().getTreeString()) // 첫번째 문장의 구문구조 트리를 출력합니다. ``` -------------------------------- ### Python 3 Example Source: https://koalanlp.github.io/koalanlp/usage/CombinePackages.html Demonstrates combining SentenceSplitter (OKT), Tagger (KMR), and Parser (HNN) in Python 3. ```python from koalanlp import API from koalanlp.proc import SentenceSplitter, Tagger, Parser splitter = SentenceSplitter(API.OKT) tagger = Tagger(API.KMR) parser = Parser(API.HNN) splits = splitter("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") tagged = tagger.tagSentence(*splits) parsed = parser(tagged) for sent in parsed: print(sent.getSyntaxTree().getTreeString()) ``` -------------------------------- ### JavaScript Async/Await Example Source: https://koalanlp.github.io/koalanlp/usage/CombinePackages.html Demonstrates combining SentenceSplitter (OKT), Tagger (KMR), and Parser (HNN) in JavaScript using async/await, compatible with CommonJS (NodeJS > 8). ```javascript const {SentenceSplitter, Tagger, Parser} = require('koalanlp/proc'); const {OKT, KMR, HNN} = require('koalanlp/API'); async function someAsyncFunction(){ // .... let splitter = new SentenceSplitter(OKT); let tagger = new Tagger(KMR); let parser = new Parser(HNN); let splits = await splitter("이 문단을 분석합니다. 문단 구분은 자동으로 합니다."); let tagged = await tagger.tagSentence(splits); let parsed = await parser(tagged); /* Result는 Sentence[] 타입입니다. */ for(const sent of parsed){ console.log(sent.getSyntaxTree().getTreeString()) } // ... } someAsyncFunction().then( () => console.log('After function finished'), (error) => console.error('Error occurred!', error) ); ``` -------------------------------- ### Scala Example Source: https://koalanlp.github.io/koalanlp/usage/CombinePackages.html Demonstrates combining SentenceSplitter (OKT), Tagger (KMR), and Parser (HNN) in Scala, assuming koalanlp-scala is included as a dependency. ```scala import kr.bydelta.koala.okt.SentenceSplitter import kr.bydelta.koala.kmr.Tagger import kr.bydelta.koala.hnn.Parser import kr.bydelta.koala.Implicits._ val splitter = new SentenceSplitter val tagger = new Tagger val parser = new Parser val splits = splitter("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") val tagged = splits.map(tagger.tagSentence) val parsed = parser(tagged) for(sent <- parsed){ println(sent.getSyntaxTree.getTreeString()) } ``` -------------------------------- ### JavaScript (NodeJS) Syntax Parsing Example - Promise Source: https://koalanlp.github.io/koalanlp/usage/SyntaxParse.html Illustrates syntax parsing in JavaScript (NodeJS) using Promises. It analyzes text and logs the syntax tree string of the first sentence upon successful completion. ```javascript const {Parser} = require('koalanlp/proc'); const {HNN} = require('koalanlp/API'); let parser = new Parser(HNN); parser("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") // 또는 parser.analyze(...) .then((result) => { /* Result는 Sentence[] 타입입니다. */ console.log(result[0].getSyntaxTree().getTreeString()); // 첫번째 문장의 구문구조 트리를 출력합니다. }, (error) => console.error('Error occurred!', error)); ``` -------------------------------- ### Java Hangul Assembly Examples Source: https://koalanlp.github.io/koalanlp/usage/HangulAssembly.html Demonstrates various functions for checking Hangul properties, disassembling and assembling Hangul characters, and converting between Hangul components using Java. ```Java import kr.bydelta.koala.ExtUtil; /**** 한글 여부 확인 ****/ ExtUtil.isHangul('가'); // true ExtUtil.isHangul('ㄱ'); // true ExtUtil.isHangul('a'); // false ExtUtil.isHangulEnding("갤럭시S는"); // true ExtUtil.isHangulEnding("abc"); // false ExtUtil.isHangulEnding("보기 ㄱ"); // true ExtUtil.isCompleteHangul('가'); // true ExtUtil.isCompleteHangul('ㄱ'); // false ExtUtil.isCompleteHangul('a'); // false /**** 종성으로 끝나는지 확인 ****/ ExtUtil.isJongsungEnding('각'); // true ExtUtil.isJongsungEnding('가'); // false ExtUtil.isJongsungEnding('m'); // false /**** 초, 중, 종성 한글 자모 값으로 분해 ****/ ExtUtil.getChosung('가'); // 'ㄱ'에 해당하는 초성 문자 \u1100 ExtUtil.getJungsung('가'); // 'ㅏ'에 해당하는 초성 문자 \u1161 ExtUtil.getJongsung('가'); // null ExtUtil.getJongsung('각'); // 'ㄱ'에 해당하는 종성문자 \u11A8 ExtUtil.getChosung('ㄱ'); // null ExtUtil.dissembleHangul('가'); // kotlin.Triple('\u1100', '\u1161', null) ExtUtil.dissembleHangul('각'); // kotlin.Triple('\u1100', '\u1161', '\u11A8') ExtUtil.dissembleHangul("가각"); // "\u1100\u1161\u1100\u1161\u11A8" (문자 사이를 띄워서 표시하면: 'ᄀ ᅡ ᄀ ᅡ ᆨ') /**** 종성 한글 자모값으로 변환 ****/ ExtUtil.getChoToJong().get('ㄵ'); // \u11AC /**** 한글 자모 범위에 속하는 초, 중, 종성인지 확인 ****/ ExtUtil.isChosungJamo('ㄱ'); // false ExtUtil.isChosungJamo('\u1100'); // true ExtUtil.isJungsungJamo('ㅏ'); // false ExtUtil.isJungsungJamo('\u1161'); // true ExtUtil.isJongsungJamo('ㄱ'); // false ExtUtil.isJongsungJamo('\u11A8'); // true /**** 한글 자모 결합 ****/ ExtUtil.assembleHangul(new kotlin.Triple('\u1100', '\u1161', null)); // '가' ExtUtil.assembleHangul(new kotlin.Triple('\u1100', '\u1161', '\u11AB')); // '간' ExtUtil.assembleHangul("\u1100\u1161\u1102\u1161\u11ab"); // "가난" ExtUtil.assembleHangul(null, '\u1161'); // '아' ExtUtil.assembleHangul('\u1100', null, '\u11A8'); // '극' ``` -------------------------------- ### JavaScript Synchronous Call Example Source: https://koalanlp.github.io/koalanlp/usage/CombinePackages.html Demonstrates combining SentenceSplitter (OKT), Tagger (KMR), and Parser (HNN) in JavaScript using synchronous calls. ```javascript const {SentenceSplitter, Tagger, Parser} = require('koalanlp/proc'); const {OKT, KMR, HNN} = require('koalanlp/API'); // .... let splitter = new SentenceSplitter(OKT); let tagger = new Tagger(KMR); let parser = new Parser(HNN); let splits = splitter.sentencesSync("이 문단을 분석합니다. 문단 구분은 자동으로 합니다."); let tagged = tagger.tagSentenceSync(splits); let parsed = parser.analyzeSync(tagged); /* Result는 Sentence[] 타입입니다. */ for(const sent of parsed){ console.log(sent.getSyntaxTree().getTreeString()) } ``` -------------------------------- ### Python 3 Syntax Parsing Example Source: https://koalanlp.github.io/koalanlp/usage/SyntaxParse.html Demonstrates syntax parsing in Python 3 using the KoalaNLP API. It analyzes text and prints the syntax tree string of the first sentence. ```python from koalanlp import API from koalanlp.proc import Parser parser = Parser(API.HNN) parsed = parser("이 문단을 분석합니다. 문단 구분은 자동으로 합니다.") # 또는 parser.analyze(...), parser.invoke(...) print(parsed[0].getSyntaxTree().getTreeString()) # 첫번째 문장의 구문구조 트리를 출력합니다. ``` -------------------------------- ### Kotlin Usage Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.etri/-role-labeler/index.html Example of how to use RoleLabeler in Kotlin, both for analyzing sentences directly and for analyzing after other parsers. ```kotlin // 문장에서 바로 분석할 때 val parser = Parser() val sentences = parser.analyze("문장 2개입니다. 결과는 목록이 됩니다.") // 또는 parser("문장 2개입니다. 결과는 목록이 됩니다.") // 타 분석기에서 분석한 다음 이어서 분석할 때 val taggedSentence: Sentence = ... val sentence = parser.analyze(taggedSentence) // 또는 parser(taggedSentence) val taggedSentList: List = ... val sentences = parser.analyze(taggedSentList) // 또는 parser(taggedSentList) ``` -------------------------------- ### Java Usage Example Source: https://koalanlp.github.io/koalanlp/api/koalanlp/kr.bydelta.koala.proc/-can-parse-dependency.html Examples of how to use the CanParseDependency interface in Java, covering direct analysis and chaining with other analyzers. ```java // 문장에서 바로 분석할 때 Parser parser = new Parser() List sentences = parser.analyze("문장 2개입니다. 결과는 목록이 됩니다.") // 또는 parser.invoke("문장 2개입니다. 결과는 목록이 됩니다.") // 타 분석기에서 분석한 다음 이어서 분석할 때 Sentence taggedSentence = ... Sentence sentence = parser.analyze(taggedSentence) // 또는 parser.invoke(taggedSentence) List taggedSentList = ... List sentences = parser.analyze(taggedSentList) // 또는 parser.invoke(taggedSentList) ``` -------------------------------- ### JavaScript Examples Source: https://koalanlp.github.io/koalanlp/usage/ReadingForeign.html Examples of using JavaScript utility methods for converting alphabetic and Hanja characters to Korean. ```javascript const ExtUtil = require('koalanlp/ExtUtil'); ExtUtil.alphaToHangul("ABCD"); // "에이비씨디" ExtUtil.alphaToHangul("갤럭시S"); // "갤럭시에스" ExtUtil.alphaToHangul("cup"); // "씨유피" ExtUtil.isAlphaPronounced("에스비에스"); // true ExtUtil.isAlphaPronounced("갤럭시에스"); // false ExtUtil.hangulToAlpha("갤럭시에스"); // "갤럭시S" ExtUtil.hangulToAlpha("에이디에이치디"); // "ADHD" ExtUtil.isHanja('國'); // true ExtUtil.isCJKHanja('國'); // true ExtUtil.hanjaToHangul("國篇"); // "국편" ExtUtil.hanjaToHangul("國篇은 오늘"); // "국편은 오늘" ExtUtil.hanjaToHangul("300 兩의 돈"); // "300 냥의 돈" ExtUtil.hanjaToHangul("樂園"); // "낙원" (두음법칙) ``` -------------------------------- ### Python 3 Hangul Assembly Examples Source: https://koalanlp.github.io/koalanlp/usage/HangulAssembly.html Illustrates the usage of Hangul Assembly functions in Python 3, including checking Hangul properties, disassembling and assembling Hangul characters, and converting between Hangul components. ```Python from koalanlp import ExtUtil #### 한글 여부 확인 #### ExtUtil.isHangul('가') # [true] ExtUtil.isHangul('ㄱ') # [true] ExtUtil.isHangul('a나.') # [false, true, false] ExtUtil.isHangulEnding("갤럭시S는") # true ExtUtil.isHangulEnding("abc") # false ExtUtil.isHangulEnding("보기 ㄱ") # true ExtUtil.isCompleteHangul('가') # [true] ExtUtil.isCompleteHangul('ㄱ') # [false] ExtUtil.isCompleteHangul('a나.') # [false, true, false] #### 종성으로 끝나는지 확인 #### ExtUtil.isJongsungEnding('각') # true ExtUtil.isJongsungEnding('가') # false ExtUtil.isJongsungEnding('m') # false #### 초, 중, 종성 한글 자모 값으로 분해 #### ExtUtil.getChosung('가') # ['ㄱ'에 해당하는 초성 문자 \u1100] ExtUtil.getJungsung('가') # ['ㅏ'에 해당하는 초성 문자 \u1161] ExtUtil.getJongsung('가') # [None] ExtUtil.getJongsung('각') # ['ㄱ'에 해당하는 종성문자 \u11A8] ExtUtil.getChosung('ㄱㄴㄷ') # [None, None, None] ExtUtil.dissembleHangul('가') # '\u1100\u1161' ExtUtil.dissembleHangul('각') # '\u1100\u1161\u11A8' ExtUtil.dissembleHangul("가각") # "\u1100\u1161\u1100\u1161\u11A8" (문자 사이를 띄워서 표시하면: 'ᄀ ᅡ ᄀ ᅡ ᆨ') #### 종성 한글 자모값으로 변환 #### ExtUtil.ChoToJong()['ㄵ'] # \u11AC ```