WorksApplications/Sudachi

A Japanese Tokenizer for Business

Sudachi – 日语形态分析器

Sudachi 是一个用 Java 编写的日语分词器 / 形态分析器。它接收原始日语文本并输出一系列形态素,同时附带词性标签、词典(基本)形式、读音以及可选的额外信息。该项目专注于三个核心任务:

  1. 分词 (Segmentation) – 使用三种可选模式(A = 最短单位,B = 中间单位,C = 命名实体风格单位)将句子拆分为单词(或子词)。
  2. 词性标注 (POS tagging) – 分配详细的词性标签。
  3. 归一化 (Normalization) – 统一拼写变体、脚本差异、拼写错误和缩写形式。

为什么选择 Sudachi?

  • 多长度分词 让你可以在细粒度 (A)、中等粒度 (B) 或面向实体 (C) 的拆分之间进行切换,这对于搜索、NLP 流水线或下游模型非常有用。
  • 大型词典 基于 UniDic 并结合了 NEologd 扩展,提供三种预装词典(small, core, full)以平衡内存与覆盖率。
  • 插件架构 允许在不更改核心代码的情况下,进行自定义输入归一化、OOV 处理、词连接规则和路径修改。
  • 用户词典 可以在运行时添加,从而支持特定领域的词汇。
  • 集成:提供命令行工具、Maven 兼容的 Java 库,以及 Elasticsearch 插件,此外还有 Python 和 Rust 的移植版本。

入门指南

  1. 安装 – 按照 docs/tutorial.md 中的教程下载预构建词典并运行 JAR 包。
  2. 命令行使用 – 示例:
    echo 東京都へ行く | java -jar sudachi.jar -m A   # short‑unit split
    
    选项包括 -t(空格分隔输出)、-a(额外字段)、--print-reading 以及通过 --systemDict 进行词典选择。
  3. 库使用 – 添加 Maven 依赖:
    <dependency>
      <groupId>com.worksap.nlp</groupId>
      <artifactId>sudachi</artifactId>
      <version>0.5.3</version>
    </dependency>
    
    然后使用 Java API(参见 Javadoc)进行程序化分词。

插件与可扩展性

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 流水线以及任何需要准确的日语单词分词和词性标注的应用。

相关

  • 项目
  • 项目
  • 项目
  • 项目