WorksApplications/Sudachi
A Japanese Tokenizer for Business
Sudachi – 日语形态分析器
Sudachi 是一个用 Java 编写的日语分词器 / 形态分析器。它接收原始日语文本并输出一系列形态素,同时附带词性标签、词典(基本)形式、读音以及可选的额外信息。该项目专注于三个核心任务:
- 分词 (Segmentation) – 使用三种可选模式(A = 最短单位,B = 中间单位,C = 命名实体风格单位)将句子拆分为单词(或子词)。
- 词性标注 (POS tagging) – 分配详细的词性标签。
- 归一化 (Normalization) – 统一拼写变体、脚本差异、拼写错误和缩写形式。
为什么选择 Sudachi?
- 多长度分词 让你可以在细粒度 (A)、中等粒度 (B) 或面向实体 (C) 的拆分之间进行切换,这对于搜索、NLP 流水线或下游模型非常有用。
- 大型词典 基于 UniDic 并结合了 NEologd 扩展,提供三种预装词典(small, core, full)以平衡内存与覆盖率。
- 插件架构 允许在不更改核心代码的情况下,进行自定义输入归一化、OOV 处理、词连接规则和路径修改。
- 用户词典 可以在运行时添加,从而支持特定领域的词汇。
- 集成:提供命令行工具、Maven 兼容的 Java 库,以及 Elasticsearch 插件,此外还有 Python 和 Rust 的移植版本。
入门指南
- 安装 – 按照
docs/tutorial.md中的教程下载预构建词典并运行 JAR 包。 - 命令行使用 – 示例:
选项包括echo 東京都へ行く | java -jar sudachi.jar -m A # short‑unit split-t(空格分隔输出)、-a(额外字段)、--print-reading以及通过--systemDict进行词典选择。 - 库使用 – 添加 Maven 依赖:
然后使用 Java API(参见 Javadoc)进行程序化分词。<dependency> <groupId>com.worksap.nlp</groupId> <artifactId>sudachi</artifactId> <version>0.5.3</version> </dependency>
插件与可扩展性
Sudachi 附带了多种现成的插件(字符归一化、长音归一化、去除 yomigana、单字符 OOV 处理、MeCab 兼容的 OOV、抑制规则、数字归一化等)。可以编写新插件来挂钩到任何处理阶段:输入文本、未知词处理、词连接成本或输出路径调整。
与其他日语分词器的对比
| 特性 | Sudachi | MeCab | Kuromoji |
|---|---|---|---|
| 多种分词长度 | ✅ | ❌ | 有限 |
| 内置归一化 (脚本, 拼写错误) | ✅ | ❌ | 有限 |
| 用户词典堆叠 | ✅ | ✅ | ❌ |
| 内存效率 (共享 mmap) | Good | Poor | Good |
| 准确度 | Good | Good | Good |
| 速度 | Good | Excellent | Good |
生态系统
- Elasticsearch 插件 –
WorksApplications/elasticsearch-sudachi用于全文检索集成。 - Python / Rust 移植版 –
WorksApplications/sudachi.rs为其他语言生态系统提供原生绑定。 - 社区 – 面向开发者和用户的 Slack 工作区。
许可证与引用
Sudachi 根据 Apache License 2.0 发布。如果你在研究中使用它,请引用 LREC 2018 论文 “Sudachi: a Japanese Tokenizer for Business” (BibTeX 见 README)。
简而言之: Sudachi 是一个成熟、可扩展的日语形态分析器,提供灵活的分词模式、丰富的词典资源和插件系统,使其适用于搜索引擎、搜索、NLP 流水线以及任何需要准确的日语单词分词和词性标注的应用。
相关
- 项目
- 项目
- 项目
- 项目