fugashi
fugashi 是 MeCab 的一个 Cython 封装工具,MeCab 是一个日语分词和形态分析工具。提供了适用于 Linux、OSX(Intel)和 Win64 的轮子,UniDic 可以轻松安装。
issue 不需要用英语写。
查看[互动演示][], 阅读博客文章了解 fugashi 存在的背景和一些设计决策,或参阅此指南 了解日语分词的基本介绍。
如果您使用的平台未提供轮子,您需要先安装 MeCab。建议您从源代码安装。 如果需要在 Windows 上从源代码构建,推荐使用 @chezou 的 fork;请参阅issue #44 了解官方仓库问题的解释。
没有轮子的已知平台:
- 基于 musl 的发行版如 alpine #77
- PowerPC
- Windows 32 位
用法
from fugashi import Tagger
tagger = Tagger('-Owakati')
text = "麩菓子は、麩を主材料とした日本の菓子。"
tagger.parse(text)
# => '麩 菓子 は 、 麩 を 主材 料 と し た 日本 の 菓子 。'
for word in tagger(text):
print(word, word.feature.lemma, word.pos, sep='\t')
# "feature" 是作为命名元组的 Unidic 特征数据
安装字典
fugashi 需要字典。推荐使用 UniDic,并提供了两个易于安装的版本。
- unidic-lite,稍作修改的 Unidic 版本 2.1.2(2013 年),体积相对较小
- unidic,最新的 UniDic 3.1.0,磁盘占用 770MB,需要单独下载
如果只是想确认功能是否正常,可以从 unidic-lite
开始,但对于更深入的处理,推荐使用 unidic
。对于生产使用,通常需要生成自己的字典;详情请参阅 MeCab 文档。
要获取以上任一字典,可以直接使用 pip
安装,或者执行以下命令:
pip install 'fugashi[unidic-lite]'
# 完整版 UniDic 需要单独的下载步骤
pip install 'fugashi[unidic]'
python -m unidic download
有关不同 MeCab 字典的更多信息,请参阅这篇文章。
字典使用
fugashi 假设您将使用 Unidic 处理日语,但它支持任意字典。
如果使用非 Unidic 字典,可以像这样使用 GenericTagger:
from fugashi import GenericTagger
tagger = GenericTagger()
# 可以正常使用 parse
tagger.parse('something')
# 字典中的特征可以通过字段号访问
for word in tagger(text):
print(word.surface, word.feature[0])
您还可以创建字典封装器以将特征信息作为命名元组获取。
from fugashi import GenericTagger, create_feature_wrapper
CustomFeatures = create_feature_wrapper('CustomFeatures', 'alpha beta gamma')
tagger = GenericTagger(wrapper=CustomFeatures)
for word in tagger.parseToNodeList(text):
print(word.surface, word.feature.alpha)
引用
如果您在研究中使用了 fugashi,我们将非常感谢您引用这篇论文。您可以在ACL Anthology 或 Arxiv 中阅读它。
@inproceedings{mccann-2020-fugashi,
title = "fugashi, a Tool for Tokenizing {J}apanese in Python",
author = "McCann, Paul",
booktitle = "Proceedings of Second Workshop for NLP Open Source Software (NLP-OSS)",
month = nov,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.nlposs-1.7",
pages = "44--51",
abstract = "Recent years have seen an increase in the number of large-scale multilingual NLP projects. However, even in such projects, languages with special processing requirements are often excluded. One such language is Japanese. Japanese is written without spaces, tokenization is non-trivial, and while high quality open source tokenizers exist they can be hard to use and lack English documentation. This paper introduces fugashi, a MeCab wrapper for Python, and gives an introduction to tokenizing Japanese.",
}
其他选择
如果您对 fugashi 有任何问题,欢迎随时提出 issue。但是,在某些情况下,使用不同的库可能更合适。
- 如果您不想处理安装 MeCab 的问题,请试试 SudachiPy。
- 如果需要处理韩语,请试试 pymecab-ko 或 KoNLPy。
许可证和版权通知
fugashi 根据 MIT 许可证 发布。请随意传播。
fugashi 是 MeCab 的封装工具,并包含了 MeCab 的二进制文件。MeCab 是由 Taku Kudo <taku@chasen.org>
和 日本电报电话公司(Nippon Telegraph and Telephone Corporation)版权所有的自由软件,并根据 BSD 许可证 重新发布。