建立收费网站,应用公园制作的app归谁,网站数据库怎么做,网站建设综合实训总结1. 什么是TF-IDF#xff1f; TF-IDF#xff08;Term Frequency-Inverse Document Frequency#xff09; 是一种统计方法#xff0c;用于评估单词在文档集或语料库中的重要性。它是自然语言处理和信息检索中的核心技术之一。
TF-IDF主要基于以下两个概念#xff1a;
TF TF-IDFTerm Frequency-Inverse Document Frequency 是一种统计方法用于评估单词在文档集或语料库中的重要性。它是自然语言处理和信息检索中的核心技术之一。
TF-IDF主要基于以下两个概念
TFTerm Frequency, 词频衡量某个词语在文档中的出现频率。IDFInverse Document Frequency, 逆文档频率衡量词语在整个语料库中的普遍性。
TF-IDF TF × IDF
2. TF-IDF 的底层原理
2.1 词频 (TF) 的定义
词频是指某个词在文档中出现的次数。常用的公式是
TF(t,d)f(t,d)∑t′∈df(t′,d)TF(t,d)∑t′∈df(t′,d)f(t,d)
其中
f(t,d) 表示词 t 在文档 d 中出现的次数。∑t′∈df(t′,d) 表示文档 d 中所有词的出现次数总和。
解释TF 的目的是衡量某个词在文档中出现的频率但由于文档长度不同直接使用词频会造成偏差因此通常将词频归一化防止词频受到文档长度影响。
2.2 逆文档频率 (IDF) 的定义 逆文档频率用于衡量某个词在整个文档集中有多普遍。若某个词在很多文档中都出现则其IDF较低反之若某个词只在少数文档中出现则其IDF较高。
IDF 的公式为 其中
∣D∣ 表示文档集中的文档总数。∣d∈D:t∈d∣ 表示包含词 t 的文档数。
解释IDF 减少那些普遍出现在很多文档中的常见词的重要性例如“的”、“是”等强调那些具有区分度的词。
2.3 TF-IDF 的计算
TF-IDF 是将 TF 和 IDF 相乘得到的 它的作用是衡量词 t 在文档 d 中的相对重要性同时考虑到该词在整个语料库中的普遍性。
3. 代码实现Python
我们可以通过 Python 从底层原理来实现 TF-IDF。假设我们有如下文本
import math
from collections import Counter# 假设的文档集
documents [the cat is on the table,the dog is in the house,there is a cat and a dog,
]# 1. 计算 TF
def compute_tf(doc):tf_dict {}bow doc.split()word_count len(bow)word_freq Counter(bow)for word, count in word_freq.items():tf_dict[word] count / float(word_count)return tf_dict# 2. 计算 IDF
def compute_idf(docs):idf_dict {}total_docs len(docs)all_words set([word for doc in docs for word in doc.split()])for word in all_words:containing_docs sum([1 for doc in docs if word in doc.split()])idf_dict[word] math.log(total_docs / float(containing_docs))return idf_dict# 3. 计算 TF-IDF
def compute_tfidf(docs):tfidf_list []idf_dict compute_idf(docs)for doc in docs:tf_dict compute_tf(doc)tfidf_dict {}for word, tf_value in tf_dict.items():tfidf_dict[word] tf_value * idf_dict[word]tfidf_list.append(tfidf_dict)return tfidf_list# 运行结果
tfidf_values compute_tfidf(documents)
for idx, doc_tfidf in enumerate(tfidf_values):print(fDocument {idx1}: {doc_tfidf})代码解释 compute_tf(doc) 输入一个文档字符串。输出一个字典键是词语值是词频。它通过分割字符串来获取每个词的出现次数并将其归一化得到 TF 值。 compute_idf(docs) 输入文档集。输出一个字典键是词语值是该词的 IDF。通过统计每个词语出现在多少文档中然后根据公式计算 IDF。 compute_tfidf(docs) 输入文档集。输出每个文档的 TF-IDF 值。计算每个词在文档中的 TF 和在整个文档集中的 IDF将两者相乘得到 TF-IDF。
输出结果示例
Document 1: {the: 0.0, cat: 0.13515503603605478, is: 0.0, on: 0.3662040962227032, table: 0.3662040962227032}
Document 2: {the: 0.0, dog: 0.13515503603605478, is: 0.0, in: 0.3662040962227032, house: 0.3662040962227032}
Document 3: {there: 0.3662040962227032, is: 0.0, a: 0.3662040962227032, cat: 0.13515503603605478, and: 0.3662040962227032, dog: 0.13515503603605478}代码关键点
词频TF 通过每个词在文档中的出现次数除以文档总词数来得到。逆文档频率IDF 通过文档集中的文档总数除以包含该词的文档数然后取对数。TF-IDF 通过词频和逆文档频率的乘积来评估某个词在当前文档中的重要性。
4. TF-IDF的意义与应用
4.1 意义 TF-IDF 的目的在于找到那些在某一文档中频繁出现但在其他文档中较少出现的词这些词通常能够很好地表示该文档的主题。例如常用词“的”、“是”等对区分文档没有太大作用但专有名词或主题词则能够起到显著区分作用。
4.2 应用场景
信息检索在搜索引擎中TF-IDF 用来衡量查询词和文档的相关性从而排序最相关的文档。关键词提取在文本分类或情感分析任务中可以使用 TF-IDF 提取文档中的关键词。推荐系统可以通过 TF-IDF 分析用户的兴趣偏好推荐与用户感兴趣文档相似的内容。
5. 总结 TF-IDF 是基于两个基本的统计概念词频TF和逆文档频率IDF。它通过平衡词在单个文档中出现的频率和在整个语料库中出现的普遍性来衡量词的重要性。