TF-IDF基本假设:
一个词在文档中出现的频率越高,说明它越重要
但一个词在太多文档中出现,说明它越普通,区分度越低(IDF)
应用场景:
搜索引擎:用于排序搜索结果
文本分类: 提取文档特征
关键词提取:找出文档的重要词汇
推荐系统: 计算用户兴趣和物品的相似度
TF(文档中出现的频率)
TF(t,d) = 词t在文档d中出现的次数 / 文档d的总次数
IDF(逆文档频率) Inverse Document Frequency
定义:表示词的稀有程度,即一个词在多少文档中出现
IDF(t,D) = log(总文档数/包含词t的文档数)
TF-IDF值: TF-IDF = TF*IDF
意义:
TF高,IDF高: 词在文档中出现的频率高,但在整个文档集中很少出现-> 重要关键词
TF高,IDF低: 词在文档中频繁出现,但在整个文档集中也经常出现->常用词,区分度低
TF低,IDF高: 词在文档中出现少,但在整个文档集中很少出现 -> 可能是专业术语
TF低,IDF低: 词在文档中出现少,在整个文档集中也经常出现-> 普通词,不重要
TF-IDF的缺点:
不考虑词序: 将文档视为词的集合,忽略词序信息
不考虑语义: 无法理解同义词,近义词的关系
稀疏性: 对于长文档,TF-IDF向量会非常稀疏
需要预处理: 对中文需要分词,对英文需要处理词形变化
TF-IDF算法的实现:
import jieba
text = "Python是一种优秀的编程语言,广泛用于数据科学和机械学习领域"
#分词
words = jieba.cut(text)
print("原始文本:",text)
print("\n分词结果:","/".join(words))
"/".join的意思是
就是用/将words列表中的元素拼接起来
1万+

被折叠的 条评论
为什么被折叠?



