Project Icon

Kiwi

韩语形态素高效分析工具,支持多语言包装

Kiwi是一款开源的韩语形态素分析器,旨在以高效速度和高精度为用户提供形态素分析。核心库使用C++编写,并支持Python、Java、C#等多种编程语言。Kiwi基于Sejong词性标注体系,并使用Sejong Corpus和모두의 말뭉치训练模型,能够纠正简单输入错误,并且支持多线程处理,适合大规模文本分析。提供多种实用功能及不同规模的模型选择。

Kiwi : 智能韩语形态素分析器(Korean Intelligent Word Identifier)

KiwiLogo

x86_64: Action Status Centos5 Action Status Windows Action Status Ubuntu Action Status macOS

其他: Action Status ARM64 Action Status PPC64LE

Kiwi是一个追求高速和通用性能的韩语形态素分析器库。它作为开源项目公开,任何对韩语处理感兴趣的人都可以轻松使用。核心库是用C++实现的,正在准备跨多种编程语言使用的包装。

形态素分析基于世宗词性标签系统,模型训练采用了世宗计划语料库和所有人语料库。对于网络文本约87%,书写文本约94%的准确率可以分析韩语句子的形态素。此外,对于简单的拼写错误,模型可以自行纠正(0.13.0版本之后)。

由于还有很多不足之处,恳请开发者们多多关注和贡献。

特点

速度

文本分析速度相比其他韩语形态素分析器相当快。(速度测试可以通过这段代码进行)

消解性能

此外,自带轻量级语言模型,即使存在歧义的情况下也能相当准确地分析形态素。使用SBG模型时,消解性能显著提升。(消解性能评估可以在这个页面进行)

句子分离性能

提供了包括句子分离功能在内的多种便捷功能。(句子分离性能评估可以在这个页面进行)

库层面支持多线程,因此需要分析大量文本时可以利用多核进行快速分析。此外,根据不同系统提供了小型/中型/大型模型供选择。

安装

C++

下载已编译的二进制文件

可以在https://github.com/bab2min/Kiwi/releases 下载编译好的Windows,Linux,macOS版本的库文件和模型文件。

Windows

使用Visual Studio 2019及以上版本运行Kiwi.sln文件进行编译。

Linux

在克隆这个仓库后,使用cmake>=3.12进行编译。 由于模型文件容量较大,通过Git LFS进行共享。因此,在git clone之前,请确保已安装Git LFS。

gcc >= 5.0或其他兼容c++11的编译环境
$ git clone https://github.com/bab2min/Kiwi
$ cd Kiwi
$ git lfs pull
$ git submodule sync
$ git submodule update --init --recursive
$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ../
$ make
$ make install
$ ldconfig
gcc >= 4.8, < 5.0

在像Centos5只支持gcc 4.8的环境下,需要将googletest的版本降到1.8.x才能编译。

$ git clone https://github.com/bab2min/Kiwi
$ cd Kiwi
$ git lfs pull
$ git submodule sync
$ git submodule update --init --recursive
$ cd third_party/googletest && git checkout v1.8.x && cd ../../
$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ../
$ make
$ make install
$ ldconfig

为了确认安装是否顺利,可以运行kiwi-evaluator

$ ./kiwi-evaluator --model ../ModelGenerator ../eval_data/* --sbg
Loading Time : 981.745 ms
ArchType : avx2
LM Size : 34.1853 MB
Mem Usage : 278.129 MB

Test file: eval_data/web.txt
0.862114, 0.852863
Total (158 lines) Time : 301.702 ms
Time per Line : 1.9095 ms
================
Test file: eval_data/written.txt
0.942892, 0.943506
Total (33 lines) Time : 62.3999 ms
Time per Line : 1.89091 ms
================
Test file: eval_data/web_with_typos.txt
0.754417, 0.720886
Total (97 lines) Time : 99.7661 ms
Time per Line : 1.02852 ms
================

================
Avg Score
0.853141, 0.839085
================

为了确认0.13.0版本之后新增的拼写错误纠正功能是否正常工作,可以按以下方式运行。

$ ./kiwi-evaluator --model ../ModelGenerator ../eval_data/* --sbg --typo 6
Loading Time : 9414.45 ms
ArchType : avx2
LM Size : 34.1853 MB
Mem Usage : 693.945 MB

Test file: eval_data/web.txt
0.86321, 0.85566
Total (158 lines) Time : 432.236 ms
Time per Line : 2.73567 ms
================
Test file: eval_data/written.txt
0.941712, 0.942217
Total (33 lines) Time : 95.3079 ms
Time per Line : 2.88812 ms
================
Test file: eval_data/web_with_typos.txt
0.869582, 0.865393
Total (97 lines) Time : 169.416 ms
Time per Line : 1.74656 ms
================

================
Avg Score
0.891501, 0.887757
================

C API

请参考include/kiwi/capi.h。

下载已编译的二进制文件

可以在https://github.com/bab2min/Kiwi/releases 下载编译好的Windows,Linux,macOS版本的库文件和模型文件。

C# 封装

https://github.com/bab2min/kiwi-gui

Python3 封装

同时有提供Python3的API,名为Kiwipiepy。关于它的更多信息,请参考https://github.com/bab2min/kiwipiepy。

Java 封装

在Java 1.8及以上版本可用的KiwiJava作为Java绑定提供。关于它的更多信息,请参考bindings/java

R 包装器

mrchypark贡献的R语言用包装器elbird

GO 包装器

codingpot社区制作的Go语言用包装器kiwigo

Web Assembly (Javascript/Typescript)

RicBent贡献的Web Assembly绑定。详情请参考bindings/wasm

应用程序

Kiwi也以基于C#的GUI形式提供。如果需要使用形态素分析器,但没有编程知识,可以使用此程序。该程序仅在Windows上运行。可以从https://github.com/bab2min/kiwi-gui 下载。

更新日志

有关更新日志,请参考发布说明

词性标签

我们以世宗词性标签为基础,并添加/修改了一些词性标签。

大类标签说明
名词 (N)NNG普通名词
NNP专有名词
NNB依存名词
NR数词
NP代词
动词 (V)VV动词
VA形容词
VX辅助动词
VCP肯定指示词(是)
VCN否定指示词(不是)
冠形词MM冠形词
副词 (MA)MAG普通副词
MAJ连接副词
感叹词IC感叹词
助词 (J)JKS主格助词
JKC补格助词
JKG冠形格助词
JKO目的格助词
JKB副词格助词
JKV呼格助词
JKQ引用格助词
JX补助助词
JC连接助词
词尾 (E)EP先语末尾
EF终结尾
EC连接尾
ETN名词形转换尾
ETM冠形形转换尾
前缀XPN名词前缀
后缀 (XS)XSN名词派生后缀
XSV动词派生后缀
XSA形容词派生后缀
XSM副词派生后缀*
词根XR词根
符号、外语、特殊字符 (S)SF终止符号(. ! ?)
SP分隔符号(, / : ;)
SS引号及括号(' " ( ) [ ] < > { } ― ‘ ’ “ ” ≪ ≫ 等)
SSOSS中的左引号*
SSCSS中的右引号*
SE省略号(…)
SO连接符号(- ~)
SW其他特殊字符
SL字母(A-Z a-z)
SH汉字
SN数字(0-9)
SB有顺序的项目符号(例如:가. 나. 1. 2. 가) 나) 等)*
无法分析UN无法分析*
网页 (W)W_URLURL 地址*
W_EMAIL电子邮件地址*
W_HASHTAG标签(#abcd)*
W_MENTION@提及(@abcd)*
W_SERIAL序列号(电话号码,银行账号,IP地址等)*
W_EMOJI表情符号*
其他Z_CODA附加尾音*
USER0~4用户自定义标签*

* 与世宗词性标签不同的是,我们采用了独特的标签。

自0.12.0版本起,VVVAVXXSA标签后可附加表示是否具有不规则变形的后缀-R-I。其中-R表示规则变形,-I表示不规则变形。

性能指标

模型(文件大小)网页精炼网页新闻文学
小型(15.9MB)86.8593.5889.7395.19
中型(39.9MB)87.0994.1291.2396.73
大型(90.4MB)86.9993.4792.3797.68

结果示例

프랑스의 세계적인 의상 디자이너 엠마누엘 웅가로가 실내 장식용 직물 디자이너로 나섰다.
(正解) 프랑스/NNP 의/JKG 세계/NNG 적/XSN 이/VCP ㄴ/ETM 의상/NNG 디자이너/NNG 엠마누엘/NNP 웅가로/NNP 가/JKS 실내/NNG 장식/NNG 용/XSN 직물/NNG 디자이너/NNG 로/JKB 나서/VV 었/EP 다/EF ./SF
(Kiwi) 프랑스/NNP 의/JKG 세계/NNG 적/XSN 이/VCP ᆫ/ETM 의상/NNG 디자이너/NNG 엠마누/NNP 에/JKB ᆯ/JKO 웅가로/NNP 가/JKS 실내/NNG 장식/NNG 용/XSN 직물/NNG 디자이너/NNG 로/JKB 나서/VV 었/EP 다/EF ./SF

둥글둥글한 돌은 아무리 굴러도 흔적이 남지 않습니다. (정답) 둥글둥글/MAG 하/XSA ㄴ/ETM 돌/NNG 은/JX 아무리/MAG 구르/VV 어도/EC 흔적/NNG 이/JKS 남/VV 지/EC 않/VX 습니다/EF ./SF (Kiwi) 둥글둥글/MAG 하/XSA ᆫ/ETM 돌/NNG 은/JX 아무리/MAG 구르/VV 어도/EC 흔적/NNG 이/JKS 남/VV 지/EC 않/VX 습니다/EF ./SF

하늘을 훨훨 나는 새처럼 (정답) 하늘/NNG 을/JKO 훨훨/MAG 날/VV 는/ETM 새/NNG 처럼/JKB (Kiwi) 하늘/NNG 을/JKO 훨훨/MAG 날/VV 는/ETM 새/NNG 처럼/JKB

아버지가방에들어가신다 (정답) 아버지/NNG 가/JKS 방/NNG 에/JKB 들어가/VV 시/EP ㄴ다/EF (Kiwi) 아버지/NNG 가/JKS 방/NNG 에/JKB 들어가/VV 시/EP ᆫ다/EC

## 데모

https://lab.bab2min.pe.kr/kiwi 에서 데모를 실행해 볼 수 있습니다.


## 라이센스
Kiwi는 LGPL v3 라이센스로 배포됩니다. 

이메일: bab2min@gmail.com

블로그: http://bab2min.tistory.com/560

## 기여하기
자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md) 에서 확인해주세요.

## 인용하기
DOI 혹은 아래의 BibTex를 이용해 인용해주세요.
[![DOI](https://yellow-cdn.veclightyear.com/2b54e442/d55d24cc-52ce-4e63-9143-3117cc9331ae.svg)](https://doi.org/10.23287/KJDH.2024.1.1.6)
```text
@article{43508,
title = {Kiwi: 통계적 언어 모델과 Skip-Bigram을 이용한 한국어 형태소 분석기 구현},
journal = {디지털인문학},
volume = {1},
number = {1},
page = {109-136},
year = {2024},
issn = {3058-311X},
doi = {https://doi.org/10.23287/KJDH.2024.1.1.6},
url = {https://kjdh/v.1/1/109/43508},
author = {민철 이},
keywords = {한국어, 자연어처리, 형태소 분석기, 모호성 해소, 언어 모델},
abstract = {한국어 형태소 분석 시 모델이 마주하는 어려움 중 하나는 모호성이다. 이는 한국어에서 기저형이 전혀 다른 형태소 조합이 동일한 표면형을 가질 수 있기 때문에 발생하며 이를 바르게 분석하기 위해서는 문맥을 고려하는 능력이 모델에게 필수적이다. 형태소 분석기 Kiwi는 이를 해결하기 위해 근거리 맥락을 고려하는 통계적 언어 모델과 원거리 맥락을 고려하는 Skip-Bigram 모델을 조합하는 방식을 제안한다. 제안된 방식은 모호성 해소에서 평균 정확도 86.7%를 달성하여 평균 50~70%에 머무르는 기존의 오픈소스 형태소 분석기, 특히 딥러닝 기반의 분석기들보다도 앞서는 결과를 보였다. 또한 최적화된 경량 모델을 사용한 덕분에 타 분석기보다 빠른 속도를 보여 대량의 텍스트를 분석하는 데에도 유용하게 쓰일 수 있다. 오픈소스로 공개된 Kiwi는 전술한 특징들 덕분에 텍스트 마이닝, 자연어처리, 인문학 등 다양한 분야에서 널리 사용되고 있다. 본 연구는 형태소 분석의 정확도와 효율성을 모두 개선했으나, 미등록어 처리와 한국어 방언 분석 등의 과제에서 한계를 보여 이에 대한 추가 보완이 필요하다.},
}
@article{43508,
title = {Kiwi: Developing a Korean Morphological Analyzer Based on Statistical Language Models and Skip-Bigram},
journal = {Korean Journal of Digital Humanities},
volume = {1},
number = {1},
page = {109-136},
year = {2024},
issn = {3058-311X},
doi = {https://doi.org/10.23287/KJDH.2024.1.1.6},
url = {https://kjdh/v.1/1/109/43508},
author = {Min-chul Lee},
keywords = {한국어, 자연어처리, 형태소 분석기, 모호성 해소, 언어 모델},
abstract = {One of the challenges faced by models in Korean morphological analysis is ambiguity. This arises because different combinations of morphemes with completely different base forms can share the same surface form in Korean, necessitating the model's ability to consider context for accurate analysis. The morphological analyzer Kiwi addresses this issue by proposing a combination of a statistical language model that considers local context and a Skip-Bigram model that considers global context. This proposed method achieved an average accuracy of 86.7% in resolving ambiguities, outperforming existing open-source morphological analyzers, particularly deep learning-based ones, which typically achieve between 50-70%. Additionally, thanks to the optimized lightweight model, Kiwi shows faster speeds compared to other analyzers, making it useful for analyzing large volumes of text. Kiwi, released as open source, is widely used in various fields such as text mining, natural language processing, and the humanities due to these features. Although this study improved both the accuracy and efficiency of morphological analysis, it shows limitations in handling out-of-vocabulary problem and analyzing Korean dialects, necessitating further improvements in these areas.},
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号