购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 字符级别与词级别的嵌入方法

字符级别和词级别的嵌入方法在文本表示中具有不同的优势,本节将详细探讨这两种嵌入方法。

2.3.1 字符级嵌入模型的实现与优势

字符级嵌入模型通过将词分解为字符序列或字符n-gram来生成词嵌入,能够有效应对OOV问题,尤其适用于拼写变体和新词的处理。字符级嵌入能够捕捉词汇内部的细微差异,同时增强对细粒度分类任务的适应性。

以下代码将展示字符级嵌入的生成过程,包括构建字符词汇表、嵌入层初始化、字符序列编码和平均嵌入计算,从而实现细粒度的字符级嵌入表示。

代码说明如下:

(1)build_char_vocab函数用于生成字符级词汇表,将每个字符映射到唯一ID,并添加填充标记。

(2)CharLevelEmbedding类实现字符级嵌入模型,使用嵌入层将字符序列映射到固定维度,并对字符嵌入取平均值,作为句子的字符级表示。

(3)encode_sentence函数将句子中的每个字符转换为对应ID,并对不足的部分进行填充,使得每个句子长度一致。

(4)初始化字符嵌入维度为16,将编码后的字符序列输入模型,生成字符级嵌入向量。

运行结果如下:

此结果展示了字符级嵌入模型如何对每个字符进行向量表示,并在序列中生成平均嵌入。字符级嵌入不仅能解决OOV问题,同时为模型提供了更精细的语义表示。

2.3.2 FastText在细粒度信息捕捉中的应用

FastText在词嵌入中引入了字符n-gram信息,能够捕捉词汇内部的细粒度结构,从而为OOV提供更具鲁棒性的表示。在FastText模型中,每个词由其字符n-gram表示的向量之和表示,使得模型不仅依赖词汇表的具体词条,还能够通过字符组合来生成词的嵌入。

以下代码将展示FastText模型的训练、n-gram嵌入生成及其在OOV表示中的应用。

代码说明如下:

(1)FastText模型训练部分使用sg=1参数指定了Skip-gram模型,并生成词汇表和50维的嵌入表示。

(2)通过analyze_similarity函数计算词汇相似度,包括语言和学习的细粒度语义分析。

(3)使用generate_oov_embedding方法获取OOV的嵌入,展示FastText在未登录词处理方面的强大能力。

(4)定义sentence_embedding函数计算句子的平均嵌入,展示FastText在句子层级的表现力。

(5)使用most_similar_words和euclidean_distance函数,查找词汇相似性并计算词汇之间的欧氏距离。

运行结果如下:

此结果展示了FastText在细粒度信息捕捉中的优越性,尤其在OOV词汇的处理方面。通过字符n-gram的引入,FastText有效生成了新词的嵌入表示,并通过计算相似度和距离等进一步展示词汇间的细粒度语义关系。

下面以朱自清的《荷塘月色》散文片段为例,对长文本做一次FastText演示。首先进行文本清理和分词,随后利用FastText模型生成词嵌入表示。

代码实现如下:

代码说明如下:

(1)使用preprocess_text函数对原始文本进行清理和分词,去除标点符号,并使用结巴分词库进行分词。

(2)使用分词后的文本训练FastText模型,将向量维度设为100,窗口大小设为3,训练50个周期。

(3)提取模型中的词嵌入,包括常见词“荷塘”和“月光”,并输出它们的嵌入向量。

(4)对于OOV词“新词”,展示其通过字符n-gram生成的嵌入。

(5)使用sentence_embedding函数生成句子的平均嵌入,展示句子“月光如流水一般,静静地泻在这一片叶子和花上”的嵌入表示。

(6)最后,使用FastText查找与“荷塘”最相似的词,展示模型在细粒度信息捕捉中的表现。

运行结果如下:

此结果展示了FastText在捕捉细粒度语义信息中的优势。通过字符n-gram,FastText能够有效生成OOV词汇的嵌入表示,从而增强对新词和未登录词的处理能力,并通过相似性计算展示词汇间的语义关系。 AIaQG9UpvlR9hrMdc/JWu5S+Ufu9Akj6Z9E9PZG4iTIV7adz3HSdbgdz/aIUtbF5

点击中间区域
呼出菜单
上一章
目录
下一章
×