赛题介绍
- 赛题名称:零基础入门NLP之新闻文本分类
- 个人目标:通过组队学习,个人完成一次有关NLP的入门赛,加深对文本处理有关的理解。
- 赛题任务:完成对新闻文本的分类,本质上是一个字符识别的问题。
数据下载介绍
数据下载链接:零基础入门NLP之新闻分类
一共有3个.csv文件,分别是:train_set.csv、test_a.csv、test_a_sample_submit.csv
数据读取:train_df = pd.read_csv('data/train_set.csv', sep='\t')
,文件的路径按自己的实际来
数据是由标签和新闻内容组成的。标签一共有14个,0-13,对应关系:
{'科技': 0, '股票': 1, '体育': 2, '娱乐': 3, '时政': 4, '社会': 5, '教育': 6, '财经': 7, '家居': 8, '游戏': 9, '房产': 10, '时尚': 11, '彩票': 12, '星座': 13}
新闻的内容为了防止人工标注,对字符级别进行了匿名处理。
看到题目的第一反应是由于对字符进行了匿名处理,没有标点符号不容易分句。如一篇新闻训练的话字符太多,训练效果也不好。
所以接下来还是需要对文本进行处理,打算分句处理一下。
想到的模型或者算法:
- TF-IDF+分类算法
直接使用TF-IDF对文本提取特征,并使用分类器进行分类。在分类器的选择上,可以使用SVM、LR、或者XGBoost。(数据量还是挺大的,没有GPU,所以不考虑XGBoost,用一些简单的机器学习分类算法) - 词向量+深度学习分类器
wordVec 词向量,深度学习网络比如LSTM ,BiLSTM ,TextCNN 等等。 - Bert 模型,这个只是听说过,并不了解
- FastText 也是停留在听说的阶段。
小Tips:今天统计list中出现次数最多的字符及出现的次数时遇到了一个问题。源代码块:
这个的缺点就是太慢了,等了好久,终于等不及了,感觉还有更有效的方法,于是请教某佬,果然一句话抵过我百度半天!就是np.unique()函数
# 去重
sorted_list,word_uni = np.unique(word_list, return_counts=True)
下面是我参考的链接,感觉还是挺有用的,贴在这了
numpy中unique函数解析,里面的评论部分帮到我了
今天只是大致看了看数据,明天正式撸代码了,对于一个第一次独立参加的小白来说真的还是有点难度的,希望自己通过组队学习可以坚持下去吧