datawhale-新闻文本分类-task4-基于深度学习的文本分类1-fasttext(代码片段)

alexisbusyblog alexisbusyblog     2022-12-08     293

关键词:

1. 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>

2. 本次fasttext的使用

不需要我们计算词向量后再训练。只需要将分好的词放入fasttext即可训练。
本次比赛,由于文本为匿名,无法分词,数据以单个字的编码形式出现。
因此无法认为分词,但是fasttext存在ngram参数,可通过调节该参数让fasttext帮我们分词同时还帮我们计算词向量。
因此训练时,直接将数据(csv格式)路径放入fasttext即可。

3. 参数优化1

让模型分得更好

使用默认参数运行 fastText 所获得的模型在分类新问题时非常糟糕。
可以尝试通过更改默认参数来提高性能。

  • 1 预处理数据
    • 剔除无用字符
  • 2 增加迭代、学习速率调大
    • 使用选项 -epoch, 标准范围 [5 - 50]
    • 使用选项 -lr, 标准范围 [0.1 - 1.0]
  • 3 增加词序的重要性:word n-grams
    • 使用选项 -wordNgrams, 标准范围 [1 - 5]

4. 其他人参数优化经验

针对上述参数:
训练模式下涉及到的主要参数有
- 学习率(-lr)
- 隐层的维数(-dim)
- 最小词频(-minCount)
- 负采样个数(-neg)和n-grams的长度(-wordNgrams)等。

- word_ngrams 大于1时,模型的精度会提交很多,但是模型的大小也是很大不少,不建议设置太大,因为训练的复杂度和模型的大小会指数级增长
- 需要注意的是修改了 word_ngrams,需要相应的调整bucket,bucket设置的小一点,否则预留会预留太多bucket使模型太大

- lr 设置过大不容易收敛,太小容易过拟合,训练速度也会变慢

- loss 损失函数选用hs(hierarchical softmax)要比ns(negative sampling) 训练速度要快很多倍,并且准确率也更高

5. 总结其他人使用fasttext经验

fasttext不需要我们计算词向量后再训练。只需要将分好的词放入fasttext即可训练

  • 剔除无用字符
  • 使用选项 -epoch, 标准范围 [5 - 50]
  • 使用选项 -lr, 标准范围 [0.1 - 1.0], 注意:lr 设置过大不容易收敛,太小容易过拟合,训练速度也会变慢
  • 使用选项 -wordNgrams, 标准范围 [1 - 5], 注意:修改了 word_ngrams,需要相应的调整bucket,bucket设置的小一点,否则预留会预留太多bucket使模型太大
  • 隐层的维数(-dim)
  • 最小词频(-minCount)
  • 损失函数选用hs(hierarchical softmax), 注意:hs(hierarchical softmax)要比ns(negative sampling) 训练速度要快很多倍,并且准确率也更高

6. 使用fasttext文本分类

  1. 代码
def no_n_kfold_fasttext(train,test):
    # train转换为符合fasttext输入格式
    train[‘label_ft‘] = ‘__label__‘ + train[‘label‘].astype(‘str‘)

    # 全量train生成文件fasttext_train.csv
    train[[‘text‘, ‘label_ft‘]].to_csv(‘fasttext_train.csv‘, index=False, header=None, sep=‘	‘)

    import fasttext 
    # lr=0.5, wordNgrams=2, epoch=25
    model = fasttext.train_supervised(‘fasttext_train.csv‘, lr=0.75, wordNgrams=3,
                                     verbose=2, minCount=1, epoch=25, loss=‘hs‘)
    # 预测test_a数据
    test_pre = [model.predict(x)[0][0].split(‘__‘)[-1] for x in test_a[‘text‘]]
    #返回预测test_a的结果list
    return test_pre

import pandas as pd
train = pd.read_csv(r‘./train_set.csv‘, sep=‘	‘) 
test_a = pd.read_csv(r‘./test_a.csv‘, sep=‘	‘)
# 导出结果,提交
test_pre = no_n_kfold_fasttext(train,test_a)
pd.Series(test_pre, name=‘label‘).to_csv(‘result_1.csv‘, index=False)

预测分数:
技术图片

7. 十折交叉验证的fasttext

暂时还没想到实现fasttext的十折交叉验证方法。 应该是对fasttext还不熟悉。技术图片 后面会做了再补上




















基于深度学习的文本分类应用!

 Datawhale干货 作者:罗美君,算法工程师,Datawhale优秀学习者在​​基于机器学习的文本分类​​中,我们介绍了几种常见的文本表示方法:One-hot、BagsofWords、N-gram、TF-IDF。这些方法存在两个共同的问题:一是转换得到的... 查看详情

datawhale之nlp学习-打卡(代码片段)

Task1赛题理解1.赛题理解赛题名称:零基础入门NLP之新闻文本分类赛题目标:入门自然语言处理,接触NLP的预处理、模型构建和模型训练等知识点赛题任务:对新闻文本进行分类2.学习目标理解赛题背景与赛题数据3.赛题数据报名... 查看详情

大数据分析案例-基于随机森林算法构建新闻文本分类模型

查看详情

datawhale动手学习数据分析-task4(代码片段)

数据可视化导入相关库:importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt导入数据:text=pd.read_csv(r'result.csv')text.head()#可视化展示泰坦尼克号数据集中男女中生存人数分布情况sex=text.groupby('Sex&# 查看详情

datawhale7月组队学习task4数据可视化(代码片段)

Datawhale7月task4数据可视化准备工作**复习:**回顾学习完第一章,我们对泰坦尼克号数据有了基本的了解,也学到了一些基本的统计方法,第二章中我们学习了数据的清理和重构,使得数据更加的易于理解;... 查看详情

深度学习实战案例:新闻文本分类(代码片段)

深度学习多分类案例:新闻文本分类公众号:机器学习杂货店作者:Peter编辑:Peter大家好,我是Peter~这里是机器学习杂货店MachineLearningGrocery~之前介绍过一个单分类的问题。当每个数据点可以划分到多个类别... 查看详情

深度学习实战案例:新闻文本分类(代码片段)

深度学习多分类案例:新闻文本分类公众号:机器学习杂货店作者:Peter编辑:Peter大家好,我是Peter~这里是机器学习杂货店MachineLearningGrocery~之前介绍过一个单分类的问题。当每个数据点可以划分到多个类别... 查看详情

机器学习之新闻文本分类。(代码片段)

新闻文本分类首先需要通过大量的训练之后获得一个存放关键字的表,之后再输入一个新闻内容,通过代码就可以自动判断出这个新闻的类别,我这里是在已经有了新闻文本的关键词表后的处理,#encoding=utf-8#遍历文件,用Prosesso... 查看详情

人工智能--基于注意力机制的新闻话题分类(代码片段)

...法。学习内容:利用循环神经网络和注意力机制进行新闻话题分类的代码,并调整网络结构,看是否可以提高识别率。学习过程:经过调整网络结构,得出下表结果,optimizerlrbatch_sizetrainableepochs验证集识别... 查看详情

paddlenlp基于ernir3.0文本分类:wos数据集为例(层次分类)(代码片段)

...车数据、快递单】Paddlenlp之UIE分类模型【以情感倾向分析新闻分类为例】含智能标注方案)应用实践:分类模型大集成者[PaddleHub、Finetune、prompt]Paddlenlp之UIE关系抽取模型【高管关系抽取为例】PaddleNLP基于ERNIR3.0文本分类... 查看详情

课后作业——新闻文本分类(代码片段)

引言:  本次任务是做一个新闻文本分类的算法,算法选择朴素贝叶斯实现。可以实现对新闻内容的一个具体分类。  环境:jupternookbook,py3.81.导入数据df_new=pd.read_excel(\'./data/123.xlsx\').astype(str)df_news=pd.DataFrame(df_new)df_news.head()... 查看详情

使用 Spacy 对新闻文章进行文本分类

】使用Spacy对新闻文章进行文本分类【英文标题】:TextClassificationofNewsArticlesUsingSpacy【发布时间】:2020-09-2810:01:27【问题描述】:数据集:包含大约1500列数据的Csv文件,其中列(Text,Labels)其中Text是尼泊尔语的新闻文章语言和标签... 查看详情

keras深度学习实战——新闻文本分类(代码片段)

Keras深度学习实战(9)——新闻文本分类0.前言1.新闻文本分类任务与神经网络模型分析1.1数据集1.2神经网络模型2.使用神经网络进行新闻文本分类小结系列链接0.前言在先前的应用实战中,我们分析了结构化的数据集&... 查看详情

从整体视角了解情感分析文本分类!(代码片段)

 Datawhale干货 作者:太子长琴,算法工程师,Datawhale成员文本分类是自然语言处理(NLP)最基础核心的任务,或者换句话说,几乎所有NLP任务都是「分类」任务,或者涉及到「分类」概念。比如分... 查看详情

基于bert的多模型融合借鉴(代码片段)

本次介绍假新闻赛道一第一名的构建思路,大家一起学习下任务描述 文本是新闻信息的主要载体,对新闻文本的研究有助于虚假新闻的有效识别。虚假新闻文本检测,具体任务为:给定一个新闻事件的文本,判定该事件属于... 查看详情

新闻文本分类任务:使用transformer实现(代码片段)

...相关......)👈(封面图由文心一格生成)新闻文本分类任务:使用Transformer实现自然语言处理(NLP)领域中的新闻文本分类任务旨在将一段文本自动分类到某个预定义的类别中,例如体育、政治、... 查看详情

nlp新闻主题分类任务(代码片段)

【NLP】新闻主题分类任务前言1.构建带有Embedding层的文本分类模型2.对数据进行batch处理3.构建训练与验证函数4.进行模型训练和验证5.查看embedding层嵌入的词向量总结前言学习目标了解有关新闻主题分类和有关数据.掌握使用浅层... 查看详情

nlp——天池新闻文本分类task1(代码片段)

NLP——新闻文本处理:TASK1赛题理解与nlp初识1.数据读取在竞赛主页下载好数据集利用pandas打开:#coding=utf-8importpandasaspd#my_font=font_manager.FontProperties(fname="C:WindowsFontsmsyh.ttc")#设置显示范围pd.set_option(‘display.max_c 查看详情