·
编程学习 ·
176975
原文链接: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是BPETokenizer,ByteLevelBPETokenizer,SentencePieceBPETokenizer和BertWordPieceTokenizer。您可以在官方文档中阅读更多内容。
结论:subword/BPE并非解决未登录词,而是让模型无需认识整词——靠子词拼合;关键在训练与下游任务的tokenization逻辑对齐。 直接说结论:用subword或BPE不是“解决”未登录词,而是让模型根本不需要“认识”整词——它靠子词拼出来。关键不在分词器本身多聪明,而在训练时是否对齐了s...
中文文本去噪必须先正则清洗再jieba分词,否则噪声污染词典导致错误切分;清洗需依次清除控制符、统一空白、过滤乱码,再分词并加载词典、关闭HMM、禁用自动新词。 直接说结论:中文文本去噪必须先正则清洗、再用jieba分词,不能反过来——否则噪声会污染词典、触发错误切分,比如把“123abc456”切...
因为torchtext默认按空格切分,而中文无空格,必须先用jieba等工具完成词粒度分词,再将每句分词结果作为token列表yield给build_vocab_from_iterator。 为什么不能直接用torchtext.vocab.build_vocab_from_iterator处理中文原...
结巴分词默认过滤“好”“差”等单字情感词,因优先保证连贯性;需手动加词典或用cut_for_search模式。SnowNLP.sentiments返回0–1值,0.5为中性,但对短文本、反讽不敏感。 结巴分词为什么分不出“好”“差”这类单字情感词 默认模式下jieba.cut()会把“好”“烂”“差...
本文详解在使用HuggingFacediffusers加载StableDiffusion等大模型时,如何通过本地缓存或手动保存模型来彻底避免每次运行都重复下载数GB文件的问题,并提供可直接复用的代码示例与关键注意事项。 本文详解在使用huggingface`diffusers`加载stabledif...
spaCy的nlp对象需先通过spacy.load()加载模型(如"zh_core_web_sm")才能使用,不可直接调用;中文词形还原无效,应关注token.text、pos_、tag_;切片返回Span而非Token,类型需区分;禁用无关pipeline组件可提升词性标注稳定性。 spaCy的n...
必须用jieba分词并过滤单字后输入WordCloud,指定中文字体路径,合理设置max_words与max_font_size,必要时加载自定义词典。 wordcloud生成空白图?检查输入文本是否被切成了单字 中文不加预处理直接喂给WordCloud,大概率得到满屏“的”“了”“在”“我”,甚至...
WordCloud生成中文词云显示方块是因为默认不支持中文字体,需显式指定font_path参数传入中文字体路径;Jieba分词后需用"".join()拼接且过滤停用词与单字,否则出现单字高频或语义断裂。 WordCloud生成中文词云为什么全是方块? 因为WordCloud默认不支持中文字体,汉字...