Task4 基于深度学习的文本分类1

本文深入解析FastText深度学习模型,介绍了其如何通过引入subword n-gram概念解决低频词和未登录词的问题,以及在文本分类任务上的优势。文章提供了FastText的安装指南和参数说明,展示了如何通过修改参数提升模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FastText是一种典型的深度学习词向量的表示方法,它非常简单通过Embedding层将单词映射到稠密空间,然后将句子中所有的单词在Embedding空间中进行平均,进而完成分类操作。

所以FastText是一个三层的神经网络,输入层、隐含层和输出层。

在fastText的工作之前,大部分的文本向量化的工作,都是以词汇表中的独立单词作为基本单元来进行训练学习的。这种想法非常自然,但也会带来如下的问题:

· 低频词、罕见词,由于在语料中本身出现的次数就少,得不到足够的训练,效果不佳;

· 未登录词,如果出现了一些在词典中都没有出现过的词,或者带有某些拼写错误的词,传统模型更加无能为力。

fastText引入了subword n-gram的概念来解决词形变化(morphology)的问题。直观上,它将一个单词打散到字符级别,并且利用字符级别的n-gram信息来捕捉字符间的顺序关系,希望能够以此丰富单词内部更细微的语义。
在这里插入图片描述

FastText在文本分类任务上,是优于TF-IDF的:
•FastText用单词的Embedding叠加获得的文档向量,将相似的句子分为一类
•FastText学习到的Embedding空间维度比较低,可以快速进行训练

fastText 安装

pip install fasttext

git clone https://github.com/facebookresearch/fastText.git
cd fastText
sudo pip install .
import pandas as pd
from sklearn.metrics import f1_score

# 转换为FastText需要的格式
train_df = pd.read_csv('../input/train_set.csv', sep='\t')
train_df['label_ft'] = '__label__' + train_df['label'].astype(str)
train_df[['text','label_ft']].iloc[:-5000].to_csv('train.csv', index=None, header=None, sep='\t')

import fasttext
model = fasttext.train_supervised('train.csv', lr=1.0, wordNgrams=2, 
                                  verbose=2, minCount=1, epoch=25, loss="hs")

val_pred = [model.predict(x)[0][0].split('__')[-1] for x in train_df.iloc[-5000:]['text']]
print(f1_score(train_df['label'].values[-5000:].astype(str), val_pred, average='macro'))
# 0.82
label2id = {}
for i in range(total):
    label = str(all_labels[i])
    if label not in label2id:
        label2id[label] = [i]
    else:
        label2id[label].append(i)

结果:
0.82215
作业:
•阅读FastText的文档,尝试修改参数,得到更好的分数
fasttext参数及含义

- input             # training file path (required) 训练文件路径(必须)<br>
- lr                # learning rate [0.1] 学习率 default 0.1<br>
- dim               # size of word vectors [100] 词向量维度 default 100<br>
- ws                # size of the context window [5] 上下文窗口大小 default 5<br>
- epoch             # number of epochs [5] epochs 数量 default 5<br>
- minCount          # minimal number of word occurences [1] 最低词频 default 5<br>
- minCountLabel     # minimal number of label occurences [1] 最少出现标签的次数 default 1<br>
- minn              # min length of char ngram [0] 最小字符长度 default 0<br>
- maxn              # max length of char ngram [0] 最大字符长度 default 0<br>
- neg               # number of negatives sampled [5] 负样本数量 default 5<br>
- wordNgrams        # max length of word ngram [1] n-gram设置 default 1<br>
- loss              # loss function {ns, hs, softmax, ova} [softmax] 损失函数 {ns,hs,softmax} default softmax<br>
- bucket            # number of buckets [2000000] 桶数量 default 2000000<br>
- thread            # number of threads [number of cpus] 线程数量<br>
- lrUpdateRate      # change the rate of updates for the learning rate [100] 更改学习率的更新率<br>
- t                 # sampling threshold [0.0001] 采样阈值 default 0.0001<br>
- label             # label prefix ['__label__'] 标签前缀 default __label__<br>
- verbose           # verbose [2]<br>
- pretrainedVectors # pretrained word vectors (.vec file) for supervised learning [] 指定使用已有的词向量 .vec 文件 default None<br>

•基于验证集的结果调整超参数,使得模型性能更优

基于深度学习文本分类任务是指利用深度学习模型对文本进行情感分类。在这个任务中,我们使用了CNN和RNN模型来进行文本分类。数据集包含了15万余项英文文本,情感分为0-4共五类情感。任务的流程如下:输入数据→特征提取→神经网络设计→结果输出。 在特征提取阶段,我们使用了词嵌入(Word embedding)技术。词嵌入是一种将单词映射到低维向量空间的方法,它可以将单词的语义信息编码为向量表示。在本次任务中,我们参考了博客\[NLP-Beginner 任务二:基于深度学习文本分类\](https://pytorch.org/Convolutional Neural Networks for Sentence Classification)中的方法,使用了预训练的词嵌入模型。 神经网络设计阶段,我们采用了卷积神经网络(CNN)和循环神经网络(RNN)的结合。具体来说,我们使用了四个卷积核,大小分别为2×d, 3×d, 4×d, 5×d。这样设计的目的是为了挖掘词组的特征。例如,2×d的卷积核用于挖掘两个连续单词之间的关系。在模型中,2×d的卷积核用红色框表示,3×d的卷积核用黄色框表示。 最后,我们将模型的输出结果进行分类,得到文本的情感分类结果。这个任务的目标是通过深度学习模型对文本进行情感分类,以便更好地理解和分析文本数据。 #### 引用[.reference_title] - *1* *3* [NLP-Brginner 任务二:基于深度学习文本分类](https://blog.youkuaiyun.com/m0_61688615/article/details/128713638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [NLP基本任务二:基于深度学习文本分类](https://blog.youkuaiyun.com/Mr_green_bean/article/details/90480918)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值