文本向量化
2017-06-09 01:50
169 查看
前言
文本向量化,就是把文本转化为向量形式。这里用两种方式实现本文向量,一种是TF方式,一种是TF-IDF方式,且这里向量的长度就是字典的长度。TF就是词频、TF-IDF就是词频-逆频率。关于这两者的介绍已经满大街了,对于这两者概念如有不懂,自行百度。
本文基于python 实现,输入两篇短文本,输出文本向量,并用余弦相似度方式,计算两篇文档的相关性。
实现
计算两个向量余弦相似度
import math def count_cos_similarity(vec_1, vec_2): if len(vec_1) != len(vec_2): return 0 s = sum(vec_1[i] * vec_2[i] for i in range(len(vec_2))) den1 = math.sqrt(sum([pow(number, 2) for number in vec_1])) den2 = math.sqrt(sum([pow(number, 2) for number in vec_2])) return s / (den1 * den2)
TF 文本向量及相似性计算
from sklearn.feature_extraction.text import CountVectorizer sent1 = "the cat is walking in the bedroom." sent2 = "the dog was running across the kitchen." count_vec = CountVectorizer() sentences = [sent1, sent2] print count_vec.fit_transform(sentences).toarray() print count_vec.get_feature_names() vec_1 = count_vec.fit_transform(sentences).toarray()[0] vec_2 = count_vec.fit_transform(sentences).toarray()[1] print count_cos_similarity(vec_1, vec_2)
说明:依次输出每个文本的向量表示、每个维度对应的词语、以及文本余弦相似度。
TF-IDF 文本向量及相似性计算
from sklearn.feature_extraction.text import TfidfVectorizer sent1 = "the cat is walking in the bedroom." sent2 = "the dog was running across the kitchen." tfidf_vec = TfidfVectorizer() sentences = [sent1, sent2] print tfidf_vec.fit_transform(sentences).toarray() print tfidf_vec.get_feature_names() vec_1 = tfidf_vec.fit_transform(sentences).toarray()[0] vec_2 = tfidf_vec.fit_transform(sentences).toarray()[1] print count_cos_similarity(vec_1, vec_2)
说明:输出同上
小结
上文示例中给了两个句子:”the cat is walking in the bedroom.”
”the dog was running across the kitchen.”
这两个句子其实从语义上看特别相似,但是实际得到的相似性却很低~~本质上原因在于两种方式计算的文本向量,都只能衡量文本之间的内容相似度,但难以衡量其中语义相似度。
这篇文章特别初级,之所以写这篇文章其实还有个原因,是想做个对比—和基于word2vec实现的文本相似性计算进行对比,后者下一篇博文进行介绍的~
相关文章推荐
- 互联网金融之量化投资深度文本挖掘——附源码文档
- 文本向量化
- 用Python开始机器学习(5:文本特征抽取与向量化)
- 用Python开始机器学习(5:文本特征抽取与向量化) sklearn
- 文本数据 与 量化数据 一同分析
- 文本挖掘预处理之向量化与Hash Trick
- python学习-文本数据分析1(主题提取+词向量化)
- TF-IDF值和文本向量化
- 金融科技之量化文本研究框架
- python中对不CountVectorizer与TfidfVectorizer,去停用词,对文本特征量化结合Bayes算法进行分类,可视化分析
- 用Python开始机器学习(5:文本特征抽取与向量化)
- 0x09 文本相似性,词袋向量化
- 文本向量化的方法
- NLP 第7章 文本向量化
- 基于IF-IDF对文本向量化
- 用Python开始机器学习(5:文本特征抽取与向量化)
- 用Python开始机器学习(5:文本特征抽取与向量化)
- 使用CountVectorizer并且不去掉停用词的条件下,对文本特征进行量化的朴素贝叶斯分类性能测试
- Mahout文本向量化
- 使用TfidfVectorizer并且不去掉停用词的条件下,对文本特征进行量化的朴素贝叶斯分类性能测试