tokenizer,tokenizer java
1. tokenizer
各种bert输入格式:
另外,用 sequence_ids 参数来区分第一句和第二句。例如,
这里 None 对应了 special tokens ,然后 0 、 1 分表代表第一句和第二句。
[1] HuggingFace-Transformers
4. stringtokenizer类的主要用途是什么? 该类有哪几个重要的方法?
StringTokenizer 是一个Java的类,属于 java.util 包,用来分割字符串和枚举类型。
StringTokenizer 构造方法:
1. StringTokenizer(String str) :构造一个用来解析 str 的 StringTokenizer 对象。使用默认的分隔符:空格("")、制表符(\t)、换行符(\n)、回车符(\r)。
2. StringTokenizer(String str, String delim) :构造一个用来解析 str 的 StringTokenizer 对象,并提供一个指定的分隔符。
3. StringTokenizer(String str, String delim, boolean returnDelims) :构造一个用来解析 str 的 StringTokenizer 对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。
StringTokenizer 常用方法:
1. int countTokens():返回nextToken方法被调用的次数。可以用来计算字符串分割单元的个数。
2. boolean hasMoreTokens():返回是否还有分隔符。可以用来判断,字符串分割有没有处理完。
3. boolean hasMoreElements():判断枚举 (Enumeration) 对象中是否还有数据。用来判断枚举类型有没有处理完。
4. String nextToken():返回从当前位置到下一个分隔符的字符串。
5. Object nextElement():返回枚举 (Enumeration) 对象的下一个元素。
6. String nextToken(String delim):与 4 类似,以指定的分隔符返回结果。
bert tokenizer
有 BertTokenizerFast 和 BertTokenizer, BertTokenizerFast 更快,因为使用了 tokenizer 库。
因为 tokenizer 库基于 RUST 所以多线程更好。而 BertTokenizer 基于 python 的。
所以,我们使用 BertTokenizerFast
from transformers import BertTokenizerFast
如果是做分类等问题,那么,tokenizer 并不会带来什么问题。但是如果做 ner 这种 span 抽取,会带来问题,就是
WordPiceTokenizer 对句子的切分并非是一一对应的。那么,如果对应这个位置会是很繁琐的一个问题。
怎么理解token,tokenize,tokenizer?
1、一种解释
token:令牌
tokenize:令牌化
tokenizer:令牌解析器
2、另一种翻译是:token可以翻译为“标记”,tokenize可以翻译为“标记解析”或“解析标记”,tokenizer可以翻译为“标记解析器”。
在编写词法分析器(Lexer)或语法分析器(Parser)的时候,除了Lexer和Parser这两个词会经常使用外,tokenize和tokenizer也会经常出现,基本上所有涉及到词法解析的源码都会用到tokenize。
在邱仲潘译的《Mastering Java 2》有这儿一段:
StreamTokenizer类根据用户定义的规则,从输入流中提取可识别的子串和标记符号,这个过程称为令牌化 ([i]tokenizing[/i]),因为流简化为了令牌符号。令牌([i]token[/i])通常代表关键字、变量名、字符串、直接量和大括号等 语法标点。
