Kagome v2
Kagome是一个用纯Go语言编写的开源日语形态素分析器。
可以将MeCab-IPADIC、UniDic(unidic-mecab)等词典/统计模型嵌入二进制文件中。
相比v1的改进
- 词典在单独的仓库中维护,只将需要的词典嵌入二进制文件中。
- 改进并增加了几个API。
词典
词典 | 来源 | 包 |
---|---|---|
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 |
注意:IPADIC是MeCab所谓的"标准词典",其特点是能比UniDIC更直观地分割形态单位。相比之下,UniDIC将短语分解成更小的示例句子单位,以创建全文搜索的元数据。更多详情,请参阅wiki。
实验性功能
词典 | 来源 | 包 |
---|---|---|
mecab-ipadic-NEologd | mecab-ipadic-neologd | github.com/ikawaha/kagome-ipa-neologd |
Korean MeCab | mecab-ko-dic-2.1.1-20180720 | github.com/ikawaha/kagome-dict-ko |
搜索分词模式
Kagome具有类似Kuromoji的搜索分词模式。
- 普通:常规分词
- 搜索:使用启发式方法进行额外的分词,对搜索有用
- 扩展:类似于搜索模式,但还会对未知词进行一元分词
未分词 | 普通 | 搜索 | 扩展 |
---|---|---|---|
関西国際空港 | 関西国際空港 | 関西 国際 空港 | 関西 国際 空港 |
日本経済新聞 | 日本経済新聞 | 日本 経済 新聞 | 日本 経済 新聞 |
シニアソフトウェアエンジニア | シニアソフトウェアエンジニア | シニア ソフトウェア エンジニア | シニア ソフトウェア エンジニア |
デジカメを買った | デジカメ を 買っ た | デジカメ を 買っ た | デ ジ カ メ を 買っ た |
编程示例
package main
import (
"fmt"
"strings"
"github.com/ikawaha/kagome-dict/ipa"
"github.com/ikawaha/kagome/v2/tokenizer"
)
func main() {
t, err := tokenizer.New(ipa.Dict(), tokenizer.OmitBosEos())
if err != nil {
panic(err)
}
// 分词
fmt.Println("---分词---")
seg := t.Wakati("すもももももももものうち")
fmt.Println(seg)
// 标记化
fmt.Println("---标记化---")
tokens := t.Tokenize("すもももももももものうち")
for _, token := range tokens {
features := strings.Join(token.Features(), ",")
fmt.Printf("%s\t%v\n", token.Surface, features)
}
}
输出:
---分词---
[すもも も もも も もも の うち]
---标记化---
すもも 名词,一般,*,*,*,*,すもも,スモモ,スモモ
も 助词,系助词,*,*,*,*,も,モ,モ
もも 名词,一般,*,*,*,*,もも,モモ,モモ
も 助词,系助词,*,*,*,*,も,モ,モ
もも 名词,一般,*,*,*,*,もも,モモ,モモ
の 助词,连体化,*,*,*,*,の,ノ,ノ
うち 名词,非自立,副词可能,*,*,*,うち,ウチ,ウチ
- 更多示例请参见examples目录。
参考
命令
安装
-
Go
go install github.com/ikawaha/kagome/v2@latest
-
Homebrew
# macOS和Linux(适用于AMD64和ARM64) brew install ikawaha/kagome/kagome
-
Docker
- 请参见下方的Docker部分
-
手动安装
- 对于手动安装,请从releases页面下载并解压适合您操作系统和架构的归档文件。
- 请注意,解压后的二进制文件必须放置在具有执行权限的可访问目录中。
使用方法
$ kagome -h
日语形态素分析器 -- github.com/ikawaha/kagome/v2
用法:kagome <命令>
可用命令:
[tokenize] - 命令行标记化(*默认)
server - 运行标记化服务器
lattice - 格子查看器
sentence - 简单句子分割器
version - 显示版本
tokenize [-file 输入文件] [-dict 词典文件] [-userdict 用户词典文件] [-sysdict (ipa|uni)] [-simple false] [-mode (normal|search|extended)] [-split] [-json]
-dict string
词典
-file string
输入文件
-json
以JSON格式输出
-mode string
标记化模式(normal|search|extended)(默认为"normal")
-simple
显示简化的词典内容
-split
使用简单句子分割器
-sysdict string
系统词典类型(ipa|uni)(默认为"ipa")
-udict string
用户词典
标记化命令
% # 交互式/REPL模式
% kagome
すもももももももものうち
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
% # 通过管道输入标准输入
echo "すもももももももものうち" | kagome
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
% # JSON输出
% echo "猫" | kagome -json | jq .
[
{
"id": 286994,
"start": 0,
"end": 1,
"surface": "猫",
"class": "KNOWN",
"pos": [
"名詞",
"一般",
"*",
"*"
],
"base_form": "猫",
"reading": "ネコ",
"pronunciation": "ネコ",
"features": [
"名詞",
"一般",
"*",
"*",
"*",
"*",
"猫",
"ネコ",
"ネコ"
]
}
]
echo "私ははにわよわわわんわん" | kagome -json | jq -r '.[].pronunciation'
ワタシ
ワ
ハニワ
ヨ
ワ
ワ
ワンワン
服务器命令
API
启动服务器并尝试访问"/tokenize"端点。
% kagome server &
% curl -XPUT localhost:6060/tokenize -d'{"sentence":"すもももももももものうち", "mode":"normal"}' | jq .
Web应用
GitHub页面: https://ikawaha.github.io/kagome/
启动服务器并访问http://localhost:6060
。
(为了绘制格子图,演示应用使用graphviz。您需要安装graphviz。)
% kagome server &
格子命令
分词过程的调试工具以graphviz dot格式输出格子图。
% kagome lattice 私は鰻 | dot -Tpng -o lattice.png
Docker
# 兼容架构: AMD64, Arm64, Arm32 (Arm v5, v6 和 v7)
docker pull ikawaha/kagome:latest
或者,您可以从 GitHub 容器注册表拉取
docker pull ghcr.io/ikawaha/kagome:latest
```sh
# 交互式/REPL 模式
docker run --rm -it ikawaha/kagome:latest
# 如果从 GitHub 容器注册表拉取
docker run --rm -it ghcr.io/ikawaha/kagome:latest
# 服务器模式(http://localhost:6060)
docker run --rm -p 6060:6060 ikawaha/kagome:latest server
# 如果从 GitHub 容器注册表拉取
docker run --rm -p 6060:6060 ghcr.io/ikawaha/kagome:latest server
构建为 WebAssembly
您可以在演示网站上查看 kagome wasm 的工作方式。
源代码可以在 ./_examples/wasm
中找到。
许可证
MIT