
ikawaha/kagomeKagome是一款用纯Go编写的开源日语形态分析器,核心功能是对日语文本进行分词和词性标注。其词典(如MeCab-IPADIC、UniDic等)和统计模型可嵌入二进制文件中,无需额外依赖库,便于部署。相比v1版本,v2将词典维护在独立仓库,支持按需嵌入,并优化了API设计,提供更灵活的使用方式。
Kagome支持多种主流日语词典,可根据需求选择嵌入:
| 词典类型 | 来源版本 | 对应包地址 |
|---|---|---|
| MeCab IPADIC | mecab-ipadic-2.7.0-20070801 | github.com/ikawaha/kagome-dict/ipa |
| UniDic | unidic-mecab-2.1.2_src | github.com/ikawaha/kagome-dict/uni |
实验性词典(需单独集成):
| 词典类型 | 来源版本 | 对应包地址 |
|---|---|---|
| mecab-ipadic-NEologd | mecab-ipadic-neologd | github.com/ikawaha/kagome-dict-ipa-neologd |
| 韩语MeCab | mecab-ko-dic-2.1.1-20180720 | github.com/ikawaha/kagome-dict-ko |
提供三种分词模式以适应不同场景,类似Kuromoji的分词策略:
| 模式 | 描述 |
|---|---|
| 普通(Normal) | 常规分词,适合标准文本处理 |
| 搜索(Search) | 采用启发式算法进行额外分词,提升搜索场景下的召回率 |
| 扩展(Extended) | 在搜索模式基础上,对未知词进行单字符分词,适合细粒度文本分析 |
分词效果对比:
| 未分词文本 | 普通模式输出 | 搜索模式输出 | 扩展模式输出 |
|---|---|---|---|
| 関西国際空港 | 関西国際空港 | 関西 国際 空港 | 関西 国際 空港 |
| 日本経済新聞 | 日本経済新聞 | 日本 経済 新聞 | 日本 経済 新聞 |
| シニアソフトウェアエンジニア | シニアソフトウェアエンジニア | シニア ソフトウェア エンジニア | シニア ソフトウェア エンジニア |
| デジカメを買った | デジカメ を 買っ た | デジカメ を 買っ た | デ ジ カ メ を 買っ た |
从Docker Hub拉取官方镜像:
bashdocker pull ikawaha/kagome
直接运行容器进行交互式分词(默认使用IPA词典和普通模式):
bashdocker run -it --rm ikawaha/kagome
输入日语文本后回车,即可获得分词结果:
すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS
使用搜索模式和UniDic词典分析文本:
bashdocker run -it --rm ikawaha/kagome tokenize -mode search -sysdict uni
启动后台服务(默认端口6060),通过API提供分词功能:
bashdocker run -d -p 6060:6060 --name kagome-server ikawaha/kagome server
通过curl调用API(需指定sentence和mode参数):
bashcurl -X PUT http://localhost:6060/tokenize -d '{"sentence":"日本経済新聞", "mode":"search"}'
返回JSON格式分词结果:
json{ "tokens": [ {"surface":"日本","features":["名詞","固有名詞","地域","国","*","*","日本","ニッポン","ニッポン"]}, {"surface":"経済","features":["名詞","一般","*","*","*","*","経済","ケイザイ","ケイザイ"]}, {"surface":"新聞","features":["名詞","一般","*","*","*","*","新聞","シンブン","シンブン"]} ] }
挂载本地文件到容器,对文件内容进行分词:
bash# 准备本地输入文件input.txt docker run -it --rm -v $(pwd)/input.txt:/data/input.txt ikawaha/kagome tokenize -file /data/input.txt
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| -file | string | 输入文件路径(为空时进入交互式模式) | 空 |
| -dict | string | 自定义词典文件路径(覆盖系统词典) | 空 |
| -userdict | string | 用户词典文件路径(补充系统词典) | 空 |
| -sysdict | string | 系统词典类型,可选ipa或uni | ipa |
| -simple | bool | 是否仅显示表面分词结果(不显示词性等详细特征) | false |
| -mode | string | 分词模式,可选normal、search或extended | normal |
示例:使用用户词典并简化输出:
bashdocker run -it --rm -v $(pwd)/user.dic:/data/user.dic ikawaha/kagome tokenize -userdict /data/user.dic -simple true
启动HTTP服务,支持通过API调用分词功能,主要参数:
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| -port | int | 服务监听端口 | 6060 |
| -host | string | 服务绑定地址 | 0.0.0.0 |
示例:指定端口启动服务:
bashdocker run -d -p 8080:8080 ikawaha/kagome server -port 8080
生成分词过程的可视化文件(Graphviz dot格式):
bashdocker run -it --rm ikawaha/kagome lattice "私は鰻" > lattice.dot # 需本地安装graphviz以生成图片 dot -Tpng lattice.dot -o lattice.png
创建docker-compose.yml部署Kagome服务:
yamlversion: '3' services: kagome: image: ikawaha/kagome container_name: kagome-service ports: - "6060:6060" command: server -port 6060 # 启动HTTP服务 volumes: - ./user.dic:/app/user.dic # 挂载用户词典(可选) restart: unless-stopped
启动服务:
bashdocker-compose up -d
MIT许可证
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务