TF-IDF(Term Frequency - Inverse Document Frequency)

TF-IDF(Term Frequency - Inverse Document Frequency)是一种在信息检索与文本挖掘中非常常用的关键词提取方法,用于衡量一个词在文档集合中的重要性。它的核心思想是:

如果一个词在某个文档中出现得频繁,同时在其他文档中很少出现,那么这个词对该文档具有较强的区分性,应当被赋予较高的权重。


一、TF-IDF 的基本组成

1. TF(Term Frequency)——词频

表示词语在当前文档中出现的频率。常见定义如下:

用于衡量词对当前文档的重要性。


2. IDF(Inverse Document Frequency)——逆文档频率

表示某个词在整个语料库中出现的“稀有程度”:

其中:

  • NNN:语料库中的文档总数

  • ∣{d∈D:t∈d}:包含词 t 的文档数量

  • 加 1 是为了避免除以 0

IDF 越大,说明词越“稀有”,对区分性越重要。


3. TF-IDF 计算公式

即:某词在某文档中的词频 × 该词在整个语料库中的逆文档频率。


二、TF-IDF 的直观理解

  • 一个词在文档中频繁出现 → TF 高 → 可能重要

  • 但如果这个词在所有文档中都频繁出现(比如 “的”“是”“and”) → IDF 低 → 权重应该降低

  • 所以 TF-IDF 是一种平衡词频与泛用性的机制


三、使用场景

  • 关键词提取:找出一篇文章中最重要的词语

  • 文本分类:将文档向量化后用于机器学习模型

  • 信息检索:计算查询和文档之间的相关性(如搜索引擎)


四、TF-IDF 的特点

优点:

  • 简单高效,无需训练模型

  • 能过滤掉高频但无意义的词(如停用词)

  • 常用于传统机器学习方法(SVM、朴素贝叶斯等)中的文本特征表示

缺点:

  • 无法捕捉语义(“漂亮”和“美丽”是不同的词)

  • 对词的顺序不敏感(bag-of-words 特性)

  • 对长文档可能存在偏差(词频偏大)


五、TF-IDF 在 Python 中的使用示例(基于 scikit-learn)

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [
    "我喜欢自然语言处理",
    "语言模型是人工智能的核心",
    "我正在学习文本挖掘"
]

vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(corpus)

# 输出词汇表
print(vectorizer.get_feature_names_out())

# 查看第一个句子的TF-IDF向量
print(tfidf_matrix[0].toarray())
要从淘宝平台抓取冲锋衣的用户评论数据并进行分析,你需要分几步来进行: 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. **结果分析**: 分析这些关键词在消费者的评论中出现的频率,看看它们是否反映了消费者的主要关注点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值