• 网页和查询的相关性


    如何确定网页和查询的相关性

    本文分为两部分

    1. 搜索关键词权重的科学度量TF-IDF
    2. 利用python的工具包计算文本的IF-IDF

    1. 搜索关键词权重的科学度量TF-IDF

    查询:原子能的应用

    首先进行分词:原子能、的、应用

    根据直觉知道:包含这三个词较多的网页比包含少的网页与我们的需求相关性更好

    漏洞:内容多的比内容少的占优势

    改进:归一化。即用关键词的个数除以网页总的词数,商称为”单文本词频“TF(Term Frequency)。比如”原子能、的、应用“三个词出现的词数分别为2、35、5,网页中一共有1000个词,那么三个词的TF分别为:0.002、0.035、0.005。查询与网页的相关度即总词频公式如下。那么三者之和0.042就是关键词在该网页中的总词频。

                     TF1 + TF2 + ... + TFn

    漏洞:”的“几乎在每个网页中都出现,对确认网页的主题几乎没什么价值

    改进:我们把"这些词称为”停止此“(Stop word),比如:”的“, ”和“, ”是“,附录有几种停用词表。那么”原子能的应用“总TF=0.002 + 0.005 = 0.007

    漏洞:”原子能“的对网页的价值比“应用”更大

    改进:对汉语中的每个词有个权重,这个权重必须满足下面的两个条件:

    • 一个词预测主题的能力越强,权重越大。
    • 停止词的权重为0

    很容易理解:一个词只有在少数的网页中出现,那么它的锁定目标能力越强。他的权重就应该越大。那么怎么得到每个词的权值呢,使用最多的是“逆文本频率指数”(Inverse Document Frequency,简称IDF),公式为:

           log(D / Dw)   其中D为全部网页数,Dw为关键词w,在所有网页中出现的词数

    可见:在所有网页中出现词数越多Dw越大,IDF越小,其区分度也该越小,因此权值越小。当在所有网页中都出现时IDF=0

    这样查询与网页的相关度由简单的词频相加变为加权求和:

                       TF1 * IDF1 + TF2 * IDF+ ... + TFn* IDFn

    TF-IDF被公认为信息检索中最重要的发明。在搜索、文献分类和其他相关领域有着广泛的应用。最早由斯巴克·琼斯发明。从理论上IF-IDF有很强的理论根据,因此即直接采用IF-IDF的公式,效果也不会太差。现在的搜索引擎对TF-IDF进行了不小的改进,使得相关性度量更加准确了,都在原来的基础上进行了改进和微调。但是原理和IF-IDF相差不远。

    2. 利用python的工具包计算文本的IF-IDF

    SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。其功能与软件MATLAB、Scilab和GNU Octave类似。 Numpy和Scipy常常结合着使用,Python大多数机器学习库都依赖于这两个模块。

    程序演示说明

    参考 

      吴军《数学之美》

      我爱自然语言处理:如何计算两个文档的相似度

    附录——停用词表

      中文   英文

     
     
  • 相关阅读:
    Ubuntu-14.04-QT开发环境搭建-(一)
    解决使用Qt creator时出现Cannot overwrite file ..Permission denied
    Github上关于大数据的开源项目、论文等合集
    Qt5.4中遇到找不到头文件<QApplication>等。
    qt的下载地址
    完整的qt安装教程
    Ubuntu14.04安装Matlab2014a
    Ubuntu14.04安装搜狗输入法的一点小问题
    把OnDraw和OnPaint弄清楚(转贴)
    Ubuntu上挂载源代码,docker容器中共享这个原代码,实现自动部署
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3329443.html
Copyright © 2020-2023  润新知