
Kagome是一款用纯Go编写的开源日语形态分析器,核心功能是对日语文本进行分词和词性标注。其词典(如MeCab-IPADIC、UniDic等)和统计模型可嵌入二进制文件中,无需额外依赖库,便于部署。相比v1版本,v2将词典维护在独立仓库,支持按需嵌入,并优化了API设计,提供更灵活的使用方式。
Kagome支持多种主流日语词典,可根据需求选择嵌入:
| 词典类型 | 来源版本 | 对应包地址 |
|---|---|---|
| MeCab IPADIC | mecab-ipadic-2.7.0-20070801 | https://github.com/ikawaha/kagome-dict/tree/master/ipa |
| UniDic | unidic-mecab-2.1.2_src | https://github.com/ikawaha/kagome-dict/tree/master/uni |
实验性词典(需单独集成):
| 词典类型 | 来源版本 | 对应包地址 |
|---|---|---|
| mecab-ipadic-NEologd | mecab-ipadic-neologd | https://github.com/ikawaha/kagome-dict-ipa-neologd |
| 韩语MeCab | mecab-ko-dic-2.1.1-20180720 | https://github.com/ikawaha/kagome-dict-ko |
提供三种分词模式以适应不同场景,类似Kuromoji的分词策略:
| 模式 | 描述 |
|---|---|
| 普通(Normal) | 常规分词,适合标准文本处理 |
| 搜索(Search) | 采用启发式算法进行额外分词,提升搜索场景下的召回率 |
| 扩展(Extended) | 在搜索模式基础上,对未知词进行单字符分词,适合细粒度文本分析 |
分词效果对比:
| 未分词文本 | 普通模式输出 | 搜索模式输出 | 扩展模式输出 |
|---|---|---|---|
| 関西国際空港 | 関西国際空港 | 関西 国際 空港 | 関西 国際 空港 |
| 日本経済新聞 | 日本経済新聞 | 日本 経済 新聞 | 日本 経済 新聞 |
| シニアソフトウェアエンジニア | シニアソフトウェアエンジニア | シニア ソフトウェア エンジニア | シニア ソフトウェア エンジニア |
| デジカメを買った | デジカメ を 買っ た | デジカメ を 買っ た | デ ジ カ メ を 買っ た |
从Docker Hub拉取官方镜像:
bashdocker pull ikawaha/kagome
1. 交互式分词(默认tokenize命令)
直接运行容器进行交互式分词(默认使用IPA词典和普通模式):
bashdocker run -it --rm ikawaha/kagome
输入日语文本后回车,即可获得分词结果:
すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS
2. 指定分词模式和词典
使用搜索模式和UniDic词典分析文本:
bashdocker run -it --rm ikawaha/kagome tokenize -mode search -sysdict uni
3. 启动HTTP分词服务
启动后台服务(默认端口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":["名詞","一般","*","*","*","*","新聞","シンブン","シンブン"]} ] }
4. 批量处理文件
挂载本地文件到容器,对文件内容进行分词:
bash# 准备本地输入文件input.txt docker run -it --rm -v $(pwd)/input.txt:/data/input.txt ikawaha/kagome tokenize -file /data/input.txt
tokenize命令(默认命令)
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| -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
server命令
启动HTTP服务,支持通过API调用分词功能,主要参数:
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| -port | int | 服务监听端口 | 6060 |
| -host | string | 服务绑定地址 | 0.0.0.0 |
示例:指定端口启动服务:
bashdocker run -d -p 8080:8080 ikawaha/kagome server -port 8080
lattice命令
生成分词过程的可视化文件(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许可证





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务