标记化是自然语言处理 (NLP) 中的基本概念,尤其是在处理语言模型时。在本文中,我们将探讨分词器的作用、工作原理,以及如何使用 Hugging Face 的转换器库 [https://huggingface.co/docs/transformers/index] 将其用于各种应用程序。
什么是分词器?
分词器的核心是将原始文本分解为更小的单元,称为标记。这些标记可以表示单词、子词或字符,具体取决于所使用的标记生成器的类型。标记化的目标是将人类可读的文本转换为更容易被机器学习模型解释的形式。
标记化至关重要,因为大多数模型不能直接理解文本。相反,他们需要数字来进行预测,这就是分词器的用武之地。它接收文本,对其进行处理,并输出模型可以使用的数学表示。
在这篇文章中,我们将介绍如何使用 Hugging Face 中的预训练模型来了解标记化的工作原理,探索 Transformer 库中可用的不同方法,并了解标记化如何影响情感分析等下游任务。
设置模型和分词器
首先,让我们从 Transformers 包中导入必要的库并加载预先训练的模型。我们将使用经过微调的“DistilBERT”模型进行情感分析。
from transformers import pipeline from transformers import AutoTokenizer, AutoModelForSequenceClassification # Load the pre-trained model and tokenizer model_name = "distilbert-base-uncased-finetuned-sst-2-english" model = AutoModelForSequenceClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) # Create the classifier pipeline classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
标记文本
设置模型和分词器后,我们可以开始对一个简单的句子进行分词。这是一个例句:
sentence = "I love you! I love you! I love you!"
让我们逐步分解标记化过程:
1. Tokenizer 输出:输入 ID 和注意力掩码
当您直接调用分词器时,它会处理文本并输出几个关键组件:
- input_ids:表示令牌的整数 ID 列表。每个标记对应于模型词汇表中的一个条目。
- attention_mask:一个由 1 和 0 组成的列表,指示模型应关注哪些标记。这在处理填充时特别有用。
res = tokenizer(sentence) print(res)
输出:
from transformers import pipeline from transformers import AutoTokenizer, AutoModelForSequenceClassification # Load the pre-trained model and tokenizer model_name = "distilbert-base-uncased-finetuned-sst-2-english" model = AutoModelForSequenceClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) # Create the classifier pipeline classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
- input_ids:整数代表标记。例如,1045对应“我”,2293对应“爱”,999对应“!”。
- attention_mask:这些表示应该关注所有标记。如果有填充标记,您会在此列表中看到零,表明它们应该被忽略。
2. 代币化
如果您对分词器如何将句子分割成单独的分词感到好奇,您可以使用 tokenize() 方法。这将为您提供没有底层 ID 的代币列表:
sentence = "I love you! I love you! I love you!"
输出:
res = tokenizer(sentence) print(res)
请注意,标记化涉及将句子分解为更小的有意义的单元。分词器还会将所有字符转换为小写,因为我们使用的是 distilbert-base-uncased 模型,该模型不区分大小写。
3. 将Token转换为ID
一旦我们有了令牌,下一步就是使用convert_tokens_to_ids()方法将它们转换为相应的整数ID:
{ 'input_ids': [101, 1045, 2293, 2017, 999, 1045, 2293, 2017, 999, 1045, 2293, 2017, 999, 102], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }
输出:
tokens = tokenizer.tokenize(sentence) print(tokens)
每个标记都有一个唯一的整数 ID,在模型的词汇表中表示它。这些 ID 是模型用于处理的实际输入。
4. 将 ID 解码回文本
最后,您可以使用decode() 方法将令牌 ID 解码回人类可读的字符串:
['i', 'love', 'you', '!', 'i', 'love', 'you', '!', 'i', 'love', 'you', '!']
输出:
ids = tokenizer.convert_tokens_to_ids(tokens) print(ids)
请注意,解码后的字符串非常接近原始输入,除了删除大写字母,这是“无大小写”模型的标准行为。
了解特殊令牌
在 input_ids 的输出中,您可能已经注意到两个特殊标记:101 和 102。这些标记是许多模型用来表示句子开头和结尾的特殊标记。具体来说:
- 101:标记句子的开头。
- 102:标记句子的结尾。
这些特殊标记帮助模型理解输入文本的边界。
注意力面具
如前所述,attention_mask 帮助模型区分真实标记和填充标记。在这种情况下,attention_mask 是一个列表,表示应关注所有标记。如果有填充标记,您会在掩码中看到零,以指示模型忽略它们。
分词器摘要
总而言之,标记化是将文本转换为机器学习模型可以处理的形式的关键步骤。 Hugging Face 的标记器可处理各种任务,例如:
- 将文本转换为标记。
- 将令牌映射到唯一的整数 ID。
- 为模型生成注意掩模以了解哪些标记很重要。
结论
了解分词器的工作原理是有效利用预训练模型的关键。通过将文本分解为更小的标记,我们使模型能够以结构化、高效的方式处理输入。无论您使用模型进行情感分析、文本生成还是任何其他 NLP 任务,分词器都是管道中的重要工具。
以上是理解分词器:深入研究带有拥抱面孔的分词器的详细内容。更多信息请关注PHP中文网其他相关文章!

toAppendElementStoApythonList,usetheappend()方法forsingleements,Extend()formultiplelements,andinsert()forspecificpositions.1)useeAppend()foraddingoneOnelementAttheend.2)useextendTheEnd.2)useextendexendExendEnd(

TocreateaPythonlist,usesquarebrackets[]andseparateitemswithcommas.1)Listsaredynamicandcanholdmixeddatatypes.2)Useappend(),remove(),andslicingformanipulation.3)Listcomprehensionsareefficientforcreatinglists.4)Becautiouswithlistreferences;usecopy()orsl

金融、科研、医疗和AI等领域中,高效存储和处理数值数据至关重要。 1)在金融中,使用内存映射文件和NumPy库可显着提升数据处理速度。 2)科研领域,HDF5文件优化数据存储和检索。 3)医疗中,数据库优化技术如索引和分区提高数据查询性能。 4)AI中,数据分片和分布式训练加速模型训练。通过选择适当的工具和技术,并权衡存储与处理速度之间的trade-off,可以显着提升系统性能和可扩展性。

pythonarraysarecreatedusiseThearrayModule,notbuilt-Inlikelists.1)importThearrayModule.2)指定tefifythetypecode,例如,'i'forineizewithvalues.arreaysofferbettermemoremorefferbettermemoryfforhomogeNogeNogeNogeNogeNogeNogeNATATABUTESFELLESSFRESSIFERSTEMIFICETISTHANANLISTS。

除了shebang线,还有多种方法可以指定Python解释器:1.直接使用命令行中的python命令;2.使用批处理文件或shell脚本;3.使用构建工具如Make或CMake;4.使用任务运行器如Invoke。每个方法都有其优缺点,选择适合项目需求的方法很重要。

ForhandlinglargedatasetsinPython,useNumPyarraysforbetterperformance.1)NumPyarraysarememory-efficientandfasterfornumericaloperations.2)Avoidunnecessarytypeconversions.3)Leveragevectorizationforreducedtimecomplexity.4)Managememoryusagewithefficientdata

Inpython,ListSusedynamicMemoryAllocationWithOver-Asalose,而alenumpyArraySallaySallocateFixedMemory.1)listssallocatemoremoremoremorythanneededinentientary上,respizeTized.2)numpyarsallaysallaysallocateAllocateAllocateAlcocateExactMemoryForements,OfferingPrediCtableSageButlessemageButlesseflextlessibility。

Inpython,YouCansspecthedatatAtatatPeyFelemereModeRernSpant.1)Usenpynernrump.1)Usenpynyp.dloatp.dloatp.ploatm64,formor professisconsiscontrolatatypes。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

WebStorm Mac版
好用的JavaScript开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

禅工作室 13.0.1
功能强大的PHP集成开发环境

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能