├── .github
├── ISSUE_TEMPLATE.md
└── PULL_REQUEST_TEMPLATE
├── .gitignore
├── .jsdoc.json
├── .npmignore
├── .travis.yml
├── API.js
├── ExtUtil.js
├── LICENSE
├── README.md
├── Util.js
├── _config.yml
├── babel.config.js
├── common.js
├── data.js
├── docs
├── .nojekyll
├── API.js.html
├── ExtUtil.js.html
├── Util.js.html
├── data.js.html
├── index.html
├── module-koalanlp_API.html
├── module-koalanlp_ExtUtil.html
├── module-koalanlp_Util.html
├── module-koalanlp_data.CoreferenceGroup.html
├── module-koalanlp_data.DAGEdge.html
├── module-koalanlp_data.DepEdge.html
├── module-koalanlp_data.Entity.html
├── module-koalanlp_data.Morpheme.html
├── module-koalanlp_data.RoleEdge.html
├── module-koalanlp_data.Sentence.html
├── module-koalanlp_data.SyntaxTree.html
├── module-koalanlp_data.Tree.html
├── module-koalanlp_data.Word.html
├── module-koalanlp_data.html
├── module-koalanlp_proc.Dictionary.html
├── module-koalanlp_proc.EntityRecognizer.html
├── module-koalanlp_proc.Parser.html
├── module-koalanlp_proc.RoleLabeler.html
├── module-koalanlp_proc.SentenceSplitter.html
├── module-koalanlp_proc.Tagger.html
├── module-koalanlp_proc.UTagger.html
├── module-koalanlp_proc.html
├── module-koalanlp_types.CoarseEntityType.html
├── module-koalanlp_types.DependencyTag.html
├── module-koalanlp_types.POS.html
├── module-koalanlp_types.PhraseTag.html
├── module-koalanlp_types.RoleType.html
├── module-koalanlp_types.html
├── proc.js.html
├── scripts
│ ├── collapse.js
│ ├── linenumber.js
│ ├── nav.js
│ ├── polyfill.js
│ ├── prettify
│ │ ├── Apache-License-2.0.txt
│ │ ├── lang-css.js
│ │ └── prettify.js
│ └── search.js
├── styles
│ ├── jsdoc.css
│ └── prettify.css
└── types.js.html
├── index.js
├── jest.config.js
├── jvm.js
├── package.json
├── proc.js
├── publish.sh
├── scripts
├── khaiii_install.sh
└── utagger_install.sh
├── src
├── API.js
├── ExtUtil.js
├── Util.js
├── common.js
├── data.js
├── jvm.js
├── proc.js
└── types.js
├── test
├── datacheck.js
├── dictionary.js
├── execute.all.js
├── extension.js
├── khaiiiTest.js
├── proc.js
├── proc_common.js
├── type.js
└── utaggerTest.js
├── types.js
└── yarn.lock
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ### 기초정보
2 | - Node.js 버전은요? (Version of the Node.js)?
3 | - KoalaNLP 버전은요? (Version of KoalaNLP)?
4 | - 문제의 유형은 어떤 것인가요? (Type of this issue)?
5 | - [ ] 버그리포트. Bug report
6 | - [ ] 개선점제안. Idea/Suggestion for a improvement
7 | - [ ] 사용법질문. Question about using KoalaNLP
8 | - [ ] 기타. Other
9 |
10 | ### 재연을 위한 정보
11 | - 어떤 문장을 시도하셨습니까? (Which sentence/paragraph did you try?)
12 | ```text
13 | [Write the sentence here/여기에 문장을 넣어주세요]
14 | ```
15 | - KoalaNLP를 사용한 코드 부분을 보여주세요. (Please show your code snippet which uses KoalaNLP.)
16 | ```scala
17 | [Write your code snippet here. Don't forget to change the language type at the above line, 'scala'.]
18 | [여기에 사용한 코드부분을 보여주세요. 윗줄에 'scala'라고 되어있는 언어유형을 사용중인 언어로 바꾸는것을 권합니다.]
19 | ```
20 |
21 | ### 본문
22 | - 아래에 본문을 입력해주세요. (Describe your issue here.)
23 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE:
--------------------------------------------------------------------------------
1 | ### 이슈를 참조해주세요. (Reference of the issue)
2 | 이 Pull Request는 이슈 #[번호]를 수정하기 위한 것입니다.
3 | This is a fix for issue #[number]
4 |
5 | ### 무엇이 변경되었나요? (Description of the changes)
6 | - 어떤 파일의, 어떤 부분을, 어떻게 바꾸셨나요?
7 | - Which file did you modified? And how?
8 |
9 | ### 확인자 (Reviewer)
10 | - 누가 이 Request를 확인하고 승인해야하나요? 아래와 같이 Mention해 주세요.
11 | - Who are responsible for review? Please mention them.
12 | Author @[author].
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Node template
3 | # Logs
4 | logs
5 | *.log
6 | npm-debug.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # node-waf configuration
27 | .lock-wscript
28 |
29 | # Compiled binary addons (http://nodejs.org/api/addons.html)
30 | build/Release
31 |
32 | # Dependency directories
33 | node_modules
34 | jspm_packages
35 |
36 | # Optional npm cache directory
37 | .npm
38 |
39 | # Optional eslint cache
40 | .eslintcache
41 |
42 | # Optional REPL history
43 | .node_repl_history
44 |
45 | # Output of 'npm pack'
46 | *.tgz
47 |
48 | # Yarn Integrity file
49 | .yarn-integrity
50 |
51 | ### JetBrains template
52 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
53 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
54 |
55 | # User-specific stuff:
56 | .idea
57 |
58 | ## File-based project format:
59 | *.iws
60 |
61 | ## Plugin-specific files:
62 |
63 | # IntelliJ
64 | /out/
65 |
66 | # mpeltonen/sbt-idea plugin
67 | .idea_modules/
68 |
69 | # JIRA plugin
70 | atlassian-ide-plugin.xml
71 |
72 | # Crashlytics plugin (for Android Studio and IntelliJ)
73 | com_crashlytics_export_strings.xml
74 | crashlytics.properties
75 | crashlytics-build.properties
76 | fabric.properties
77 |
78 | coverage/
--------------------------------------------------------------------------------
/.jsdoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": [
3 | "plugins/markdown"
4 | ],
5 | "sourceType": "module",
6 | "source": {
7 | "include": ["src/", "README.md"],
8 | "exclude": ["src/jvm.js"]
9 | },
10 | "tags": {
11 | "allowUnknownTags": true,
12 | "dictionaries": ["jsdoc","closure"]
13 | },
14 | "templates": {
15 | "cleverLinks": false,
16 | "monospaceLinks": true
17 | },
18 | "opts": {
19 | "template": "node_modules/docdash",
20 | "encoding": "utf8",
21 | "destination": "docs/",
22 | "recurse": true,
23 | "verbose": true
24 | },
25 | "docdash": {
26 | "sort": false,
27 | "sectionOrder": [
28 | "Modules",
29 | "Classes",
30 | "Externals",
31 | "Events",
32 | "Namespaces",
33 | "Mixins",
34 | "Tutorials",
35 | "Interfaces"
36 | ],
37 | "search": true,
38 | "collapse": true,
39 | "typedefs": false,
40 | "menu": {
41 | "사용법 안내": {
42 | "href": "https://koalanlp.github.io/koalanlp/usage",
43 | "target":"_blank",
44 | "class":"menu-item",
45 | "id":"website_link"
46 | },
47 | "참고: Java/Kotlin API": {
48 | "href": "https://koalanlp.github.io/koalanlp",
49 | "target":"_blank",
50 | "class":"menu-item",
51 | "id":"website_link"
52 | },
53 | "참고: Scala API": {
54 | "href": "https://koalanlp.github.io/scala-support",
55 | "target":"_blank",
56 | "class":"menu-item",
57 | "id":"website_link"
58 | },
59 | "참고: Python3 API": {
60 | "href": "https://koalanlp.github.io/python-support",
61 | "target":"_blank",
62 | "class":"menu-item",
63 | "id":"website_link"
64 | }
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | src/
3 | docs/
4 | test/
5 | *.lock
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | matrix:
3 | include:
4 | - name: "Windows with OpenJDK 11 (LTS)"
5 | os: windows
6 | language: shell
7 | filter_secrets: false
8 | before_install:
9 | - choco install openjdk11 -y
10 | - choco install nodejs-lts -y
11 | - choco install yarn -y
12 | - export PATH=$(cmd.exe //c "refreshenv > nul & C:\Progra~1\Git\bin\bash -c 'echo \$PATH' ")
13 | - java --version
14 | - node -v
15 | env:
16 | - JAVA_HOME="/c/Progra~1/OpenJDK/openjdk-11.0.11_9"
17 | cache:
18 | directories:
19 | - $HOME/.m2
20 | - $HOME/utagger
21 | - name: "OSX11.3 with OpenJDK 11 (LTS)"
22 | os: osx
23 | osx_image: xcode12u
24 | language: shell
25 | jdk: openjdk11
26 | before_install:
27 | - brew install yarn
28 | - java --version
29 | - node -v
30 | - export JAVA_HOME=$(dirname $(readlink $(which javac)))/java_home
31 | - export DYLD_INSERT_LIBRARIES="${JAVA_HOME}/lib/server/libjvm.dylib"
32 | - echo $JAVA_HOME
33 | env:
34 | - LDFLAGS="${LDFLAGS} -L$(brew --prefix zlib)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib"
35 | - CPPFLAGS="${CPPFLAGS} -I$(brew --prefix zlib)/include -I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/include -I${JAVA_HOME}/include/darwin/"
36 | - PKG_CONFIG_PATH="${PKG_CONFIG_PATH} $(brew --prefix zlib)/lib/pkgconfig"
37 | cache:
38 | directories:
39 | - $HOME/.m2
40 | - $HOME/khaiii-orig
41 | - $HOME/.hunter
42 | - name: "Ubuntu Focal with OpenJDK 11 (LTS)"
43 | dist: focal
44 | jdk: openjdk11
45 | node_js: "lts/*"
46 | before_install:
47 | - java --version
48 | - node -v
49 | cache:
50 | directories:
51 | - $HOME/.m2
52 | - $HOME/khaiii-orig
53 | - $HOME/.hunter
54 | script:
55 | - yarn run test
56 | after_success:
57 | - if [ $TRAVIS_OS_NAME == 'linux' ]; then ./node_modules/.bin/codecov; fi
58 | install:
59 | - yarn install --force
60 | - if [ $TRAVIS_OS_NAME != 'windows' ]; then bash ./scripts/khaiii_install.sh; fi
61 | - if [ $TRAVIS_OS_NAME == 'windows' ]; then bash ./scripts/utagger_install.sh; fi
62 | env:
63 | global:
64 | - secure: kj3rDRzVlZo83j1IJKVn9aYLW6/S9ZL8voe3Bc3wr9kFdKIG13yIfxqIvnxSOt2dvX49gEYSBAurXhDIQXSWsq96cC0QDIGU2Htkw5wHU7RMpFf0CNfIuetbQOVxp088IFMOJeBQDHHoZTU77NEPg+QFyJMJqTiYTdJtZkKuMsn9MB6QJsAg5S7BbEKjMpMwXIe7FsMlNgbLOqUapX5RVp0OPN8pWV0SZxl8Z4z4i0D1XtElhYaIRJM6cg3X5G8maoBqov1D0iHq5w//RoH52CshxO0UUApKKEPAhpScDjkvdM4EtVm1lzeWD8coRhQ2aALKHpRZAoICJAVhmkjIa8SFJ4r/TlEDEiBtXdS2CkHES3KMi6dE6fC8o3UfEMrPfWTIhMhm/F0YtnQuGO7upym+AUdwVaxlx3JPop05wMwtPTaERKl3IDF1COh6TOWCMQUXfkI8jIpZvbTxf0SVDUOa8XlSORdFO3MRbUbk/k6Hmh29Ms16jRj4bPDVx8TXHHxL4pQ30JcyCuXh2H5Z0zRjAbeLCDxVgDp0ycvfxt+DR9jWpsyGaglfCFYr99nqqtDhexxXOmh52dpfVKLw1Ybx3Cy3Gy0TiDnX+6HKxmECC1hmrzEotXmTQM3UixMo8hTMrx439rdvbChZ3SfJTB/bBk/6nLWznkXdD7bq5AY=
65 | - secure: kZzjdvKk1+PuMzKIdoSmuaD6P8VTRCJeWizVq8/QCTXBAO9MYvjsG7/OkRsdobDsVnPc+XVuQzWPv/VFytCfQHO1YeC5UmAqfM+r/X3UQT8w3yi8M/ZR+Y8Q6D+6s3grldd3ocVvoSwasuxRuTBGcnIRA5QOfvh7r43JIBGGm+C3REenVplJZchJTuE+kAgw4eSCbt0AArE3Evtm7N9bnQNdoNCdjoLdW0aP3zqNc/2hvaYGLyeX4gdrVF19QUqEvpqNYI7dYg4IYgD+ISAmESx+dd84IjSZ8Q/hkNbgQ2/c0IWYmr3aqxOI2+YebISn/d1VFox4PIF8McJmb4LZ1y9FwVV/ZjLCuv4MUgk63Ytq9mM2QRJS8mqPjS4ei1yHI50Wn3US2BOWGQyvv0F/zMJU4VVy9Uze0B6Z9JUJEk9hQAHMq3Epc8CO4Bupka/buLg5j++dD0ksa2i9K/R+3CWGr5nFJB+hMKnDUZAtx2v93C/ENEQtJnsYYDRwx6qa5s+l3TmvS8mCXzyZ+oOwr8JOgiGbxvASq93+3a+2dF/hl4nXfOysh49x71fszztNzuyMek/OQxsPOl6ielkRApIDILTg+D6rHTVxeBaeriBohSOReLg7bW0XqxBNvuhncSapW7j4LwIyZv+F+TqlpHhWySME0+5PgZfyU3AMO/c=
66 | - KHAIII_RSC=$HOME/khaiii-orig/build/share/khaiii
67 | - KHAIII_LIB=$HOME/khaiii-orig/build/lib
--------------------------------------------------------------------------------
/API.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | Object.defineProperty(exports, "__esModule", {
4 | value: true
5 | });
6 | exports.query = query;
7 | exports.getPackage = getPackage;
8 | exports.PACKAGE_REQUIRE_ASSEMBLY = exports.CORE = exports.UTAGGER = exports.KHAIII = exports.ETRI = exports.DAON = exports.OKT = exports.RHINO = exports.ARIRANG = exports.EUNJEON = exports.KKMA = exports.KMR = exports.HNN = void 0;
9 |
10 | var _jvm = require("./jvm");
11 |
12 | /**
13 | * KoalaNLP가 지원하는 패키지의 목록을 키값으로 가지고 있습니다.
14 | *
15 | * * **주의** API를 import한다고 하여 자동으로 초기화가 되지 않으니 꼭 {@link module:koalanlp/Util.initialize}를 실행하시기 바랍니다.
16 | *
17 | * @module koalanlp/API
18 | * @example
19 | * import * as API from 'koalanlp/API';
20 | * **/
21 |
22 | /**
23 | * @public
24 | * @typedef {string} API
25 | */
26 |
27 | /**
28 | * 한나눔.
29 | * 현재
버전이 최신입니다. 문장분리, 품사분석, 구문분석, 의존분석이 가능합니다.
30 | * @type API
31 | * @example
32 | * import {HNN} from 'koalanlp/API';
33 | */
34 | const HNN = 'hnn';
35 | /**
36 | * 코모란.
37 | * 현재
버전이 최신입니다. 품사분석만 가능합니다.
38 | * @type API
39 | * @example
40 | * import {KMR} from 'koalanlp/API';
41 | */
42 |
43 | exports.HNN = HNN;
44 | const KMR = 'kmr';
45 | /**
46 | * 꼬꼬마.
47 | * 현재
버전이 최신입니다. 품사분석, 의존분석만 가능합니다.
48 | * @type API
49 | * @example
50 | * import {KKMA} from 'koalanlp/API';
51 | */
52 |
53 | exports.KMR = KMR;
54 | const KKMA = 'kkma';
55 | /**
56 | * 은전한닢.
57 | * 현재
버전이 최신입니다. 품사분석만 가능합니다.
58 | * @type API
59 | * @example
60 | * import {EUNJEON} from 'koalanlp/API';
61 | */
62 |
63 | exports.KKMA = KKMA;
64 | const EUNJEON = 'eunjeon';
65 | /**
66 | * 아리랑.
67 | * 현재
버전이 최신입니다. 품사분석만 가능합니다.
68 | * @type API
69 | * @example
70 | * import {ARIRANG} from 'koalanlp/API';
71 | */
72 |
73 | exports.EUNJEON = EUNJEON;
74 | const ARIRANG = 'arirang';
75 | /**
76 | * 라이노.
77 | * 현재
버전이 최신입니다. 품사분석만 가능합니다.
78 | * @type API
79 | * @example
80 | * import {RHINO} from 'koalanlp/API';
81 | */
82 |
83 | exports.ARIRANG = ARIRANG;
84 | const RHINO = 'rhino';
85 | /**
86 | * 트위터.
87 | * 현재
버전이 최신입니다. 문장분리, 품사분석만 가능합니다.
88 | * @type API
89 | * @example
90 | * import {OKT} from 'koalanlp/API';
91 | */
92 |
93 | exports.RHINO = RHINO;
94 | const OKT = 'okt';
95 | /**
96 | * 다온.
97 | * 현재
버전이 최신입니다. 품사분석만 가능합니다.
98 | * @type API
99 | * @example
100 | * import {DAON} from 'koalanlp/API';
101 | */
102 |
103 | exports.OKT = OKT;
104 | const DAON = 'daon';
105 | /**
106 | * ETRI Open API.
107 | * 현재
버전이 최신입니다.
108 | * @type API
109 | * @example
110 | * import {ETRI} from 'koalanlp/API';
111 | */
112 |
113 | exports.DAON = DAON;
114 | const ETRI = 'etri';
115 | /**
116 | * Kakao Khaiii (Experimental)
117 | * 현재
버전이 최신입니다.
118 | *
119 | * **(참고)**
120 | * - 이 기능은 현재 실험적인 기능입니다.
121 | * - Khaiii는 C++로 개발되어 별도 설치가 필요합니다. [Khaiii](https://github.com/kakao/khaiii) 공식 홈페이지에서 설치법을 확인하시고, 설치하시면 됩니다.
122 | *
123 | * @type API
124 | * @example
125 | * import {KHAIII} from 'koalanlp/API';
126 | */
127 |
128 | exports.ETRI = ETRI;
129 | const KHAIII = 'khaiii';
130 | /**
131 | * UTagger (Experimental)
132 | * 현재
버전이 최신입니다.
133 | *
134 | * **(참고)**
135 | * - 이 기능은 현재 실험적인 기능입니다.
136 | * - UTagger는 C로 개발되어 별도 설치가 필요합니다. [UTagger install](https://koalanlp.github.io/usage/Install-UTagger.md)에서 설치법을 확인하시고, 설치하시면 됩니다.
137 | *
138 | * @type API
139 | * @example
140 | * import {UTAGGER} from 'koalanlp/API';
141 | */
142 |
143 | exports.KHAIII = KHAIII;
144 | const UTAGGER = 'utagger';
145 | /**
146 | * 분석기 Interface 정의 라이브러리.
147 | * 현재
버전이 최신입니다. 편의기능을 제공하며 타 분석기 참조시 함께 참조됩니다.
148 | * @type API
149 | * @example
150 | * import {CORE} from 'koalanlp/API';
151 | */
152 |
153 | exports.UTAGGER = UTAGGER;
154 | const CORE = 'core';
155 | /**
156 | * 'assembly' classifier 필요 여부
157 | * @private
158 | */
159 |
160 | exports.CORE = CORE;
161 | const PACKAGE_REQUIRE_ASSEMBLY = [HNN, KKMA, ARIRANG, RHINO, DAON];
162 | /**
163 | * 해당 API가 분석기를 지원하는지 확인함.
164 | * @param {!API} api 분석기 API
165 | * @param {!string} type 분석기 유형
166 | * @returns {Object} 지원한다면 해당 분석기 Java 클래스.
167 | * @private
168 | */
169 |
170 | exports.PACKAGE_REQUIRE_ASSEMBLY = PACKAGE_REQUIRE_ASSEMBLY;
171 |
172 | function query(api, type) {
173 | try {
174 | return _jvm.JVM.koalaClassOf(api, type);
175 | } catch (e) {
176 | throw Error(`API.${api}에서 ${type}을 불러오는 데 실패했습니다! ${type}이 없거나, 다운로드가 완전하지 않았을 수 있습니다. Cause: ${e}`);
177 | }
178 | }
179 | /**
180 | * API의 패키지 이름 반환
181 | * @param {string} api 분석기 API
182 | * @return {string} 패키지 이름 접미사
183 | * @private
184 | */
185 |
186 |
187 | function getPackage(api) {
188 | return api.toLowerCase();
189 | }
--------------------------------------------------------------------------------
/ExtUtil.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | Object.defineProperty(exports, "__esModule", {
4 | value: true
5 | });
6 | exports.alphaToHangul = alphaToHangul;
7 | exports.hangulToAlpha = hangulToAlpha;
8 | exports.isAlphaPronounced = isAlphaPronounced;
9 | exports.isHanja = isHanja;
10 | exports.isCJKHanja = isCJKHanja;
11 | exports.hanjaToHangul = hanjaToHangul;
12 | exports.isCompleteHangul = isCompleteHangul;
13 | exports.isIncompleteHangul = isIncompleteHangul;
14 | exports.isHangul = isHangul;
15 | exports.isHangulEnding = isHangulEnding;
16 | exports.isChosungJamo = isChosungJamo;
17 | exports.isJungsungJamo = isJungsungJamo;
18 | exports.isJongsungJamo = isJongsungJamo;
19 | exports.isJongsungEnding = isJongsungEnding;
20 | exports.getChosung = getChosung;
21 | exports.getJungsung = getJungsung;
22 | exports.getJongsung = getJongsung;
23 | exports.dissembleHangul = dissembleHangul;
24 | exports.assembleHangulTriple = assembleHangulTriple;
25 | exports.assembleHangul = assembleHangul;
26 | exports.correctVerbApply = correctVerbApply;
27 | exports.ChoToJong = exports.HanLastList = exports.HanSecondList = exports.HanFirstList = void 0;
28 |
29 | var _jvm = require("./jvm");
30 |
31 | var _underscore = _interopRequireDefault(require("underscore"));
32 |
33 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34 |
35 | /**
36 | * 여러 편의기능을 모아놓은 Module입니다.
37 | * @module koalanlp/ExtUtil
38 | * @example
39 | * import * as ExtUtil from 'koalanlp/ExtUtil';
40 | **/
41 |
42 | /**
43 | * 초성 조합형 문자열 리스트 (UNICODE 순서)
44 | *
45 | * 'ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'
46 | *
47 | * @type {ReadonlyArray}
48 | * @example
49 | * import * as ExtUtil from 'koalanlp/ExtUtil';
50 | * console.log(ExtUtil.HanFirstList[0]);
51 | */
52 | const HanFirstList = Object.freeze(_underscore.default.range(0x1100, 0x1112 + 1).map(x => String.fromCharCode(x)));
53 | /**
54 | * 중성 조합형 문자열 리스트 (UNICODE 순서)
55 | *
56 | * 'ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ'
57 | *
58 | * @type {ReadonlyArray}
59 | * @example
60 | * import * as ExtUtil from 'koalanlp/ExtUtil';
61 | * console.log(ExtUtil.HanSecondList[0]);
62 | */
63 |
64 | exports.HanFirstList = HanFirstList;
65 | const HanSecondList = Object.freeze(_underscore.default.range(0x1161, 0x1175 + 1).map(x => String.fromCharCode(x)));
66 | /**
67 | * 종성 조합형 문자열 리스트 (UNICODE 순서). 가장 첫번째는 null (받침 없음)
68 | *
69 | * undefined, 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ',
70 | * 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'
71 | *
72 | * @type {ReadonlyArray}
73 | * @example
74 | * import * as ExtUtil from 'koalanlp/ExtUtil';
75 | * console.log(ExtUtil.HanLastList[0]);
76 | */
77 |
78 | exports.HanSecondList = HanSecondList;
79 | const HanLastList = Object.freeze(_underscore.default.range(0x11A7, 0x11C2 + 1).map(x => {
80 | if (x === 0x11A7) return undefined;else return String.fromCharCode(x);
81 | }));
82 | /**
83 | * 초성 문자를 종성 조합형 문자로 변경할 수 있는 map
84 | * @type {Readonly