TF-IDF(term frequency–inverse document frequency)

本文介绍了TF-IDF算法的基本概念及工作原理。TF-IDF是一种评估词语在文档中重要性的统计方法,通过结合词频(TF)和逆文档频率(IDF)来衡量词语的相关性和区分度。该算法在信息检索和文本挖掘中广泛应用。

TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。

1.什么是TF-IDF
TF-IDF是一种 统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在 语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被 搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜寻结果中出现的顺序。
 
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。
 
2.TF-IDF原理
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF逆向文件频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。
IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处. 在一份给定的文件里,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否。)

 
对于在某一特定文件里的词语来说,它的重要性(词频term frequency,TF)可表示为: \mathrm{tf_{i,j}} = \frac{n_{i,j}}{\sum_k n_{k,j}}
 
 
  • 分子是该词在文件中的出现次数,
  • 分母是在文件中所有字词的出现次数之和。

 
某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取 对数得到: \mathrm{idf_{i}} =  \log \frac{|D|}{|\{j: t_{i} \in d_{j}\}|}  
 
  • |D|:语料库中的文件总数
  • 包含词语的文件数目(即的文件数目)

然后再计算TF与IDF的乘积。
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。

 
3.For example:
假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是 0.03 (3/100)。一个计算文件频率 (DF) 的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是 10,000,000份的话,其文件频率就是 0.0001 (1000/10,000,000)。最后,TF-IDF分数就可以由计算词频除以文件频率而得到。以上面的例子来说,“母牛”一词在该文件集的TF- IDF分数会是 300 (0.03/0.0001)。这条公式的另一个形式是将文件频率取对数。
 
要从淘宝平台抓取冲锋衣的用户评论数据并进行分析,你需要分几步来进行: 1. **网络爬虫**: 首先,你需要使用Python库如`requests`、`beautifulsoup4`或`selenium`来访问淘宝商品页面,然后解析HTML获取相关的商品信息和评论链接。由于淘宝的数据结构可能会变化,所以可能需要查阅官方API文档或直接抓取特定的评论区域。 ```python import requests from bs4 import BeautifulSoup url = 'https://item.taobao.com/item.htm?id=XXXXX' # 替换为实际的商品ID response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 解析评论部分 comments_container = soup.find('div', class_='comment_list') # 这个部分通常包含评论列表 ``` 2. **数据抓取**: 获取到评论后,你需要提取每条评论的内容以及评分等关键信息。这可能涉及到更多的DOM操作或者正则表达式。 ```python comments = [] for comment in comments_container.find_all('div', class_='comment-item'): text = comment.find('span', class_='ctt').text # 提取评论文本 rating = int(comment.find('i', class_='score')['title']) # 提取评分 comments.append((text, rating)) ``` 3. **处理数据**: 将抓取的数据保存成CSV或其他适合分析的格式。同时,确保清洗和预处理评论文本,移除无关字符和停用词。 4. **TF-IDF**: 使用`sklearn`库中的`TfidfVectorizer`对评论文本进行转换。首先,将评论拆分成词语(tokenization),计算每个词语的频率(Term Frequency)以及在整个数据集中词语的重要性(Inverse Document Frequency)。 ```python from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform([c[0] for c in comments]) ``` 5. **关键词排名**: 对TF-IDF矩阵进行排序,找出最重要的特征(即词语)。你可以选择前N个得分最高的词作为影响消费者购买决策的关键因素。 ```python top_features = vectorizer.get_feature_names()[tfidf_matrix.argmax(axis=1)[:5]] ``` 6. **结果分析**: 分析这些关键词在消费者的评论中出现的频率,看看它们是否反映了消费者的主要关注点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值