天池NLP新闻文本分类学习赛心得-Task3

天池NLP新闻文本分类学习赛心得-Task3

赛题链接:https://tianchi.aliyun.com/competition/entrance/531810/introduction


对新闻文本分类方式有很多种,深度学习也大多是基于机器学习思想展开的,所以在这次文本分类中可以首先对其使用机器学习模型来解决文本分类问题,之后再用深度学习模型对其进行分类预测。

机器学习在分类过程中肯定有较多的局限性,一是在空间上的,内存使用量可能较多,在大文本传入的情况下可能会造成内存溢出;二是时间上的,机器学习模型对于分类问题优化量可能不足,导致在模型训练中需要耗费大量时间。

机器学习的文本比较

在 NLP中,文本分类和图片分类有着较大的不同,文本是不定长的,一般采取将文本表示成计算机能够运行的数字或向量的方法,也称词嵌入方法。

  • One-hot

使用One-hot将每一个单词使用离散的向量表示。
如:
句子1:我 爱 北 京 天 安 门
句子2:我 喜 欢 上 海

先将每一字确定编号:
{
‘我’: 1, ‘爱’: 2, ‘北’: 3, ‘京’: 4, ‘天’: 5,
‘安’: 6, ‘门’: 7, ‘喜’: 8, ‘欢’: 9, ‘上’: 10, ‘海’: 11
}

转换为一个11维度稀疏向量:
我:[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
爱:[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

海:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]

  • Bag of Words

Bag of Words(词袋表示),也称为Count Vectors,每个文档的字/词可以使用其出现次数来进行表示。
如:
句子1:我 爱 北 京 天 安 门
句子2:我 喜 欢 上 海

直接统计每个字出现的次数,并进行赋值:

句子1:我 爱 北 京 天 安 门
转换为 [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]

句子2:我 喜 欢 上 海
转换为 [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1]

python中可以利用sklearn模块:

from sklearn.feature_extraction.text import CountVectorizer
## 由于中文不能很好的表现稀疏矩阵,用英文文本代替。
corpus = [
    'This is the first document.',
    'This document is the second document.',
    'And this is the third one.',
    'Is this the first document?',
]
vectorizer = CountVectorizer()
vectorizer.fit_transform(corpus).toarray()

xin31

  • TF-IDF

TF-IDF 分数由两部分组成:第一部分是词语频率(Term Frequency),第二部分是逆文档频率(Inverse Document Frequency)。其中计算语料库中文档总数除以含有该词语的文档数量,然后再取对数就是逆文档频率。

TF(t)= 该词语在当前文档出现的次数 / 当前文档中词语的总数
IDF(t)= log_e(文档总数 / 出现该词语的文档总数)

同样可以使用 sklearn 模块进行训练:

# TF-IDF + RidgeClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(ngram_range=(1,3), max_features=3000)
train_test = tfidf.fit_transform(train_df['text'])
clf = RidgeClassifier()
clf.fit(train_test[:10000], train_df['label'].values[:10000])
val_pred = clf.predict(train_test[10000:])
print(f1_score(train_df['label'].values[10000:], val_pred, average='macro'))

可以调整ngram_range、max_df、min_df、max_features来使模型的拟合度更好。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值