Hugging Face推出了分词器

原文链接:https://medium.com/dair-ai/hugging-face-introduces-tokenizers-d792482db360

去年对于自然语言处理(NLP)来说是巨大的。就改进而言,现在可以通过使用优化的库和高性能硬件来更快地实现神经网络。但是,基于深度学习的现代NLP管道中的瓶颈之一是tokenization,尤其是通用性强且独立于框架的实现。

为了提供对现代NLP管道良好配合的快速,最先进且易于使用的令牌化的访问,Hugging Face贡献者已开发并开源了Tokenizers.。顾名思义,令牌生成器是当今使用最广泛的令牌生成器的一种实现,着重于性能 多功能性

tokenizer的实现由以下流程管道组成,每个流程对文本信息应用不同的转换:

正规化第一归一化的文字,其结果被馈送到PreTokenizer它负责通过分裂文本应用简单的标记化到使用空格其不同的字的元素。该模型对应于实际的算法,例如BPE,WordPiece或SentencePiece,它们自己执行标记化。该后处理则需要合并了需要被添加到最终输出的任何其他有用信息的护理编码,然后将其随时可以使用,并送入,也就是说,一个语言模型进行训练。

这看起来像是典型的令牌化管道,确实有很多快速而出色的解决方案,例如SentencePiece,fast-BPE和YouTokenToMe。但是,Tokenizers真正的亮点在于以下关键领域:

  • 性能(“在不到20秒的时间内对服务器CPU上的GB文本进行标记化”)
  • 提供用于研究和生产用例的最新令牌生成器 BPE /字节级-BPE / WordPiece / SentencePiece… 
  • 旨在实现易用性和多功能性
  • 使用对齐跟踪提供与令牌相对应的原始文本的可重复性
  • 应用预处理***实践,例如截断,填充等。

用法

标记器是用Rust实现的,并且存在Node和Python的绑定。计划将来增加对更多语言的支持。要开始使用Tokenizer,您可以使用以下任何选项进行安装:

  • Rust: https://crates.io/crates/tokenizers
  • Python: pip install tokenizers
  • Node:https://github.com/huggingface/tokenizers/tree/master/bindings/node

以下是有关如何对Tokenizer使用Python绑定的代码快照:

您可以使用预先训练的标记器,也可以训练自己的标记器。当前开箱即用的当前Tokenizer是BPETokenizerByteLevelBPETokenizerSentencePieceBPETokenizerBertWordPieceTokenizer。您可以在官方文档中阅读更多内容。

相关推荐:

文本分类在Python里怎么应对新词与未登录词_使用Subword与BPE算法构建分词器

结论:subword/BPE并非解决未登录词,而是让模型无需认识整词——靠子词拼合;关键在训练与下游任务的tokenization逻辑对齐。 直接说结论:用subword或BPE不是“解决”未登录词,而是让模型根本不需要“认识”整词——它靠子词拼出来。关键不在分词器本身多聪明,而在训练时是否对齐了s...

Python文本数据去噪与分词该用什么方案_集成Jieba与正则表达式构建清洗流

中文文本去噪必须先正则清洗再jieba分词,否则噪声污染词典导致错误切分;清洗需依次清除控制符、统一空白、过滤乱码,再分词并加载词典、关闭HMM、禁用自动新词。 直接说结论:中文文本去噪必须先正则清洗、再用jieba分词,不能反过来——否则噪声会污染词典、触发错误切分,比如把“123abc456”切...

如何避免 Hugging Face 模型重复下载

本文详解在使用HuggingFacediffusers加载StableDiffusion等大模型时,如何通过本地缓存或手动保存模型来彻底避免每次运行都重复下载数GB文件的问题,并提供可直接复用的代码示例与关键注意事项。 本文详解在使用huggingface`diffusers`加载stabledif...

Python自然语言处理基础_使用Spacy进行分词与词性标注

spaCy的nlp对象需先通过spacy.load()加载模型(如"zh_core_web_sm")才能使用,不可直接调用;中文词形还原无效,应关注token.text、pos_、tag_;切片返回Span而非Token,类型需区分;禁用无关pipeline组件可提升词性标注稳定性。 spaCy的n...

Python词云图怎么做_wordcloud库参数配置与jieba中文分词实战

必须用jieba分词并过滤单字后输入WordCloud,指定中文字体路径,合理设置max_words与max_font_size,必要时加载自定义词典。 wordcloud生成空白图?检查输入文本是否被切成了单字 中文不加预处理直接喂给WordCloud,大概率得到满屏“的”“了”“在”“我”,甚至...

Python词云怎么做_WordCloud库结合Jieba分词生成词云图

WordCloud生成中文词云显示方块是因为默认不支持中文字体,需显式指定font_path参数传入中文字体路径;Jieba分词后需用"".join()拼接且过滤停用词与单字,否则出现单字高频或语义断裂。 WordCloud生成中文词云为什么全是方块? 因为WordCloud默认不支持中文字体,汉字...