当前位置: 代码迷 >> 综合 >> 【每日新知识】TF-IDF、最大内积搜索(MIPS)
  详细解决方案

【每日新知识】TF-IDF、最大内积搜索(MIPS)

热度:122   发布时间:2023-09-18 18:09:04.0

2020.8.26

  • TF-IDF
  • 最大内积搜索(MIPS)

正在研究“ DIFFERENTIABLE REASONING OVER A VIRTUAL KNOWLEDGE BASE” from 2020ICLR

遇到一些不大懂的知识点:TF-IDF、最大内积搜索(MIPS)

TF-IDF

TF-IDF:词频-逆文档词频(term frequency,inverse document frequency)
最开始:用于文档关键词提取

案例:
《中国的蜜蜂养殖》

  • 过滤停用词,剩下有实际意义的词
  • “的“,”是“等停用词给最小的权重(这个权重就是IDF)
  • “中国”,常见词,应该给较小权重,虽然“中国”在本文中出现次数与“蜜蜂”,“养殖”一样多
  • “蜜蜂”,“养殖”权重应该大于“中国”

公式如下:

词频-逆文档词频TF-IDF = TF (词频)* IDF(权重/逆文档词频)

词频(TF) = 某个词在文章中出现的次数 / 文章总词数
Or
标准化词频(TF) = 某个词在文章中出现的次数 / 该文章出现最多的的词的出现数

权重(IDF) = log(语料库的文档总数/(包含该词的文档数+1))
其中,log是以10为底的对数;但是在代码实现的时候可以直接用默认的log以e为底,在网上查询到的原因是idf代表权重,具体的log以多少为底都可以,只要统一就行

代码例子:

# -*- coding: utf-8 -*-
from sklearn.feature_extraction.text import TfidfVectorizercv = TfidfVectorizer(stop_words='english')
vec = cv.fit_transform(['hello world','this is a panda.'])
print(vec)
print(cv.vocabulary_)
arr = vec.toarray()
print(arr)

【每日新知识】TF-IDF、最大内积搜索(MIPS)

TfidfVectorizer可以把原始文本转化为tf-idf的特征矩阵,从而为后续的文本相似度计算,主题模型,文本搜索排序等一系列应用奠定基础。

最大内积搜索(MIPS)

最近邻搜索(NN)、最大内积搜索(MIPS)与(A)LSH算法