zoukankan      html  css  js  c++  java
  • 词条化

    总览

        构建倒排索引的几个主要步骤:
      (1) 收集待建索引的文档;
      (2) 对这些文档中的文本进行词条化;
      (3) 对第 2 步产生的词条进行语言学预处理,得到词项;
      (4) 根据词项对所有文档建立索引。
      
      所谓词条化(tokenization)指的是将原始的字符流转换成一个个词条(token)的过程。而语言学预处理的主要目的在于建立词条的等价类,其中每个等价类对应一个词项,这些词项最终用于建立文档的索引。构建索引的过程主要在第 1 章和第 4 章介绍,本章暂不详述。本章最后讨论倒排记录

    词条化

      定义好文档单位之后,词条化是将给定的字符序列拆分成一系列子序列的过程,其中每个 子序列称为一个词条(token)。当然,在这个过程中,可能会同时去掉一些特殊字符,如标点 符号等。下面给出了一个词条化的例子: 

      

      在非严格的情况下,词条往往和词项或词通用。然而,有时我们需要对词条和词条类进行 严格的区分。一个词条指的是在文档中出现的字符序列的一个实例,而一个词条类(type)指 的是相同词条构成的集合。一个词项指的是在信息检索系统词典中所包含的某个可能经过归一 化处理的词条类。词项集合和词条集合可以完全不同,比如可以采用某一个分类体系中的类别 标签作为词项。当然,在实际的信息检索系统中,词项往往和词条密切相关。但是,词项未必 就是原始的词条,实际上它往往要通过对原始词条进行归一化来得到。举例来 说,如果要对“ to sleep perchance to dream” 进行索引,那么会得到 5 个词条,但是此时只有 4 个词条类(出现的两个 to 的实例归成一类)。然而,如果索引时将to看成停用词去掉的话,那么最后就只有 3 个词项:sleep、perchance和dream。 

      词条化的主要任务就是确定哪些才是正确的词条。比如,英文中的上撇号“ ’” 既可以代表所有关系也可以代表 缩写,应当在词条化过程中究竟应该如何对它进行处理?参考下面的例子:

      Mr. O’Neill thinks that the boys’ stories about Chile’s capital aren’t amusing.

      对其中的“ O’Neill” 来说, 那么到底哪一种才正确? 

      在英文中,连字符“ -” 存在着多种不同用法,比如它可以用于分隔单词中的元音字母(如 co-education),也可以用于将多个名词连接成一个新的名称(如 Hewlett-Packard),还可以在审 稿设备上显示多个词语的组合结果(如 the hold-him-back-and-drag-him-away maneuver)。很容易 判定,第一个例子应该作为一个词条来索引(实际上,该词条往往被书写为 coeducation)。最后 一个例子应该分开为一个个的单词来索引。而对于第二个例子,判断起来却并不如其他两个例 子那么容易。因此,对连字符的处理可能会很复杂,它可以当成一个分类任务来处理,也可以 通过一些启发式规则来处理,比如允许单词包含连字符,但此时可以规定只允许出现短前缀而 不是长前缀。 

    停用词

      某些情况下,一些常见词在文档和用户需求进行匹配时价值并不大,需要彻底从词汇表中 去除。这些词称为停用词(stop word)。一个常用的生成停用词表的方法就是将词项按照文档集 频率(collection frequency,每个词项在文档集中出现的频率)从高到低排列,然后手工选择那 些语义内容与文档主题关系不大的高频词作为停用词。停用词表中的每个词将在索引过程中被 忽略。使用停用词表可以大大减小系统所需要存储的倒排记录表的数目。

      在信息检索系统不断发展的历程中,有从大停用词表(200~300 个词)到小停用词表(7~12 个词)最后到不用停用词的趋势。Web 搜索引擎通常都不用停用词表。一些现代 IR 系统更关注 如何利用语言的统计特性来更好地处理常见词问题。 

  • 相关阅读:
    c++ namespace简单用法
    python2编码问题
    python dict()函数 /// logging模块///yield//生成器和迭代器
    python 对于一个字典,根据其value值获取其对应的keys值
    python 包/库/模块
    python __init()__
    python continue 和 break的区别
    python list去重
    linux命令,将一个文件夹中的内容copy到另外一个文件夹
    python 正则(re.compile()/re.findall())
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3313674.html
Copyright © 2011-2022 走看看