zoukankan      html  css  js  c++  java
  • 网页和查询的相关性

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

    本文分为两部分

    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大多数机器学习库都依赖于这两个模块。

    程序演示说明

    参考 

      吴军《数学之美》

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

    附录——停用词表

      中文   英文

     
     
  • 相关阅读:
    windows 安装mongodb数据库
    shell 编程实战
    利用DNAMAN和clusterx绘制序列比对图片
    json与python对象互转
    python:向mongodb中储存数据
    python中登录mongoDB
    如何绘制漂亮的多序列比对图片
    python爬虫的基本框架
    fastqc
    转录与翻译
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3329443.html
Copyright © 2011-2022 走看看