机器学习 jupyter Python TF-IDF算法

1.含义

在自然语言处理中非常重要的算法,用于计算一个词汇在文本中的重要性。
TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency,简写为TF),IDF意思是逆文本频率指数(Inverse Document Frequency),它与一个词的常见程度成负相关。
注:
TF-IDF是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。

2.公式

在这里插入图片描述
在这里插入图片描述

3.例子

比如现在我有一篇文章《中国蜜蜂养殖》,现在我要找到这篇文章的关键词。
(注:关键词即能反映这篇文章的特性的词汇)
例如大家在Google的时候,肯定搜索的是一个关键词,而非是整篇内容。
在寻找关键词的过程当中,提取每个词的词频。我们发现出现次数最多的词可能是“的”,“是”,“在”等对文章分类或搜索没有帮助的停用词(stop words)。
假设我们把所有的停用词都过滤掉,只考虑有意义的词。可能遇到一个问题,“中国”,“蜜蜂”,“养殖”三个词出现的频次(TF)一样,那么这三个词汇在这篇文章中的重要性一样吗?(哪一个词汇能反映这篇文章的特性)
显然不是这样。因为“中国”是很常见的词,相对而言,“蜜蜂”和“养殖”不那么常见。如果这三个词在一篇文章中出现的次数一样多,有理由认为,“蜜蜂”和“养殖”重要程度要大于“中国”,也就是说,在关键词排序上面,“蜜蜂”和“养殖”应该排在中国的前面。

还是以《中国蜜蜂养殖》为例,假定该文长度为1000个词,“中国”,“蜜蜂”,“养殖”各出现20次,这三个词的“词频”(TF)都为0.02(20/1000)。然后,Google搜索发现,中文网页总数为250亿张。包含“中国”的网页共有62.3亿张,包含“蜜蜂”的网页为0.484亿张,包含“养殖”的网页共有0.973亿张.则他们的TF,IDF(逆文档频率),TF-IDF如下:
在这里插入图片描述

4.优缺点

TF-IDF的优点是简单快速,而且容易理解。缺点是有时候用词频来衡量文章中的一个词的重要性不够全面,有时候重要的词出现的可能不够多,而且这种计算无法体现位置信息,无法体现词在上下文的重要性。如果要体现词的上下文结构,那么你可能需要使用其他算法来支持。

5.具体案列

对text=[“The quick brown fox jumped over the lazy dag.”,
“The dog.”
“The fox”
]进行词频统计。

5.1 导入包、模块

5.2 创建变换函数

5.3 词条化以及创建词汇表

5.4 特征以及每个特征(词)的idf

5.5 编码文档

5.6 总结编码文档

#1.导入包和模块
from sklearn.feature_extraction.text import TfidfVectorizer
text=["The quick brown fox jumped over the lazy dag.",
     "The dog."
      "The fox"
     ]
#2.创建变换函数
vectorizer=TfidfVectorizer()
# 3.词条化以及创建词汇表
vectorizer.fit(text)
#4.特征以及每个特征(词)的idf
print("特征:",vectorizer.vocabulary_)
# print("特征:",vectorizer.get_feature_names)

print("特征的IDF:",vectorizer.idf_)
# 5.编码文档
vector=vectorizer.transform([text[0]])
X=vectorizer.fit_transform(text)
print('TF-IDF矩阵:',X.toarray())
#6.总结编码文档
print('shape:',vector.shape)
print(vector.toarray())
#sklearn计算idf值得公式为idf=log((1+训练集文本总数)/(1+包含词t的文本数))+1
#+1平滑处理

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以给您一些思路和建议。TF-IDF 是一种常用的文本特征提取方法,可以将文本转化为特征向量,用于机器学习算法的训练。下面简单介绍一下如何使用 TF-IDF 特征提取方法将文本转化为特征向量。 1. 准备数据集:将需要进行情感分析的文本进行分词处理,并将其和对应的情感标签构建成数据集。 2. 数据预处理:对数据进行预处理,如去除停用词、分词、词性标注等。 3. 特征提取:使用 TF-IDF 特征提取方法将文本转化为特征向量。可以使用 Python 中的 sklearn.feature_extraction.text.TfidfVectorizer 类来实现。具体代码示例如下: ``` python from sklearn.feature_extraction.text import TfidfVectorizer # 构建 TF-IDF 特征提取器 tfidf_vec = TfidfVectorizer() # 训练 TF-IDF 特征提取器,并转化为稀疏矩阵 tfidf_matrix = tfidf_vec.fit_transform(corpus) # 将稀疏矩阵转化为数组 tfidf_array = tfidf_matrix.toarray() ``` 其中,corpus 表示分词后的文本列表,tfidf_array 表示转化后的特征向量数组。 4. 数据划分:将数据集划分为训练集和测试集。 5. 训练模型:使用机器学习算法对训练集进行训练,并得到模型。 6. 模型评估:使用测试集对训练好的模型进行评估,计算准确率、召回率、F1 值等指标。 7. 应用模型:使用模型对新的文本进行情感分析,得到相应的情感标签。 需要注意的是,TF-IDF 特征提取方法可以有效地减少高频词和低频词对模型的干扰,提高特征的区分度。但是,在使用过程中也需要注意调整词频阈值和 IDF 阈值等参数。 希望这些信息对您有所帮助。如果您有其他问题,欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值