type
status
date
summary
tags
icon
password
 

TFI IDF 算法原理

 
 
 
 
TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词,而且算法简单高效,常被工业用于最开始的文本数据清洗。
TF-IDF有两层意思,一层是"词频"(Term Frequency,缩写为TF),另一层是"逆文档频率"(Inverse Document Frequency,缩写为IDF)。
 
词频高在文章中往往是停用词,“的”,“是”,“了”等,这些在文档中最常见但对结果毫无帮助、需要过滤掉的词,用TF可以统计到这些停用词并把它们过滤。当高频词过滤后就只需考虑剩下的有实际意义的词。
 

TF-IDF 算法步骤

 
  1. 计算词频
 
notion image
  1. 计算逆文档频率:
这时,需要一个语料库(corpus),用来模拟语言的使用环境。
如果一个词越常见,那么分母就越大,逆文档频率就越小越接近0。分母之所以要加1,是为了避免分母为0(即所有文档都不包含该词)。log表示对得到的值取对数。
notion image
 
可以看到,TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。所以,自动提取关键词的算法就很清楚了,就是计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。
 
 
TF-IDF是用来做文本分类的,这个值越大,用来做分类的价值就越高,而不是在这个文本中的重要性越高。
这里是在实现词的选择,目标用哪些词来表征文档能最大化地保留文档的完整信息,特征抽取出来只是用来表征文档,理论上可以用于任何下游任务。
 
即: 抽取特征
 
 
 

Embeddings 技术

 
 
 
OpenAI 的文本嵌入衡量文本字符串的相关性。嵌入通常用于:
  • 搜索
    • (结果按与查询字符串的相关性排名)
  • 聚类
    • (文本字符串按相似性分组)
  • 推荐
    • (推荐具有相关文本字符串的项目)
  • 异常检测
    • (识别出相关性很小的异常值)
  • 多样性测量
    • (分析相似性分布)
  • 分类
    • (文本字符串按最相似的标签进行分类)
嵌入是浮点数的向量(列表)。两个向量之间的距离衡量它们的相关距离小表明相关性高,距离大表明相关性低。
 
 
为了快速搜索许多向量,我们建议使用向量数据库。您可以在 GitHub 上的 Cookbook 中找到使用矢量数据库和 OpenAI API 的示例
矢量数据库选项包括:
 
矢量数据库选项包括:
  • Pinecone
    • ,一个完全托管的矢量数据库
  • Weaviate
    • ,一个开源矢量搜索引擎
  • Redis
    • 作为向量数据库
  • Milvus
    • ,一个为可扩展的相似性搜索而构建的矢量数据库
  • Chroma
    • ,一个开源嵌入商店
  • Zilliz
    • ,数据基础设施,由 Milvus 提供支持
 
 

向量距离函数

 
我们推荐余弦相似度距离函数的选择通常并不重要。
OpenAI 嵌入标准化为长度 1,这意味着:
  • 仅使用点积即可稍微更快地计算余弦相似度
  • 余弦相似度和欧氏距离将导致相同的排名
 
数值接近1,则两个向量越贴近
 
 
 
 

余弦相似度计算

 
  1. 余弦相似性:余弦相似性衡量的是两个向量之间的夹角的余弦值。它的取值范围是[-1, 1],值越接近1,表示向量越相似;值越接近-1,表示向量越不相似。余弦相似性计算公式如下:
cos_sim(A, B) = dot_product(A, B) / (norm(A) * norm(B))
其中,dot_product(A, B)表示向量A和向量B的点积,norm(A)表示向量A的模长。
  1. 欧几里得距离:欧几里得距离衡量的是两个向量在空间中的直线距离。数值越小,表示两个向量越相似。欧几里得距离计算公式如下:
    1. euclidean_distance(A, B) = sqrt(sum((A_i - B_i)^2 for i in range(len(A))))
      其中,A_i和B_i分别表示向量A和向量B的第i个分量。
通过计算文本向量之间的相似性得分,我们可以确定哪些文本在语义上更相似。这种方法可以用于许多自然语言处理任务,如文本聚类、文档检索和推荐系统等。
 
实现K近邻算法的过程。
 
 
 
 
 
notion image
在数学几何运算中,余弦定理用于计算两条边的夹角,余弦值越大,夹角越小。当夹角为0°时,两条边(x,y)完全重合
 
而对于多维图像(x,y,z...)三(甚至n)条边,计算公式如下:
 
notion image
 
notion image
 
 
notion image
 
notion image
 
两个向量越相似,夹角越小,计算出来的余弦值越接近1
 
 
 
 
 
 
 
 
  • 文本切词
    • 文本1:明天\不\下雨
    • 文本2:明天\不\可能\下雨
  • 文本词频统计
    • 文本1词频:(明天=>1, 不=>1, 下雨=>1, 可能=>0)
    • 文本2词频:(明天=>1, 不=>1, 下雨=>1, 可能=>1)
示例文章-notion博客部署腾讯云蓝鲸安装
林东
林东
一个普通的干饭人🍚
公告
type
status
date
summary
tags
icon
password
新版博客上线,部分文章正在迁移中, 关注我,分享硬核技术