日本标记器的比较工具

toiro的Python项目详细描述


托伊罗

Build StatusDocker Cloud Build StatusPython PackagePyPIPyPI - Python Version

Toiro是日本标记器的比较工具。在

  • 比较标记器的处理速度
  • 比较分词器中分段的单词
  • 通过基准测试应用程序任务(例如文本分类)比较标记器的性能

它还为日语的自然语言处理提供了有用的功能。在

  • 日语文本语料库的数据下载器
  • 这些语料库的预处理器
  • 日语文本的文本分类器(如SVM、BERT)

安装

Python3.6+是必需的。可以使用以下命令安装toiro。 Janome包含在默认安装中。在

pip install toiro

向toiro添加标记器

如果要向toiro添加标记器,请单独安装。 这是向toiro添加SudachiPynagisa的示例。在

^{pr2}$ <详细信息>如何安装其他标记器

mecab-python3

pip install mecab-python3==0.996.5

GiNZA

pip install spacy ginza

spaCy

pip install spacy[ja]

KyTea

你需要安装KyTea。请参考here。在

pip install kytea

Juman++ v2

你需要安装Juman++v2。请参考here。在

pip install pyknp

SentencePiece

pip install sentencepiece

fugashi-ipadic

pip install fugashi ipadic

fugashi-unidic

pip install fugashi unidic-lite

tinysegmenter

pip install tinysegmenter3

如果你想一次安装所有的托卡侬器,请使用以下命令。在

pip install toiro[all_tokenizers]

入门

您可以检查Python环境中可用的tokonizer。在

fromtoiroimporttokenizersavailable_tokenizers=tokenizers.available_tokenizers()print(available_tokenizers)

Toiro支持12种不同的日本托卡侬。这是添加SudachiPy和nagisa的一个例子。在

{'nagisa':{'is_available':True,'version':'0.2.7'},'janome':{'is_available':True,'version':'0.3.10'},'mecab-python3':{'is_available':False,'version':False},'sudachipy':{'is_available':True,'version':'0.4.9'},'spacy':{'is_available':False,'version':False},'ginza':{'is_available':False,'version':False},'kytea':{'is_available':False,'version':False},'jumanpp':{'is_available':False,'version':False},'sentencepiece':{'is_available':False,'version':False},'fugashi-ipadic':{'is_available':False,'version':False},'fugashi-unidic':{'is_available':False,'version':False},'tinysegmenter':{'is_available':False,'version':False}}

下载livedoor新闻语料库并比较标记器的处理速度。在

fromtoiroimporttokenizersfromtoiroimportdatadownloader# A list of avaliable corpora in toirocorpora=datadownloader.available_corpus()print(corpora)#=> ['livedoor_news_corpus', 'yahoo_movie_reviews', 'amazon_reviews']# Download the livedoor news corpus and load it as pandas.DataFramecorpus=corpora[0]datadownloader.download_corpus(corpus)train_df,dev_df,test_df=datadownloader.load_corpus(corpus)texts=train_df[1]# Compare the processing speed of tokenizersreport=tokenizers.compare(texts)#=> [1/3] Tokenizer: janome#=> 100%|███████████████████| 5900/5900 [00:07<00:00, 746.21it/s]#=> [2/3] Tokenizer: nagisa#=> 100%|███████████████████| 5900/5900 [00:15<00:00, 370.83it/s]#=> [3/3] Tokenizer: sudachipy#=> 100%|███████████████████| 5900/5900 [00:08<00:00, 696.68it/s]print(report){'execution_environment':{'python_version':'3.7.8.final.0 (64 bit)','arch':'X86_64','brand_raw':'Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz','count':8},'data':{'number_of_sentences':5900,'average_length':37.69593220338983},'janome':{'elapsed_time':9.114670515060425},'nagisa':{'elapsed_time':15.873093605041504},'sudachipy':{'elapsed_time':9.05256724357605}}# Compare the words segmented in tokenizerstext="都庁所在地は新宿区。"tokenizers.print_words(text,delimiter="|")#=>        janome: 都庁|所在地|は|新宿|区|。#=>        nagisa: 都庁|所在|地|は|新宿|区|。#=>     sudachipy: 都庁|所在地|は|新宿区|。

跑到码头去

您可以通过从docker Hub构建docker容器来使用所有标记器。在

docker run --rm -it taishii/toiro /bin/bash
<详细信息>如何在Docker容器中运行Python解释器

运行Python解释器。在

root@cdd2ad2d7092:/workspace# python3

比较分词器中分段的单词

>>>fromtoiroimporttokenizers>>>text="都庁所在地は新宿区。">>>tokenizers.print_words(text,delimiter="|")mecab-python3:都庁|所在地||新宿||janome:都庁|所在地||新宿||nagisa:都庁|所在|||新宿||sudachipy:都庁|所在地||新宿区|spacy:都庁|所在|||新宿||ginza:都庁|所在地||新宿区|kytea:都庁|所在|||新宿||jumanpp:都庁|所在|||新宿||sentencepiece:|||所在地||新宿||fugashi-ipadic:都庁|所在地||新宿||fugashi-unidic:都庁|所在|||新宿||tinysegmenter:都庁所|在地||新宿||

获取有关toiro的更多信息

PyCon JP 2020幻灯片

日语教程

贡献

欢迎拉取请求。对于重大变化,请先打开一个问题,讨论您希望更改的内容。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android同步不同页面上的按钮   java评测每个类收集的垃圾对象实例数   java(Spring MVC+Hibernate 4+Test 4)自动连线DAO返回NULL   java Android编辑文本和虚拟键盘   java Selenium与BrowserMobProxy   JAVAlang.NoClassDefFoundError:com/sun/jersey/spi/inject/Errors$关闭原因?   java为什么在我成功登录后仍然会出现“不正确的帐户或密码或用户类型”   安卓应用程序在重新启动java时崩溃。网UnknownHostException:无法解析主机   多线程在Java中同步共享静态对象的正确方法是什么?   未调用自定义注释的java类验证(约束类)   java如何将指定目录的存档文件放入所需位置?   java如何识别Selenium中的每个编辑文本字段,如果它们的Xpath都相同   使用gwtmockito/mockito的java简单单选按钮单元测试?