Transformer实战——Transformer跨语言文本分类

Transformer实战------Transformer跨语言文本分类

    • [0. 前言](#0. 前言)
    • [1. 跨语言文本分类](#1. 跨语言文本分类)
    • [2. 数据加载与处理](#2. 数据加载与处理)
    • [3. 模型训练与测试](#3. 模型训练与测试)
    • 相关链接

0. 前言

我们已经了解了跨语言模型能够理解不同语言,并且相似的句子(无论为何种语言)在语义向量空间中彼此接近。但问题在于,如何在样本较少的情况下,利用这种能力来解决实际问题。

1. 跨语言文本分类

例如,假设正在为一个聊天机器人开发意图分类系统,其中第二种语言的样本很少甚至没有;而第一语言有足够的样本。在这种情况下,可以冻结跨语言模型本身,只训练一个分类器来完成任务。训练好的分类器可以在第二种语言上进行测试,而不是在用于训练的语言上进行测试。

在本节中,将学习如何用英语训练一个跨语言模型进行文本分类,并在其他语言上进行测试。我们选择了一种低资源语言------高棉语 (Khmer),互联网上关于高棉语的资源很少,很难找到高质量的数据集来训练模型。我们将使用 IMDb 电影评论数据集,测试模型在未经训练的语言上的表现。

模型训练与测试流程如下图所示。模型在左侧的训练数据上进行训练,然后将该模型应用于右侧的测试集。需要注意的是,机器翻译 (Machine Translation, MT) 和句子编码映射在这一流程中起着重要作用。

2. 数据加载与处理

(1) 首先,加载数据集:

python 复制代码
from datasets import load_dataset 
imdb = load_dataset("imdb")

(2) 在使用数据集之前打乱样本的顺序:

python 复制代码
imdb = imdb.shuffle()

(3) 接下来,从数据集中划分出一个测试集,并将其翻译成高棉语。为此,可以使用 Google 翻译等翻译应用。首先,将数据集保存为 Excel 格式:

python 复制代码
imdb_x = [x for x in imdb['train'][:1000]['text']] 
labels = [x for x in imdb['train'][:1000]['label']] 
import pandas as pd 
pd.DataFrame(imdb_x, 
             columns=["text"]).to_excel( 
                                 "imdb.xlsx", 
                                  index=None) 

(4) 之后,可以将其上传到翻译应用(如 Google 翻译)中并获取该数据集的高棉语翻译版本:

(5) 选择并上传文档后,将获得高棉语的翻译版本,可以将其复制并粘贴到 Excel 文件中,同样需要将其保存为 Excel 格式。最终得到一个翻译自原始英语数据集的 Excel 文档,使用 pandas 读取该文件:

python 复制代码
pd.read_excel("KHMER.xlsx") 

结果如下所示:

(6) 获取文本部分:

python 复制代码
imdb_khmer = list(pd.read_excel("KHMER.xlsx").text) 

(7) 得到两种语言的文本和标签后,划分训练和测试验证集:

python 复制代码
from sklearn.model_selection import train_test_split
train_x, test_x, train_y, test_y, khmer_train, khmer_test = train_test_split(imdb_x, labels, imdb_khmer, test_size = 0.2, random_state = 1) 

(8) 接下来,使用 XLM-R 跨语言模型为这些句子提供表示。首先,加载模型:

python 复制代码
from sentence_transformers import SentenceTransformer 
model = SentenceTransformer("stsb-xlm-r-multilingual") 

(9) 获取句子的向量表示:

python 复制代码
encoded_train = model.encode(train_x) 
encoded_test = model.encode(test_x) 
encoded_khmer_test = model.encode(khmer_test) 

(10) 将标签转换为 NumPy 格式,因为在使用 Keras 模型的 fit 函数时,TensorFlowKeras 需要处理 NumPy 数组:

python 复制代码
import numpy as np 
train_y = np.array(train_y) 
test_y = np.array(test_y) 

3. 模型训练与测试

(1) 创建模型对表示进行分类:

python 复制代码
import tensorflow as tf 
input_ = tf.keras.layers.Input((768,)) 
classification = tf.keras.layers.Dense( 
                                1, 
                                activation="sigmoid")(input_) 
classification_model = tf.keras.Model(input_, classification) 
classification_model.compile( 
               loss=tf.keras.losses.BinaryCrossentropy(), 
               optimizer="Adam", 
               metrics=["accuracy", "Precision", "Recall"]) 

(2) 训练模型:

复制代码
classification_model.fit( 
                     x = encoded_train, 
                     y = train_y, 
                     validation_data=(encoded_test, test_y), 
                     epochs = 20) 

模型在 20 个训练 epoch 的性能变化如下所示:

可以看到,我们使用英文测试集来评估模型在各个训练 epoch 的表现,最终结果如下:

shell 复制代码
val_loss: 0.5226
val_accuracy: 0.7150
val_precision: 0.7600
val_recall: 0.6972

(3) 我们已经训练了模型并在英文数据集上进行了测试,接下来,我们在高棉语测试集上进行测试:

python 复制代码
classification_model.evaluate(x = encoded_khmer_test,
                              y = test_y) 

测试结果如下所示:

shell 复制代码
val_loss: 0.5944913625717163
val_accuracy: 0.7250000238418579
val_precision: 0.7014925479888916
val_recall: 0.8623853325843811

我们已经了解了如何利用跨语言模型在低资源语言中发挥其能力。当在某些情况下,训练模型的数据非常稀缺甚至没有数据时,能够使用这种能力能够发挥重要作用。

相关链接

Transformer实战(1)------词嵌入技术详解
Transformer实战(2)------循环神经网络详解
Transformer实战(3)------从词袋模型到Transformer:NLP技术演进
Transformer实战(4)------从零开始构建Transformer
Transformer实战(5)------Hugging Face环境配置与应用详解
Transformer实战(6)------Transformer模型性能评估
Transformer实战(7)------datasets库核心功能解析
Transformer实战(8)------BERT模型详解与实现
Transformer实战(9)------Transformer分词算法详解
Transformer实战(10)------生成式语言模型 (Generative Language Model, GLM)
Transformer实战(11)------从零开始构建GPT模型
Transformer实战(12)------基于Transformer的文本到文本模型
Transformer实战(13)------从零开始训练GPT-2语言模型
Transformer实战(14)------微调Transformer语言模型用于文本分类
Transformer实战(15)------使用PyTorch微调Transformer语言模型
Transformer实战(16)------微调Transformer语言模型用于多类别文本分类
Transformer实战(17)------微调Transformer语言模型进行多标签文本分类
Transformer实战(18)------微调Transformer语言模型进行回归分析
Transformer实战(19)------微调Transformer语言模型进行词元分类
Transformer实战(20)------微调Transformer语言模型进行问答任务
Transformer实战(21)------文本表示(Text Representation)
Transformer实战(22)------使用FLAIR进行语义相似性评估
Transformer实战(23)------使用SBERT进行文本聚类与语义搜索
Transformer实战(24)------通过数据增强提升Transformer模型性能
Transformer实战(25)------自动超参数优化提升Transformer模型性能
Transformer实战(26)------通过领域适应提升Transformer模型性能
Transformer实战(27)------参数高效微调(Parameter Efficient Fine-Tuning,PEFT)
Transformer实战(28)------使用 LoRA 高效微调 FLAN-T5
Transformer实战(29)------大语言模型(Large Language Model,LLM)
Transformer实战(30)------Transformer注意力机制可视化
Transformer实战(31)------解释Transformer模型决策
Transformer实战(32)------Transformer模型压缩
Transformer实战(33)------高效自注意力机制
Transformer实战(34)------多语言和跨语言Transformer模型
Transformer实战(35)------跨语言相似性任务

相关推荐
用户14748530797418 小时前
AI-动手深度学习环境搭建-d2l
深度学习
OpenBayes贝式计算20 小时前
解决视频模型痛点,TurboDiffusion 高效视频扩散生成系统;Google Streetview 涵盖多个国家的街景图像数据集
人工智能·深度学习·机器学习
OpenBayes贝式计算20 小时前
OCR教程汇总丨DeepSeek/百度飞桨/华中科大等开源创新技术,实现OCR高精度、本地化部署
人工智能·深度学习·机器学习
warm3snow1 天前
AI 核心技能系列:12 篇文章带你系统掌握大模型岗位必备技能
ai·transformer·agent·skill·mcp·fine-tunning
在人间耕耘2 天前
HarmonyOS Vision Kit 视觉AI实战:把官方 Demo 改造成一套能长期复用的组件库
人工智能·深度学习·harmonyos
homelook2 天前
Transformer与电池管理系统(BMS)的结合是当前 智能电池管理 的前沿研究方向
人工智能·深度学习·transformer
ccLianLian2 天前
强化学习·导论
深度学习
官能2 天前
从 ReAct 到 LangGraph:房产 Agent 的工作流升级复盘
人工智能·语言模型
机 _ 长2 天前
Transformer架构深度解析:从翻译模型到大语言模型的核心技术
人工智能·深度学习
宝贝儿好2 天前
【强化学习】第十章:连续动作空间强化学习:随机高斯策略、DPG算法
人工智能·python·深度学习·算法·机器人