transformers
文章平均质量分 58
1
不负韶华ღ
这个作者很懒,什么都没留下…
展开
-
tokenizers Tokenizer类
函数说明Tokenizer函数构造一个分词器对象。分词方式主要有word-level、subword-level、char-level三种,其中,subword-level分词方式又有三种不同实现的方法:BPE、Unigram、WordPiece。参数model表示分词器使用的分词方式,接受一个Model对象,这里主要实现了word-level的分词方式以及subword-level的分词方式。Tokenizer类主要的方法有:1、from_file(path):从指定文件加载Tokenizer对象。2、原创 2022-06-03 16:44:37 · 4492 阅读 · 0 评论 -
transformers DataCollatorForWholeWordMask类
在构建MLM时,15%的Word piece会被mask,这15%中,80%会直接替换为[Mask],10%将其替换为其他任意单词,10%保留原始token。而WWM(Whole Word Masking)将整词mask,改变了原来预训练阶段的训练样本生成策略。原有的基于wordPiece的分词方式将一个完整的词切分为若干子词,预训练阶段字词被分开随机mask。而www采取的措施是,一个完整的词被mask,同属于该词的其他部分也会被mask,即全词mask。参数tokenizer表示对句子编码的分词器。参原创 2022-07-11 17:58:48 · 504 阅读 · 0 评论 -
transformers DataCollatorForPermutationLanguageModeling类
用于特指XLNet进行预训练PLM(排列组合语言模型)时使用的数据收集器,关于XLNet以及PLM,可以参考这里。参数tokenzier表示编码句子的分词器。参数plm_probability表示部分预测的序列末尾被mask的概率。序列末尾被mask的长度=span_length*plm_probability。参数max_span_length表示span_length的采样区间的长度[1, max_span_length]。参数return_tensors表示返回数据的类型,有三个可选项,分别是"tf"原创 2022-07-11 17:30:30 · 216 阅读 · 0 评论 -
transformers DataCollatorForLanguageModeling类
在构建语言模型或者说是进行MLM任务时需要使用的数据收集器,该数据收集器会以一定概率(由参数mlm_probability控制)将序列中的Token替换成Mask标签。不同于DataCollatorWithPadding、DataCollatorForTokenClassification和DataCollatorForTokenClassification,该数据收集器只会将序列填充到最长序列长度。参数tokenzier表示用于编码数据的分词器。参数mlm表示是否使用MLM模型,也就是会随机的Mask掉序原创 2022-07-11 16:58:20 · 1869 阅读 · 0 评论 -
transformers DataCollatorForSeq2Seq类
在进行序列生成任务时(QA、文本概括等)使用的数据收集器,需要模型的输出是一个序列。该数据收集器不仅会动态的填充数据的数据,而且也会填充数据对应的标签。参数tokenizer表示用于编码数据的分词器。参数model表示训练的模型,通过设置的模型,从而产生一项数据decoder_input_ids,该数据用于模型decoder层数据的输入。参数padding表示填充方式,可以为布尔类型、字符串类型或者一个PaddingStrategy对象。当值为布尔类型时,True表示填充至最大序列长度,False表示不填充原创 2022-07-11 16:24:48 · 3472 阅读 · 0 评论 -
transformers DataCollatorForTokenClassification类
在进行NER(实体命名识别)任务时使用的数据收集器,该数据收集器不仅会动态的处理输入的数据,而且会处理数据的标签。参数tokenizer表示用于编码数据的分词器。参数padding表示填充方式,可以为布尔类型、字符串类型或者一个PaddingStrategy对象。当值为布尔类型时,True表示填充至最大序列长度,False表示不填充。当为字符串类型时,"longest"表示填充值最大序列长度,"max_length"表示填充值参数max_length设置的长度,"do_not_pad"表示不填充。参数max原创 2022-07-11 16:07:29 · 1000 阅读 · 0 评论 -
transformers DataCollatorWithPadding类
在transfomers中,定义了一个DataCollator类,该类用于将数据集的单个元素打包成一批数据。DataCollatorWithPadding类是DataCollator类的一个实现类,该类在打包时将动态填充输入的数据。参数tokenizer表示输入的分词器。参数padding可以为bool类型,True表示填充,False表示不填充;也可以为字符串,表示填充策略,"longest"表示根据输入数据中最长的数据来进行填充,"max_length"表示填充至参数max_length设置的长度,“d原创 2022-06-26 09:33:54 · 2382 阅读 · 0 评论 -
transformers DefaultDataCollator类
默认的数据收集器,只是将transformers中的Dataset数据对象转换成tensorflow或pytorch可以处理的Dataset数据对象。没有像DataCollatorWithPadding那样,在转换数据类型的同时,也进行数据的填充。参数return_tensors表示返回数据的类型。有三个可选项,分别是"tf"、“pt”、“np”,分别表示tensorflow可以处理的数据类型,pytorch可以处理的数据类型以及numpy数据类型。...原创 2022-07-11 15:48:42 · 921 阅读 · 0 评论 -
datasets Dataset类(2)
通过一个映射函数function,处理Dataset中的每一个元素。如果不指定function,则默认的函数为lambda x: x。参数batched表示是否进行批处理,参数batch_size表示批处理的大小,也就是每次处理多少个元素,默认为1000。参数drop_last_batch表示当最后一批的数量小于batch_size,是否处理最后一批。参数input_columns表示输入的列名,默认为Dataset中所有的列,以一个字典类型传入。参数remove_columns表示移除的列名。2、to原创 2022-06-26 09:09:55 · 1667 阅读 · 0 评论 -
datasets Dataset类(1)
函数说明根据ArrowTable产生一个Dataset对象。根据字典来创建Dataset数据集对象。2、from_pandas函数根据pandas中的DataFrame对象创建Dataset对象。3、from_csv函数根据csv文件来创建Dataset对象。根据json文件来创建Dataset对象。根据txt文件来创建Dataset对象。根据parquet文件来创建Dataset对象。根据arrow文件来创建Dataset对象。根据arrow buffer对象来创建Dataset原创 2022-06-15 11:06:04 · 3743 阅读 · 0 评论 -
datasets DatasetDict类
根据csv文件字典来创建DatasetDict对象。2、from_json函数根据json文件字典来创建DatasetDict对象。3、from_text函数根据text文件字典来创建DatasetDict对象。根据parquet文件字典来创建DatasetDict对象。获取DatasetDict各个Dataset中的数据。2、cache_files属性获取DatasetDict各个Dataset中数据所在的缓存文件。3、num_columns、num_rows属性获取DatasetD原创 2022-06-15 11:49:11 · 4490 阅读 · 0 评论 -
datasets DatasetBuilder类
通过构造器返回一个Dataset对象。2、download_and_prepare函数下载并且准备好数据。3、get_exported_dataset_info函数返回一个DatasetInfo对象,获取数据集的信息。4、get_all_exported_dataset_infos函数返回一个关于DatasetInfo对象的字典,获取数据集的信息。...原创 2022-06-15 12:04:50 · 554 阅读 · 0 评论 -
datasets load_dataset_builder函数
函数说明load_dataset_builder函数返回一个DatasetBuilder构造器对象,通过构造器可以生成Dataset数据集对象。参数path表示数据集的名字或者路径。可以是一个数据集的名字,比如"imdb"、“glue”;也可以是通用的产生数据集文件的脚本,比如"json"、“csv”、“parquet”、“text”;或者是在数据集目录中的脚本(.py)文件,比如“glue/glue.py”。参数name表示数据集中的子数据集,当一个数据集包含多个数据集时,就需要这个参数。比如"glue原创 2022-06-15 09:55:02 · 1629 阅读 · 0 评论 -
datasets load_dataset函数
函数说明load_dataset函数从Hugging Face Hub或者本地数据集文件中加载一个数据集。可以通过 https://huggingface.co/datasets 或者datasets.list_datasets()函数来获取所有可用的数据集。参数path表示数据集的名字或者路径。可以是一个数据集的名字,比如"imdb"、“glue”;也可以是通用的产生数据集文件的脚本,比如"json"、“csv”、“parquet”、“text”;或者是在数据集目录中的脚本(.py)文件,比如“glue原创 2022-06-14 21:05:17 · 28849 阅读 · 4 评论 -
transformers PreTrainedTokenizer类
PreTrainedTokenizer类是所有分词器类Tokenizer的基类,该类不能被实例化,所有的分词器类(比如BertTokenizer、DebertaTokenizer等)都继承自PreTrainedTokenizer类,并实现了基类的方法。该函数返回一个BatchEncoding,该类继承自python字典类型,可以像使用字典一样使用BatchEncoding。除此之外,该类还有一些将单词、字符转换成分词的方法。下面以BertTokenizer为例,说明一下各个参数的含义。参数text表示要编原创 2022-06-23 20:17:59 · 1717 阅读 · 0 评论 -
tokenizers decoders模块
decoders模块负责将id转换成可读的文本。decoders模块中Decoder主要用于解码pre_tokenizers模块中PreTokenizer使用的特殊字符,比如pre_tokenizers模块中Metaspace,将空格转换成下划线,通过deocders模块中Metaspace,则可以将下划线还原成空格。又如,pre_tokenizers模块中ByteLevel,将空格转换成符号"Ġ",对应deocders模块中ByteLevel将符号"Ġ"解码成空格。原创 2022-08-24 14:12:43 · 2680 阅读 · 0 评论 -
tokenizers processors模块
processors模块负责对文本执行额外的转换,添加额外的特殊标记。比如有这样一句话,“this is a text, this is a another text.”,通过处理后,这句话就变成了"[CLS] this is a text [SEP] this is a another text [SEP]"。原创 2022-08-24 12:51:16 · 608 阅读 · 0 评论 -
tokenizers pre_tokenizers模块
pre_tokenizers模块中最重要的一个类PreTokenizer,不仅将文本拆分为单词,还保留了偏移量,即原始文本中每个单词的开头和开头。这将使最终的分词器能够将每个标记与它来自的文本部分进行匹配(我们用于问答或标记分类任务的功能)。官方文档中对于pre_tokenizers模块中PreTokenzier类的解释如下,意思是说负责分割初始输入字符串。这是决定在何处以及如何对原始字符串进行预分段的组件。最简单的例子是使用空格进行分割。原创 2022-08-23 13:55:04 · 1080 阅读 · 0 评论 -
tokenizers normalizers模块
normalizers模块主要负责对初始输入的文本进行规范化。比如,是否将大写字母全部转换成小写字母,是否去除带音调字母的音调,是否删除一些不必要的空格等。normalizers模块实现规范化操作是通过Normalizer子类的调用,共实现了11种方式,分别是BertNormalizer、Lowercase、NFC、NFD、NFKC、NFKD、Nmt、Precompiled、Replace、Strip、StripAccents。其中,通过Sequence类可以将这11种中的几种组合起来。原创 2022-08-24 09:19:17 · 568 阅读 · 0 评论 -
tokenizers models模块
在NLP处理中,分词的目标就是是把输入的文本流,切分成一个个子串,每个子串相对有完整的语义,便于学习embedding表达和后续模型的使用。有三种粒度,分别是word/词,词,是最自然的语言单元。对于英文等自然语言来说,存在着天然的分隔符,如空格或一些标点符号等,对词的切分相对容易。但是对于一些东亚文字包括中文来说,就需要某种分词算法才行。顺便说一下,Tokenizers库中,基于规则切分部分,采用了spaCy和Moses两个库。如果基于词来做词汇表,由于长尾现象的存在,这个词汇表可能会超大。原创 2022-08-23 21:05:54 · 994 阅读 · 0 评论