DateWhale零基础入门NLP之新闻文本分类学习打卡task01、02--kk

费曼说:学习一件事情最好的方式是做它的老师,这也是写这篇博文的目的,写这篇博文,即便有其他原因,但更多的还是写给自己,话不多说,让我们开始进入NLP吧

  本次的内容主要还是对赛题进行一个赛题理解也就是读题的工作,并熟悉天池实验室的使用过程。同时,也是对于本次比赛数据的一个读取和熟悉的工作。

  任务说明:任务task1

  基座课程:基座课程

  由于篇幅,我们将task1和task2的学习笔记合并到同一篇文章之中,因此,本篇文章也将分上下片来进行。

第一篇:赛题理解及个人自加的对各实验平台探索

导言:本次的内容分为,数据集下载并查看、对赛题及学习安排的了解、各实验平台的测试及比较

1.数据集下载并查看

  谈到机器学习,我们自然会想到它的几个重要的组分:数据、模型、目标函数、优化器,而数据则是机器学习最原始也是不可或缺的一部分,数据的数量和质量,直接关乎机器学习成功与否。因此,对于数据,我们需要有足够的了解才行。

  对数据的查看:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jn
from IPython.display import display, clear_output
import time

import pandas as pd
train_df = pd.read_csv('train_set.csv', sep='\t', nrows=200000)

train_df.head()

  统计分析:得知,中位数为676,最大为57921,方差较大

用图标更直观的看待:本次数据标签有14个,而分布的特点是从0到13数量依次减少,后期可以考虑对于标签的分布不均的解决方式:

本次的字符为数字,所以赛方提示我们目的是为了统计每个text标签中字符3750,字符900,和字符648的频率,从而得出这三个数字可能是标点符号,可用于断句和在作为置零不考虑:

2.作业1:homework.1
分析:这其实是计数的工作,用到的是Counter库,目的是为了统计每个text标签中字符3750,字符900,和字符648的频率,然后做一个求平均值的操作就行了

尝试一:结果:失败

本次使用lambda函数断句,结果显示系统的处理速度有限:NotebookApp.iopub_data_rate_limit=1000000.0 (bytes/sec)

于是,换一种方式吧!

尝试二:结果:成功

3.一些探索性尝试:

对于每段代码的执行时间的量化和记录:

方法一:使用time包进行计时

方法二:

方式三:

其实最常用的还是在代码前面加一个%%time就够快速了

4.作业二:统计每类新闻中出现次数对多的字符

  出现频率最高的字符的统计
  分析:首先应该用标签标签对train_df进行排序,然后应该使用str.cat函数来附加文本,然后使用计数器来统计文本中的单词,最后使用most_common来获得每个标签中最频繁的单词

过程:数据浏览

这段代码的目标是对训练数据进行处理和分析,并输出每个标签下出现频率最高的单词以及其频率和百分比。

代码的主要步骤如下:
1. 使用`train_df['text'].apply(lambda x: x.replace('3750',"").replace('900',"").replace('648',""))`将文本数据中的特定字符串('3750','900','648')替换为空字符串。
2. 使用`groupby`函数按照标签(label)对处理后的文本进行分组,并使用`lambda`函数将每个组内的文本连接成一个长字符串。
3. 迭代每个标签和对应的文本:
   - 使用`Counter`函数统计文本中单词的出现次数,并获取出现频率最高的单词和其频率。
   - 使用`sum`函数计算文本中总共出现的单词数。
   - 计算频率最高单词的百分比。
   - 使用`print`函数输出标签、最常见单词、频率和百分比的信息。
 

数据统计及所用时间:

4.学习平台:

百度:paddle

谷歌:colar

自带:jupyter notebook

阿里云:天池实验室

  各有利弊。

5.赛题方法了解

  前两种方法有成熟的包,实践起来较容易,而后两种方法则需要对于相关的知识有着更加深入的理解和代码的功底:

  思路1:TF-IDF + 机器学习分类器
  这种方法使用TF-IDF对文本进行特征提取,并使用机器学习分类器进行分类。TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本特征表示方法,可以衡量一个词在文本中的重要程度。在这种方法中,可以选择使用SVM(支持向量机)、LR(逻辑回归)或者XGBoost等机器学习分类器来建立分类模型。

  思路2:FastText
  FastText是一种简单且高效的词向量表示方法,由Facebook提供的工具包实现。它将每个单词表示为n-gram字符的集合,并通过简单的神经网络进行分类。通过使用FastText工具包,可以快速构建文本分类器,适用于较小规模的文本分类任务。

  思路3:WordVec + 深度学习分类器
  WordVec是一种更高级的词向量表示方法,通过训练深度学习模型(如TextCNN、TextRNN或BiLSTM)来学习单词的分布式表示。这种方法利用深度学习模型的能力来捕捉单词之间的语义关系,并将其应用于文本分类任务。通过构建深度学习分类器,可以在更复杂的文本分类问题上获得更好的性能。

  思路4:Bert词向量
  Bert(Bidirectional Encoder Representations from Transformers)是一种基于Transformer模型的预训练语言模型,具有强大的建模学习能力。Bert可以生成更加丰富和准确的词向量表示,从而提高文本分类的性能。通过使用预训练的Bert模型和微调技术,可以构建一个高性能的文本分类器,适用于复杂的自然语言处理任务。

  这些思路提供了不同的选择,根据任务的规模、数据集的特点和资源的可用性,可以选择适合的方法来构建文本分类模型。前两种方法相对较简单,而后两种方法需要更深入的理解和代码功底,但可以获得更好的性能和表示能力。
 

6.总结

  本次学习了数据的统计和对赛题数据的了解,同时也了解了本次学习的思路:如传统的机器学习,深度学习,大模型等,总体来说是对语言模型和本次比赛内容有了初步的认识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
天池大赛是国内知名的数据科学竞赛平台,零基础入门NLP - 新闻文本分类是其中的一项比赛任务。这个任务的目标是利用机器学习自然语言处理的方法,对给定的新闻文本进行分类,即根据新闻内容判断其所属的类别。这个任务对于初学者来说是一个很好的入门项目。 在解决这个问题的过程中,我们需要首先对提供的训练数据进行探索性数据分析,了解数据的分布,词频以及类别的平衡情况。然后,我们可以进行文本预处理,包括分词、去除停用词、词干化等。接下来,可以构建特征表示,可以使用TF-IDF、Word2Vec或者其他词嵌入模型来提取文本的向量表示。在构建特征表示后,可以选择合适的机器学习算法,如朴素贝叶斯、支持向量机、深度学习等,来训练分类模型。 在进行模型训练之前,可以将数据集分为训练集和验证集,用于模型的评估和调优。我们可以使用交叉验证,调整模型的超参数,选择表现最好的模型。在模型训练完成后,可以使用测试集对模型进行评估,计算准确率、召回率和F1值等指标。最后,我们可以利用模型对给定的未知新闻文本进行分类预测。 在解决这个问题的过程中,还可以进行一些方法的优化和改进。比如,可以使用集成学习的方法,如随机森林、XGBoost或者LightGBM等,结合多个分类器的结果来提高整体的分类准确率。此外,可以尝试使用预训练的模型,如BERT等,来获得更好的特征表示。此外,还可以尝试使用深度学习网络,如卷积神经网络或者循环神经网络,来提取文本的高级语义特征。 总之,零基础入门NLP - 新闻文本分类是一个很好的机会,可以学习和应用自然语言处理的知识和技术。通过解决这个问题,我们可以深入了解文本分类的基本概念和方法,提升自己在数据科学领域的能力和竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值