ginza:基于 spaCy 生态的日语自然语言处理库

A Japanese NLP Library using spaCy as framework based on Universal Dependencies

分支13Tags29
文件最后提交记录最后更新时间
2 天前
4 年前
2 年前
1 个月前
10 小时前
4 年前
4 年前
7 年前
7 年前
7 年前
1 个月前
2 天前
2 年前
4 年前
2 年前

GiNZA 标志

GiNZA 自然语言处理库

推文下载量

一个基于 Universal Dependencies 的开源日语自然语言处理库

升级 GiNZA 前,请务必阅读重要变更

日文版页面在此

许可协议

GiNZA 自然语言处理库和 GiNZA 日语 Universal Dependencies 模型均以 MIT 许可证 发布。 使用 GiNZA 自然语言处理库和 GiNZA 日语 Universal Dependencies 模型,须同意并遵守 MIT 许可证。

Explosion / spaCy

spaCy 是 GiNZA 的核心框架。

spaCy 许可证页面

Works Applications Enterprise / Sudachi/SudachiPy - SudachiDict - chiVe

SudachiPy 可高精度地完成分词与词性标注。

Sudachi 许可证页面SudachiPy 许可证页面SudachiDict 法律声明页面chiVe 许可证页面

Hugging Face / transformers

GiNZA v5 Transformers 模型(ja_ginza_electra)使用 Hugging Face Transformers 作为预训练模型框架进行训练。

transformers 许可证页面

训练数据集

UD Japanese BCCWJ r2.8

GiNZA v5 的句法分析模型基于部分 UD Japanese BCCWJ r2.8 数据训练(Omura and Asahara:2018)。 该模型由 National Institute for Japanese Language and Linguistics 与 Megagon Labs 共同开发。

GSK2014-A(2019)BCCWJ 版

GiNZA v5 的命名实体识别模型基于 GSK2014-A(2019)BCCWJ 版 的一部分进行训练 (Hashimoto, Inui, and Murakami:2008)。 我们使用两套命名实体标签体系,分别是 Sekine's Extended Named Entity Hierarchy 和扩展的 OntoNotes5。 该模型由国立国语·语言学研究所和 Megagon Labs 共同开发。

mC4

GiNZA v5 的 Transformers 模型(ja_ginza_electra)基于 transformers-ud-japanese-electra-base-discriminator 进行训练,该模型已在从 mC4 提取的两亿多句日语句子完成预训练。

包含来自 mC4 的信息,mC4 依据 ODC Attribution License 提供。

@article{2019t5,
    author = {Colin Raffel and Noam Shazeer and Adam Roberts and Katherine Lee and Sharan Narang and Michael Matena and Yanqi Zhou and Wei Li and Peter J. Liu},
    title = {Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer},
    journal = {arXiv e-prints},
    year = {2019},
    archivePrefix = {arXiv},
    eprint = {1910.10683},
}

运行环境

本项目基于 Python>=3.8 和 pip 开发。 我们不建议使用 Anaconda 环境,因为 pip 安装步骤可能无法正常工作。

也请参阅下文中的“开发环境”部分。

运行时设置

1. 安装带 Transformer 模型的 GiNZA NLP 库

卸载 ginza 和 ja_ginza_electra 包的旧版本:

$ pip uninstall ginza ja_ginza_electra

然后,安装 ginzaja_ginza_electra 的最新版本:

$ pip install -U ginza ja_ginza_electra

ja_ginza_electra 的软件包由于 PyPI 的归档大小限制,不包含 pytorch_model.bin。 首次运行时会自动下载该大型模型文件,之后的运行将使用本地缓存的文件。

如果你需要在安装时连同 pytorch_model.bin 一起安装 ja_ginza_electra,可以按如下方式指定 GitHub release archive 的直接链接:

$ pip install -U ginza https://github.com/megagonlabs/ginza/releases/download/latest/ja_ginza_electra-latest-with-model.tar.gz

如果你希望借助支持 CUDA 的 GPU 加速基于 transformers 的模型,可以在安装 spacy 时按以下方式指定 CUDA 版本:

pip install -U "spacy[cuda117]"

此外,需要安装与 CUDA 版本一致的 PyTorch 版本。

2. 使用标准模型安装 GiNZA NLP 库

卸载旧版本:

$ pip uninstall ginza ja_ginza

然后,安装 ginzaja_ginza 的最新版本:

$ pip install -U ginza ja_ginza

在 M1 或 M2 等 Apple Silicon 上,安装 thinc-apple-ops 即可加速分析流程:

$ pip install torch thinc-apple-ops

运行 ginza 命令

在控制台中运行 ginza 命令,然后输入一些日语文本。 按下回车键后,你将获得以 CoNLL-U Syntactic Annotation 格式呈现的解析结果。

$ ginza
銀座でランチをご一緒しましょう。
# text = 銀座でランチをご一緒しましょう。
1       銀座    銀座    PROPN   名詞-固有名詞-地名-一般 _       6       nmod    _       SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=ギンザ|NE=B-GPE|ENE=B-City|ClauseHead=6
2       で      で      ADP     助詞-格助詞     _       1       case    _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=デ|ClauseHead=6
3       ランチ  ランチ  NOUN    名詞-普通名詞-一般      _       6       obj     _       SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|NP_B|Reading=ランチ|ClauseHead=6
4       を      を      ADP     助詞-格助詞     _       3       case    _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Reading=ヲ|ClauseHead=6
5       ご      ご      NOUN    接頭辞  _       6       compound        _       SpaceAfter=No|BunsetuBILabel=B|BunsetuPositionType=CONT|NP_B|Reading=ゴ|ClauseHead=6
6       一緒    一緒    NOUN    名詞-普通名詞-サ変可能  _       0       root    _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=ROOT|NP_I|Reading=イッショ|ClauseHead=6
7       し      する    AUX     動詞-非自立可能 _       6       aux     _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=サ行変格,連用形-一般|Reading=シ|ClauseHead=6
8       ましょう        ます    AUX     助動詞  _       6       aux     _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|Inf=助動詞-マス,意志推量形|Reading=マショウ|ClauseHead=6
9       。      。      PUNCT   補助記号-句点   _       6       punct   _       SpaceAfter=No|BunsetuBILabel=I|BunsetuPositionType=CONT|Reading=。|ClauseHead=6

ginzame 命令提供与 MeCab 相似的分词功能。 ginzame 的输出格式与 mecab 基本一致,但最后的 pronunciation 字段始终为 '*'。

$ ginzame
銀座でランチをご一緒しましょう。
銀座	名詞,固有名詞,地名,一般,*,*,銀座,ギンザ,*
で	助詞,格助詞,*,*,*,*,で,デ,*
ランチ	名詞,普通名詞,一般,*,*,*,ランチ,ランチ,*
を	助詞,格助詞,*,*,*,*,を,ヲ,*
ご	接頭辞,*,*,*,*,*,御,ゴ,*
一緒	名詞,普通名詞,サ変可能,*,*,*,一緒,イッショ,*
し	動詞,非自立可能,*,*,サ行変格,連用形-一般,為る,シ,*
ましょう	助動詞,*,*,*,助動詞-マス,意志推量形,ます,マショウ,*
。	補助記号,句点,*,*,*,*,。,。,*
EOS

ginza 命令中,指定 -f 3-f json 即可获得 spaCy 的 JSON 格式。

$ ginza -f json
銀座でランチをご一緒しましょう。
[
 {
  "paragraphs": [
   {
    "raw": "銀座でランチをご一緒しましょう。",
    "sentences": [
     {
      "tokens": [
       {"id": 1, "orth": "銀座", "tag": "名詞-固有名詞-地名-一般", "pos": "PROPN", "lemma": "銀座", "head": 5, "dep": "obl", "ner": "B-City"},
       {"id": 2, "orth": "で", "tag": "助詞-格助詞", "pos": "ADP", "lemma": "で", "head": -1, "dep": "case", "ner": "O"},
       {"id": 3, "orth": "ランチ", "tag": "名詞-普通名詞-一般", "pos": "NOUN", "lemma": "ランチ", "head": 3, "dep": "obj", "ner": "O"},
       {"id": 4, "orth": "を", "tag": "助詞-格助詞", "pos": "ADP", "lemma": "を", "head": -1, "dep": "case", "ner": "O"},
       {"id": 5, "orth": "ご", "tag": "接頭辞", "pos": "NOUN", "lemma": "ご", "head": 1, "dep": "compound", "ner": "O"},
       {"id": 6, "orth": "一緒", "tag": "名詞-普通名詞-サ変可能", "pos": "VERB", "lemma": "一緒", "head": 0, "dep": "ROOT", "ner": "O"},
       {"id": 7, "orth": "し", "tag": "動詞-非自立可能", "pos": "AUX", "lemma": "する", "head": -1, "dep": "advcl", "ner": "O"},
       {"id": 8, "orth": "ましょう", "tag": "助動詞", "pos": "AUX", "lemma": "ます", "head": -2, "dep": "aux", "ner": "O"},
       {"id": 9, "orth": "。", "tag": "補助記号-句点", "pos": "PUNCT", "lemma": "。", "head": -3, "dep": "punct", "ner": "O"}
      ]
     }
    ]
   }
  ]
 }
]

如果你想使用类似 cabocha -f1(Lattice 形式)的输出,请为 ginza 命令添加 -f 1-f cabocha 选项。 该选项的格式与 cabocha -f1 几乎相同,但 func_index 字段(斜杠之后)略有不同。 我们的 func_index 字段表示每个 文節自立語 的结束边界(機能語 可能从该处开始)。 此外,cabocha -f1ginza -f cabocha 的功能词 token 过滤也略有不同。

$ ginza -f cabocha
銀座でランチをご一緒しましょう。
* 0 2D 0/1 0.000000
銀座	名詞,固有名詞,地名,一般,,銀座,ギンザ,*	B-City
で	助詞,格助詞,*,*,,で,デ,*	O
* 1 2D 0/1 0.000000
ランチ	名詞,普通名詞,一般,*,,ランチ,ランチ,*	O
を	助詞,格助詞,*,*,,を,ヲ,*	O
* 2 -1D 0/2 0.000000
ご	接頭辞,*,*,*,,ご,ゴ,*	O
一緒	名詞,普通名詞,サ変可能,*,,一緒,イッショ,*	O
し	動詞,非自立可能,*,*,サ行変格,連用形-一般,する,シ,*	O
ましょう	助動詞,*,*,*,助動詞-マス,意志推量形,ます,マショウ,*	O
。	補助記号,句点,*,*,,。,。,*	O
EOS

多进程(实验性)

自 GiNZA v3.0 起,我们新增了 -p NUM_PROCESS 选项。 请将 NUM_PROCESS 设置为分析进程数量。 如果您希望 GiNZA 使用全部 CPU 核心,可以执行 ginza -p 0。 每个进程的内存占用约为 130MB(后续将会优化)。

代码示例

以下步骤展示了包含句子边界 'EOS' 的依存句法分析结果。

import spacy
nlp = spacy.load('ja_ginza_electra')
doc = nlp('銀座でランチをご一緒しましょう。')
for sent in doc.sents:
    for token in sent:
        print(
            token.i,
            token.orth_,
            token.lemma_,
            token.norm_,
            token.morph.get("Reading"),
            token.pos_,
            token.morph.get("Inflection"),
            token.tag_,
            token.dep_,
            token.head.i,
        )
    print('EOS')

用户词典

用户词典文件应配置到 ja_ginza_dict 包安装目录中的 sudachi.jsonuserDict 字段。

请参考官方文档,使用 sudachipy 命令构建用户词典。 SudachiPy - 用户自定义词典 Sudachi 用户词典构建(仅日文)

版本发布

5.x 版本

ginza-5.2.0

  • 2024-03-31
  • 要求 Python >= 3.8
  • 迁移至 spaCy v3.7
  • 新增功能
    • 新增日语从句识别 API(实验性)

ginza-5.1.3

  • 2023-09-25
  • 迁移至 spaCy v3.6
  • ja_ginza_bert_large 测试版发布

ginza-5.1.2

  • 2022-03-12
  • 迁移至 spaCy v3.4

ginza-5.1.1

  • 2022-03-12
  • 改进
    • 由 @nimiusrd 在 #184 中实现 PyPI 自动部署
    • 由 @r-terada 在 #233 中修改 GitHub Actions:改为通过打标签触发,并停止上传测试 PyPI

ginza-5.1.0

  • 2021-12-10,Euclase
  • 重要变更
    • 升级:spaCy v3.2 与 Sudachi.rs(SudachiPy v0.6.2)
    • 变更 token 信息字段 #208 #209
      • doc.user_data["reading_forms"][token.i] -> token.morph.get("Reading")
      • doc.user_data["inflections"][token.i] -> token.morph.get("Inflection")
      • force_using_normalized_form_as_lemma(True) -> token.norm_
    • 所有 spaCy 模型(包括非日语模型)现均可通过 ginza 命令使用 #217
      • 通过以下形式指定模型名称,即可一次性下载模型并执行分析 #219
      • ginza -m en_core_web_md
    • ginza --require_gpuginza -g 现支持 gpu_id 参数
      • gpu_id 默认值为 -1,表示仅使用 CPU
    • 无论 -c 选项取值如何,ginza -f json 选项始终分析以 # 开头的行。 #215
  • 改进
    • 批量分析处理速度在 GPU 环境下提升 50-60%,在 CPU 环境下提升 10-40%
    • 提升 ginza 命令并行执行选项(ginza -p {n_process}ginzame)的处理效率 #204
    • 新增测试 #198 #210 #214
    • 新增基准测试 #207 #220

ginza-5.0.3

  • 2021-10-15
  • 缺陷修复
    • Bunsetu span 不应跨越句子边界 #195

ginza-5.0.2

  • 2021-09-06
  • 缺陷修复
    • 命令行 -s 选项和 set_split_mode() 在 v5.0.x 中不生效 #185

ginza-5.0.1

  • 2021-08-26
  • 缺陷修复
    • ginzame 在 ginza ver. 5 中无法运行 #179
    • 命令行 -d 选项在 v5.0.0 中不生效 #178
  • 改进
    • ginza 命令的 -m 选项支持 ja-ginzaja-ginza-electra

ginza-5.0.0

  • 2021-08-26,Demantoid
  • 重要变更
    • 升级 spaCy 至 v3
      • 发布基于 Transformer 的 ja-ginza-electra 模型
      • 通过在 spaCy 流水线末尾添加 morphologizer,提升标准 ja-ginza 模型的 UPOS 准确性
    • 需要随 ginza 包一同安装分析模型
      • 高精度模型(需要 >=16GB 内存)
        • pip install -U ginza ja-ginza-electra
      • 速度优先模型
        • pip install -U ginza ja-ginza
    • CompoundSplitterBunsetuRecognizer 的组件名称分别更改为 compound_splitterbunsetu_recognizer
    • 另请参阅 spaCy v3 向后不兼容性
  • 改进
    • 新增命令行选项
      • -n
        • 强制使用 SudachiPy 的 normalized_form 作为 Token.lemma_
      • -m (ja_ginza|ja_ginza_electra)
        • 选择模型包
    • 修订 ENE 类别名称
      • Degital_Game 改为 Digital_Game

版本 4.x

ginza-4.0.6

  • 2021-06-01
  • 缺陷修复
    • Issue #160:空字符串导致 IndexError: list assignment index out of range

ginza-4.0.5

  • 2020-10-01
  • 改进
    • ginza 命令行工具新增 -d 选项,用于禁用 spaCy 的句子分隔功能

ginza-4.0.4

  • 2020-09-11
  • 改进
    • ginza 命令行工具在流水线中不包含 BunsetuRecognizer 时也能正确运行

ginza-4.0.3

  • 2020-09-10
  • 在实体片段存在不一致依存关系时,提升 bunsetu 头部识别准确率

ginza-4.0.2

  • 2020-09-04
  • 改进
    • 支持 nlp.to_disk()CompoundSplitter 的序列化
    • 提升 bunsetu 片段检测准确率

ginza-4.0.1

  • 2020-08-30
  • 调试
    • 为 singledispatch register 注解添加类型参数(适用于 Python 3.6)

ginza-4.0.0

  • 2020-08-16, Chrysoberyl
  • 重要变更
    • 将日语模型替换为 spaCy v2.3 的 spacy.lang.ja
      • 用 SudachiPy 的 Morpheme.dictionary_form() 输出替换 Token.lemma_ 的值
    • 将 ja_ginza_dict 替换为官方 SudachiDict-core 包
      • 可以安全地删除 ja_ginza_dict
    • 调整命令行工具输出的选项与 misc 字段内容
      • 移除 use_sentence_separator(-s)
      • NE(OntoNotes) 的 BI 标签使用 B-GPE
      • 新增子字段:Reading、Inf(inflection) 和 ENE(Extended NE)
    • 废弃 Token._.*,并为 Doc.user_data[] 新增部分条目与访问器
      • inflections (ginza.inflection(Token))
      • reading_forms (ginza.reading_form(Token))
      • bunsetu_bi_labels (ginza.bunsetu_bi_label(Token))
      • bunsetu_position_types (ginza.bunsetu_position_type(Token))
      • bunsetu_heads (ginza.is_bunsetu_head(Token))
    • 变更流水线架构
      • 废弃 JapaneseCorrector
      • 新增 CompoundSplitter 和 BunsetuRecognizer
    • 将 UD_JAPANESE-BCCWJ 升级到 v2.6
    • 将 word2vec 更换为 chiVe mc90
  • API 变更
    • 新增 bunsetu 单元级 API(from ginza import *
      • bunsetu(Token)
      • phrase(Token)
      • sub_phrases(Token)
      • phrases(Span)
      • bunsetu_spans(Span)
      • bunsetu_phrase_spans(Span)
      • bunsetu_head_list(Span)
      • bunsetu_head_tokens(Span)
      • bunsetu_bi_labels(Span)
      • bunsetu_position_types(Span)

版本 3.x

ginza-3.1.2

  • 2020-02-12
  • 调试
    • 修复:cabocha mode 降级问题

ginza-3.1.1

  • 2020-01-19
  • API 变更
    • 扩展字段
      • Token._.sudachi 字段的值将在调用 SudachipyTokenizer.set_enable_ex_sudachi(True) 后设置,以避免序列化错误
import spacy
import pickle
nlp = spacy.load('ja_ginza')
doc1 = nlp('This example will be serialized correctly.')
doc1.to_bytes()
with open('sample1.pickle', 'wb') as f:
    pickle.dump(doc1, f)

nlp.tokenizer.set_enable_ex_sudachi(True)
doc2 = nlp('This example will cause a serialization error.')
doc2.to_bytes()
with open('sample2.pickle', 'wb') as f:
    pickle.dump(doc2, f)

ginza-3.1.0

  • 2020-01-16
  • 重要变更
    • 从 PyPI 发布 ja_ginza_dict
  • API 变更
    • 命令
      • ginzaginzame
        • 新增 -i 选项,用于初始化 ja_ginza_dict 的文件

ginza-3.0.0

  • 2020-01-15, Benitoite
  • 重要变更
    • 从 PyPI 发布 ginzaja_ginza
      • 安装更简单;执行 pip install ginza 后即可运行 ginza
      • 模型包 ja_ginza 也可以从 PyPI 获取。
    • 模型改进
      • 将 NER 训练数据集更换为 GSK2014-A(2019)BCCWJ 版
        • NER 准确率得到提升
        • token.ent_type_ 的值更改为 Sekine's Extended Named Entity Hierarchy
          • ginza 输出的最后一个字段中新增 ENE7 属性
        • 将基于 OntoNotes5 的标签移至 token._.ne
          • 我们在 OntoNotes5 命名实体标签的基础上扩展了 PHONEEMAILURLPET_NAME
      • 通过执行超过 100 个 epoch 的 spacy pretrain,整体准确率得到提升
        • spacy train 的多任务学习在 UD Japanese BCCWJ 上有效发挥作用
      • 最新版 SudachiDict_core-20191224
    • ginzame
      • 通过 multiprocessing.Pool 运行 sudachipy,并以类似 mecab 的格式输出结果
      • 现在 sudachipy 命令需要额外安装 SudachiDict 包
  • 破坏性 API 变更
    • 命令
      • ginzaginza.command_line.main_ginza
        • 将选项 mode 改为 sudachipy_mode
        • 移除选项:disable_pipesrecreate_corrector
        • 新增选项:hash_commentparallelfiles
        • -f 选项的参数新增 mecab 可选值
        • 新增 parallel NUM_PROCESS 选项(实验性)
        • 在 conllu 杂项字段中新增 ENE7 属性
          • 使用 ginza.ent_type_mapping.ENE_NE_MAPPINGENE7 标签转换为 NE
      • 新增 ginzameginza.command_line.main_ginzame
        • 提供类似 mecab 输出格式的多进程分词器
    • spaCy 字段扩展
      • 新增 token._.ne 用于命名实体标签
    • ginza/sudachipy_tokenizer.py
      • SudachiTokenizer 改为 SudachipyTokenizer
      • 使用 SUDACHI_DEFAULT_SPLIT_MODE,而不是 SUDACHI_DEFAULT_SPLITMODESUDACHI_DEFAULT_MODE
  • 依赖项
    • spacy 升级至 v2.2.3
    • sudachipy 升级至 v0.4.2

版本 2.x

ginza-2.2.1

  • 2019-10-28
  • 改进
    • JapaneseCorrector 可以完全合并 as_* 类型的依存关系
  • Bug 修复
    • 修复命令行工具在特定情况下运行失败的问题

ginza-2.2.0

  • 2019-10-04,Ametrine
  • 重要变更
    • 自 v2.0.0 起,split_mode 在 sudachipy.tokenizer 中被错误设置(#43)
      • 此 Bug 导致训练阶段与 ginza 命令之间出现 split_mode 不兼容。
      • 训练阶段和 Python API 中的 split_mode 被设置为 'B',而 ginza 命令中被设置为 'C'。
      • 已通过将默认 split_mode 统一设置为 'C' 修复该问题。
      • 在将 GiNZA 从 v2.0.0 升级到 v2.2.0 时,此修复可能导致分词结果不兼容。
  • 新功能
    • ginza 命令新增 -f--output-format 选项:
    • 新增自定义 token 字段:
      • bunsetu_index:从 0 开始的文节索引
      • reading:token 的读法(并非读音)
      • sudachi:SudachiPy 的形态素实例(当 token 由 JapaneseCorrector 聚合时,为其列表)
  • 性能改进
    • 分词器
      • 使用最新版 SudachiDict(SudachiDict_core-20190927.tar.gz)
      • 使用 Cython 化的 SudachiPy(v0.4.0)
    • 依存句法分析器
      • 通过 spacy pretrain 命令,从 UD-Japanese BCCWJ、UD_Japanese-PUD 和 KWDLC 中捕获语言模型
      • 通过 spacy train-pt 'tag,dep' 选项应用多任务目标
    • 新模型文件
      • ja_ginza-2.2.0.tar.gz

ginza-2.0.0

  • 2019-07-08
  • 新增 ginza 命令
    • 可在控制台中运行 ginza
  • 调整包结构
    • 模块包为 ginza
    • 语言模型包为 ja_ginza
    • spacy.lang.ja 会被 ginza 覆盖
  • 移除 sudachipy 相关目录
    • SudachiPy 及其词典会在安装 ginza 时通过 pip 安装
  • 支持用户词典
  • token 扩展字段
    • 新增
      • token._.bunsetu_bi_labeltoken._.bunsetu_position_type
    • 保留
      • token._.inf
    • 移除
      • pos_detail(相同值设置到 token.tag_

版本 1.x

ja_ginza_nopn-1.0.2

  • 2019-04-07
  • 将 root 的依赖 token 索引设置为 0,以符合 conllu 格式定义

ja_ginza_nopn-1.0.1

  • 2019-04-02
  • 在 system_core.dic 中新增日本年号 'reiwa'。

ja_ginza_nopn-1.0.0

  • 2019-04-01
  • 首个发布版本

开发环境

开发环境配置

1. 从 github 克隆

$ git clone 'https://github.com/megagonlabs/ginza.git'

2. 运行 python setup.py

在常规环境中:

$ python setup.py develop

3. 设置 system.dic

ja_ginza_dict 的安装包目录中,将 system.dic 复制到 ./ja_ginza_dict/sudachidict/

训练模型

GiNZA 的分析模型通过 spacy train 命令训练。

$ python -m spacy train ja ja_ginza-4.0.0 corpus/ja_ginza-ud-train.json corpus/ja_ginza-ud-dev.json -b ja_vectors_chive_mc90_35k/ -ovl 0.3 -n 100 -m meta.json.ginza -V 4.0.0

运行测试

Ginza 使用 pytest 框架进行测试,你可以直接通过 setup.py 运行测试,而无需单独安装测试依赖。

部分测试依赖于 ginza 的默认模型(ja-ginzaja-ginza-electra),因此需要在测试前安装这些模型。

$ pip install ja-ginza ja-ginza-electra
$ pip install -e .
# full test
$ python setup.py test
# test single file
$ python setup.py test --addopts ginza/tests/test_analyzer.py

项目介绍

A Japanese NLP Library using spaCy as framework based on Universal Dependencies

定制我的领域