前言
对于一名前端开发人员来说,数据处理是非常重要的一项技能。然而,在进行数据处理时,我们往往需要将一段文本进行拆分、分词或者进行序列化处理,这时我们就需要使用到一些文本处理工具或者库。本文将介绍一个非常常用的文本处理库——tokenizers.io。
什么是 tokenizers.io
tokenizers.io 是一个由 Hugging Face 公司开发的文本处理库,它能够对文本进行分词、序列化等处理。该库已经发布到了 npm 上,我们可以直接通过 npm 安装并使用它。
安装
安装非常简单,只需要在终端中执行以下命令即可:
npm install @huggingface/tokenizers
使用
下面将介绍 tokenizers.io 的主要使用方式。
1. 初始化
在使用 tokenizers.io 时,我们首先需要初始化一个 Tokenizer 对象。在初始化时,我们需要指定一个 Tokenizer 类型,比如:BertWordPieceTokenizer、ByteLevelBPETokenizer、UnigramTokenizer 等等。
接下来我们以 BertWordPieceTokenizer 为例进行介绍。
import { BertWordPieceTokenizer } from "@huggingface/tokenizers"; const tokenizer = BertWordPieceTokenizer.fromOptions({ vocabFile: "path/to/vocabulary.json", lowercase: true, });
如上述代码所示,我们通过 BertWordPieceTokenizer.fromOptions 方法初始化了一个 BertWordPieceTokenizer 类型的 Tokenizer 对象,并且指定了一个 vocabFile
参数,该参数指向存放词表的 json 文件路径。
由于我们是在前端应用中使用 tokenizers.io,所以我们需要将该词表从本地读取,并将其作为一个 json 对象传递给 Tokenizer 实例。如下所示:
-- -------------------- ---- ------- ------ - ---------------------- - ---- -------------------------- ----- -------- ---------------- - ----- -------- - ----- --------------------------------- ----- ---------- - ----- ---------------- ------ ----------- - ----- -------- ------ - ----- ---------- - ----- ----------------- ----- --------- - ------------------------------------ ------ ----------- --- -- -- --------- ---- --------- - -------
2. 分词
在分词时,我们需要使用 Tokenizer 的 encode
方法,该方法接收一段文本,并返回一个 TokenizerEncoding 对象。
const text = "Hello, world!"; const encoding = tokenizer.encode(text); console.log(encoding.tokens); // ["hello", ",", "world", "!"]
encode
方法会将传入的文本进行分词处理,并返回一个 TokenizerEncoding 对象,该对象包含了多个有用的信息,例如:tokens、offsets、attentionMask 等等。
3. 序列化
在序列化操作中,我们需要将经过分词处理后的 Token 值,序列化成一个一维的数组。
const text = "Hello, world!"; const encoding = tokenizer.encode(text); const ids = encoding.ids; console.log(ids); // [7916, 1010, 2088, 999]
4. 反序列化
在将序列化后的一维数组还原成经过分词处理后的 Token 值时,我们需要使用 Tokenizer 的 decode
方法。
const ids = [7916, 1010, 2088, 999]; const decoding = tokenizer.decode(ids); console.log(decoding); // "hello, world!"
5. 获取 Token 的偏移量
如果我们需要获取每个 Token 在原始文本中的偏移量,我们可以通过 TokenizerEncoding 对象的 offsets
属性获取。
const text = "Hello, world!"; const encoding = tokenizer.encode(text); console.log(encoding.offsets); // [[0, 5], [5, 6], [7, 12], [12, 13]]
通过 offsets
属性,我们可以获得一个二维数组,其中每个元素表示原始文本中一个 Token 的起始和结束位置,例如 [0, 5]
表示在原始文本中第一个 Token 的起始偏移量为 0,结束偏移量为 5。
总结
通过本文,我们学习了 npm 包 tokenizers.io 的使用方法。该库提供了非常多的文本处理方法,可以帮助我们快速完成数据处理与分析工作。如果您在进行数据处理时,需要进行文本预处理或者序列化处理,可以考虑使用 tokenizers.io 这个非常方便的库。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600668f0d9381d61a3540d8f