NLP学习笔记一

写在前头

第一次参加Datawhale组队学习,希望自己能克服困难,坚持下来,比自己优秀的人实在太多了。

Task 1

第一个学习任务,理解赛题。这次组队学习是边打比赛边学习的方式,以输出倒逼输入。这次自然语言处理(NLP)对应的比赛是: 零基础入门NLP - 新闻文本分类
今天的学习目标:
①理解赛题背景;
②初步认识赛题数据;
③理解赛题的解题思路。

分析赛题

赛题数据为新闻文本,可能出于保密和防止作弊的行为,数据按照字符级别进行了匿名处理。数据类别共有14个:科技、 股票、体育、娱乐、时政、社会、教育、财经、家居、游戏、房产、时尚、彩票、星座;对应的label值为0~13。官方给出的数据构成:训练集20w条样本,测试集A包括5w条样本,测试集B包括5w条样本。 官方评价标准为类别f1_score的均值。预测结果以csv文件的形式提交。

数据的初步认识

读出训练数据并输出前10行进行观察。

import pandas as pd
train_df = pd.read_csv('./data/train_set.csv', sep='\t', nrows=1000)
print(train_df.head(10))

输出结果

     label                                               text
0      2    2967 6758 339 2021 1854 3731 4109 3792 4149 15...
1     11    4464 486 6352 5619 2465 4802 1452 3137 5778 54...
2      3    7346 4068 5074 3747 5681 6093 1777 2226 7354 6...
3      2    7159 948 4866 2109 5520 2490 211 3956 5520 549...
4      3    3646 3055 3055 2490 4659 6065 3370 5814 2465 5...
5      9    3819 4525 1129 6725 6485 2109 3800 5264 1006 4...
6      3    307 4780 6811 1580 7539 5886 5486 3433 6644 58...
7     10    26 4270 1866 5977 3523 3764 4464 3659 4853 517...
8     12    2708 2218 5915 4559 886 1241 4819 314 4261 166...
9      3    3654 531 1348 29 4553 6722 1474 5099 7541 307 ...

读出测试集A并输出前10行进行观察。

import pandas as pd
test_df = pd.read_csv('./data/test_a.csv', sep='\t', nrows=1000)
print(test_df.head(10))

输出结果

                                                text
0   5399 3117 1070 4321 4568 2621 5466 3772 4516 2...
1   2491 4109 1757 7539 648 3695 3038 4490 23 7019...
2   2673 5076 6835 2835 5948 5677 3247 4124 2465 5...
3   4562 4893 2210 4761 3659 1324 2595 5949 4583 2...
4   4269 7134 2614 1724 4464 1324 3370 3370 2106 2...
5   4061 3792 2434 6065 5612 2738 1008 2252 5620 9...
6   307 768 600 7539 920 1362 2109 6758 3223 5430 ...
7   3770 2461 2151 4525 5708 4436 7349 4436 5422 2...
8   6235 6248 5620 1919 4097 7539 6122 1903 4893 6...
9   1141 4411 6902 1995 6054 2035 2112 6139 2717 2...

初步结论:匿名后的数据,以数字字符代替文本,标点符号也被匿名处理了,每条数据的长短不一。

评价标准

官方给出的标价标准是f1_score的均值。

计算公式: F 1 = 2 ∗ p r e c i s i o n + r e c a l l p r e c i s i o n ∗ r e c a l l F1 = 2 ∗ \frac{precision+recall}{precision∗recall} \quad F1=2precisionrecallprecision+recall
这种f1_score是应用到二分类问题中的,但赛题是多分类问题,则需要用到Macro-F1:统计各个类别的TP、FP、FN、TN,分别计算各自的Precision和Recall,得到各自的F1值,然后取平均值得到Macro-F1。在sklearn中可以直接调取使用。

from sklearn.metrics import f1_score
f1_score(y_true, y_pred, average='macro')

解题思路

无法直接使用中文分词操作是这次赛题的难点。Datawhale给出的学习资料中提示我们,需要先对匿名字符进行建模,再完成文本分类。这其中会涉及到特征提取和分类模型两部分。
Datawhale还给出了四个思路:
①TF-IDF+机器学习分类器:直接使用TF-IDF提取文本特征,使用SVM、LR、XGBoost等分类器进行分类。
②FastText:FastText是入门款词向量,可以快速构建分类器。
③WordVec+深度学习分类器:WordVec是进阶款词向量,并通过构建TextCNN、TextRNN、BiLSTM等深度学习分类完成分类。
④Bert词向量:Bert是高配款词向量,具有强大的建模学习能力。

总结

已经初步理解题目,找到解题方向。但是我没有特征提取的经验,对词向量也比较陌生,在理解解题思路过程中遇到较大的困难,暂时无法总结出这一部分的知识和思路。但是正因如此,我找到了更加明确的学习道路,我需要加紧把自然语言处理的基础知识补上。
第一天的正式学习完成度还不够高,但的确感受到这次组队学习对我帮助很大,例如逼我写了人生第一篇blog,哈哈哈。坚持下去,加油。

参考资料
[1]: 【评价指标】详解F1-score与多分类MacroF1&MicroF1:https://cloud.tencent.com/developer/article/1661221

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值