word2vec是一个经典基础的词嵌入模型,将单词转化到高维向量空间。人们认为向量空间中,距离相近的向量,其语义更接近。利用这一思想,我们可实现新闻分类任务,向量表示被分到同一簇的新闻文本,其语义事件描述大概率是属于同一类新闻。
本博文采用gensim库的word2vec模型词嵌入,利用sklearn库中consine_similarity()函数直接计算向量间的余弦相似度,实现新闻分类任务,以下是主要代码逻辑:
1. 定义需要的类型;
这里定义需要分类的是体育新闻和政治新闻两个类别。
2. 为指定的类型分别训练相应语料库的词向量,可采用基于gensim库的word2vec模型;
class_vectors为获取体育新闻语料库和政治新闻语料库的文本向量。(一篇文章中所有词向量按维度取平均表示为文本向量)
3. 将待分类的输入文本词向量化,分别与以上类别的向量表示比较相似程度。
下面分三块介绍自定义的分类器classify函数
- 将待分类的输入文本词向量化,采用基于gensim库的word2vec模型;
- 最简单的办法是进行余弦相似度计算,分别计算输入文本向量表示,与各个类别向量表示之间的相似度。向量空间上夹角越小语义越相近,所以余弦值越接近1,说明越有可能和该类别相似。
- 选择余弦相似度最大的,相应的类别名称。获取类别标签作为最终输出。
其中class_labels在最开头已给出定义,返回predicted_class即为文本分类标签结果