为您推荐:
精华内容
最热下载
问答
  • 5星
    2.87MB Darius_Tanz 2021-09-20 10:56:03
  • 5星
    82.04MB GZXGYZ 2021-03-17 22:28:57
  • 16.33MB weixin_42136477 2021-02-12 06:32:59
  • 165KB weixin_42142062 2021-06-22 00:22:11
  • 5星
    8.43MB u011015378 2019-03-28 11:31:02
  • 1.85MB weixin_38680393 2021-01-12 18:27:07
  • 19KB u010186942 2014-12-18 20:20:31
  • 656KB qq_33712456 2019-03-01 11:20:15
  • 5.69MB lolita22 2011-11-23 10:48:35
  • 352KB weixin_38519082 2020-03-04 18:07:39
  • 303KB island1406 2013-10-12 09:48:37
  • 56KB kcgsunshine517 2013-07-28 19:48:20
  • 6MB qiufeng1027 2014-11-14 21:32:13
  • 23.1MB qq_33712456 2019-03-01 11:43:19
  • 107KB momo156023 2010-08-28 09:01:34
  • 信息组织与检索 知识点整理 ...2.信息检索系统结构和功能模块 3.信息组织(信息采集,信息描述,信息标引,信息存储) 有点像知识点,事实上就是知识点,能举例的已经举例了,我尽力了。。 (会有粉丝吗呜呜呜

    目录

    1 简单的定义

    (一)广义的信息检索(信息组织+信息检索)

    (二)狭义的信息检索

    2 信息检索技术与方法

    (一)文本信息检索

    (二)多媒体信息检索

    3 信息检索系统结构和功能模块

    (一)信息检索系统基本结构

    (二)信息组织各功能模块

    (三)信息检索各功能模块

    (四)知识组织工具(作用)

    (五)信息检索系统结构实例分析

    4 信息采集(没有具体程序噢~)

    5 信息描述(重点)

    (一)理解信息描述

    (二)传统文献信息描述

    (三)数字化信息描述

    (四)信息描述需要注意的问题

    6 信息标引(重点)

    (一)信息标引的目的

    (二)信息标引的方法

    (三)信息标引和信息检索结果

    7 信息存储(重点)

    (一)理解资源库

    (二)理解索引

    (三)倒排索引及构建


    1 简单的定义

    基本概念:数据、信息、知识、智慧、信息检索、信息生命周期

    (一)广义的信息检索(信息组织+信息检索)

    定义:利用一定的科学规则和方法,通过对信息外在特征和内容特征的分析、选择、描述、标引、存储、排序和重组等活动,实现无序信息流向有序信息流的转换,从而保证用户对信息的有效获取和利用及信息的有效流通和组合

    信息组织主要包括对某范围内的信息选择的基础上对信息的内外特征进行描述、标引、存储并使其有序化,形成信息集合

    (二)狭义的信息检索

    定义:借助一定的设备与工具,采用一系列方法与策略从信息集合中查询所需的信息的过程

    发展历程

    • 图书目录和文摘、索引(手工检索)
      • 印刷型文献为主要检索对象
      • 以各类文摘、题录和目录型工具书为可利用的主要检索工具
      • 以图书馆的参考咨询部门作为开展信息检索服务的中心机构
    • 计算机化检索【脱机批处理——联机实时检索——联机网络化与多元化检索】
      • 各类机读数据库为检索对象
      • 各类信息中心、联机服务中心作为信息服务部门
      • 信息检索用户逐渐由专业检索人员向个人终端用户转移和扩散
    • 网络化检索
      • WWW为核心的网络应用上的各种资源做检索对象,包括各种网页、FTP资源、用户组资源、联机数据库等和各种通过网络提供服务的数据库等
      • 以搜索引擎为主要检索工具
      • 信息用户多为终端用户
      • 人工智能得到应用,自动化程度、智能性大大提高(如自然语言理解、语义检索、推理等)

    2 信息检索技术与方法

    (一)文本信息检索

    常用检索技术:布尔检索、加权检索、截词检索、限制检索、位置检索和聚类检索等

    布尔检索

    • 算符含义

    逻辑或OR:A OR B

    逻辑与AND:A AND B

    逻辑非NOT:A NOT B

    逻辑异或XOR:A XOR B //检索结果是含有检索词A但不含有检索词B的文献或者是包含检索词B但不含有检索词A的文献

    • 优先级
      • 同级运算自左向右
      • AND和NOT先执行,OR后执行
      • 检索式中如果包括其他检索技术的算符,布尔运算最后执行

    加权检索

    • 加权检索的定义和示例
      • 加权检索是对布尔逻辑检索的一种扩充
      • 加权在标引及检索阶段都可使用

               示例:Q=知识管理(4)and竞争情报(2)and企业文化(1)

    • 加权检索优缺点
      • 优点:明确了各检索词在检索中的重要程度;可以通过提高和降低阈值来扩大和缩小检索范围;检索结果易于顺序排
      • 缺点:提问表达式烦琐,权值确定比较困难

    截词检索

    • 检索者将检索词汇在他认为合适的地方截断,并使用该截断词进行检索匹配
    • 截词检索有多种类型

               按照截断位置分:后截断(主要方式)、前截断和中截断

               按照截断的字符数量分:有限截断和无限截断

    限制检索

    方式:字段检索、二次检索、其他方式的限制

    位置检索(区别于字段检索)

    针对自然语言文本中检索词之间的特定位置关系而进行的检索匹配

    主要方式:邻接检索、同句检索、同字段检索、同记录检索

    聚类检索

    聚类检索起源于向量空间模型

    针对系统中的全部文献向量,使用一定的相似性(或相异性)度量指标和聚类方法,计算出文献与文献之间的相似度,将相似度较高的文献聚集在一起,形成文献类目,进而形成文献的聚类文档聚类检索针对聚类文档进行

    其他文本辅助检索技术

          信息的浏览时检索与链接技术的运用;检索结果的翻译和多语种检索;检索结果的后处      理(排序输出/联机聚类/去重合并)

    (二)多媒体信息检索

    特性:集成性/交互性/独立性

    音频信息

    • 关注音频声波的数字化问题;
    • 采样、量化、编码和压缩等;
    • 传统音频信息检索特征的提取:外部特征的描述(文件名、文件类型、创建者、创建时间等,多用元数据表示)+内容特征的标引(如对歌词中的关键词、主题词进行提取)

    图形与图像信息

    • 传统图像信息的检索特征提取方法:外部特征(图像创建日期、文件格式、数据大小等)+内容特征的标引(图像描述的主要对象、作者的创作意图等)

    视频信息

    • 外部特征+内容特征的标引(简单文本转化)
    • 基于内容的检索:指根据多媒体对象的听、视觉等特征及其蕴含的内容和语义特征进行检索

    3 信息检索系统结构和功能模块

    (一)信息检索系统基本结构

    • 系统结构:指系统的组成及各组成部件之间的关系
    • 基本结构:集中式与分布式
      • 集中式检索系统:信息资源分布在同一物理地点,往往具有统一标准的信息组织手段
      • 分布式检索系统:利用分布式计算和移动代理等技术从大量的、异构的信息资源中检索出对于用户有用的信息。这里的分布式环境指的是信息资源在物理上分布于不同的地点,在数据库结构上具有异构性,但是这些分散和异构的信息资源在逻辑上是一个整体,从而构成一个分布式检索系统
    • 逻辑结构
      • 信息组织模块:资源采集——信息标引——数据库创建
        • 信息检索模块:用户界面——提问处理——检索匹配

    (二)信息组织各功能模块

    • 信息资源及其采集(决定信息检索系统中数据库的类型及收录范围)
    • 信息描述与标引处理
    • 决定检索系统的检索点(入口),也决定了标引深度及后续检索功能的提供
    • 信息描述规则往往需要先行制定
    • 标引分为人工标引和自动标引
      • 人工标引多依赖词表和规范工具
      • 自动标引更多针对自然语言文本进行,标引前一般要先对文献进行词汇分析,对其中的数字、连字符、标点符号和字母的大小写进行处理,再依据语言学规则进行文本内容的自动抽词或辅词,也可进行自动分类或聚类
    • 数据库创建与维护
    • 依据上述步骤形成的有序信息一般以数据库的形式存储在检索系统
    • 常见的数据库有文献型数据库和非文献型数据库
      • 文献型数据库包括书目(如索引、文摘等)和全文数据库,它们的设计与实现流程也各不相同;
      • 非文献型数据库包括指南数据库(如人物传记、公司名录、机构指南数据库等)、数值数据库和图像数据库以及术语、软件等特殊类型的数据库

    (三)信息检索各功能模块

    • 理解用户界面
    • 提问处理(提问加工方法很多,有菊池敏典法、逆波兰法、范式变换法等)
    • 检索匹配
      • 检索匹配过程涉及数学算法模型的应用有很多信息检索模型,重点要掌握的是经典模型     
      • 经典模型包括布尔检索模型,向量空间模型,概率模型

    (四)知识组织工具(作用)

    • 表达:信息资源特征,及用户信息需求
    • 组织:以达到资源的系统化和有序化
    • 控制:对标引、检索过程中使用到的术语、词汇 或某些特征进行规范与协调
    • 关联:知识之间的相关性得到明确表征并能够被 机器理解处理

    (五)信息检索系统结构实例分析

     

    图书馆数目检索系统

    搜索引擎

    知识图谱

    信息选择与采集

    采访部门负责选择,采集以购买为主

    爬虫为主

    依据前期设计好的知识建模进行

    信息描述与标引

    外部特征获取+描述为结构化数据,MARC作为信息描述标准;内容特征多以整本书为单位进行,而且以人工标引为主,依据中图法、汉语主题词表进行

    半结构化或非结构化,信息特征难以获取,更多采用自动标引,需要更多技术的支撑,例如文本分析、自然语言处理等

    采用知识建模的方式进行,可能使用到RDF等资源描述框架及本体等知识建模工具,通过实体和关系自动/人工抽取完成知识关联构建

    索引与数据库

    传统为MARC磁带,现多存储在关系型数据库,索引功能比较完善

    自动构建文本索引,数据库类型也很多样,可能是文档,也可能是关系型数据库或者NoSQL的数据库

    知识图谱多存储在图数据库中,类型RDF三元组能够支持网状结构的查询

    信息检索模块

    多以检索点入口限制检索+布尔逻辑检索为主的检索词检索,分类浏览及检索也是常用的

    需要更多结果处理的功能,布尔操作、模糊查询、分组查询等,更重视排序的处理

    语义查询方式,并重视知识推理和自动问答等的应用

    4 信息采集(这里没有具体程序噢~)

    信息检索系统将在信息采集的基础上进行信息描述、标引、索引及数据库构建,因此采集结果的存在形式至关重要:

    • 结构化(数据):按一定属性规则排列的(二维表是最常见形式)
    • 非结构化:所有格式的文本、图片、音频/视频信息
    • 半结构化:介于二者之间的,具有一定结构,但语义不够确定

    5 信息描述(重点)

    (一)理解信息描述

    • 信息描述:信息著录、信息编目
    • 定义:根据特定的信息管理规则和技术标准,将存在于某一物理载体上的信息资源的外在特征与部分内容特征进行选择、描述与给予记录的过程
    • 结果:一条由多个描述项目构成的关于该信息资源的数据
    • 应用:传统印刷载体文献;对于网络上各类型数字化信息而言,内外特征不容易区分,所有对信息特征进行反映的过程都可以看作信息描述
    • 作用
      • 识别:个别化描述,区别其他信息
      • 选择:通过特征判断资源利用价值,决定是否选择
      • 检索:描述数据中的检索点之间的逻辑匹配给用户提供查检途径及二次筛选依据
      • 定位:传统文献排列位置、数据库位置、网络地址等

    (二)传统文献信息描述

    • 图书馆信息管理以馆藏文献为主,常见文献包括图书、期刊、古籍等
    • 传统文献信息描述主要依据ISBD国际标准书目著录展开,最终描述结果是图书馆书目卡
    • 目标:标准书目国际交流,实现资源共享三统一:著录格式/描述项目/描述符号);从不同的可交换数据源中生成数据,以便国家间的交流;有助于克服语言障碍,以便国家间的相互解释;有助于将书目数据转换为机器可读形式

    MARC(机读目录)

    • 定义:一种以代码形式和特定结构记录在计算机存贮载体上,可由计算机自动控制、处理和编辑输出的目录;一次输入,多项检索;输出多种载体的款目;网上传输,可实现合作编目和联机检
    • 局限:标准复杂;需要专用平台,不能跨平台操作;描述内容多为书目;仅限于数据描述部分,管理信息较少,不适合计算机环境下日益增多的需求。
    • 基本格式:每一条记录都由四个部分构成
      • Leader(记录头标区):固定为24字符,记录计算机处理所需参数,如记录长度、记录状态、执行代码等
      • Directory(地址目次区):每一字段的长度和起始位置,由计算机自动生成
      • DataFields(数据字段区):各种描述数据
      • 记录分隔符(由计算机给出):记录结束符
    • 数据字段
    • 数据字段区划分成10功能块,每个功能块又包含若干字段和子字段,其中6XX功能主要使用分类法和主题法(词)的方式表达信息内容特征。
    • 标识符号(三类)
      • 标识符:字段标识符(3位数字,如205表示版本项)、子字段标识符(两个字符,第一个字符为“$”,第二个字符可以是数字或者字母,如200字段的“$a”表示正题名)
      • 指示符:两位数字或者字母组成,提供附加信息
      • 分隔符:自动生成

    (三)数字化信息描述

    元数据

    定义:关于数据的数据或关于数据的结构化数据。描述一个具体的资源对象并能对这个对象进行定位、管理且有助于它的发现与获取的数据

    类型分类

    • 描述信息资源领域:书目、档案、政府出版物、地图等
    • 描述文献对象分:传统文献资料;数字化信息资源
    • 信息资源作用或功能分(CLC)【使用范围】:
      • 描述性:支持资源的发现和鉴别,如题名、作者等书目数据(主要用于检索系统检索入口和结果筛选
      • 管理性:用以维护和管理资源的数据,如创建者数据、存取权限数据、数据处理技术数据等(主要用于检索系统的管理,以及动态特征的变化演示等)
      • 结构性:描述数字化资源内部的形式特征,如目录、段落和章节,页面间的跳转数据(用于检索系统相关资源的跳转
      • 标准的构成:描述某类资源的具体对象时所有规则的集合(标准一般包括了完整描述一个具体对象时所需要的数据项集合,各数据项语义定义,著录规则和计算机应用时的语法规定
    • 常用元数据标准
      • 描述一般信息的元数据:MARC(书目数据)、DC(网络资源)和TEI(电子文本)
      • 描述特殊信息的元数据:EAD(档案信息)、GILS(政府信息)、CGDGM(地理信息)
      • 描述图像信息的元数据:CDWA(博物馆艺术作品)和VRACore(可视化文化作品及图像资源)
    • 元数据互操作
      • 多个不同元数据格式的释读、转换和由多个元数据格式描述的数字化信息资源体系之间的透明检索
      • 利用特定转换程序对不同元数据元格式进行转换,称为元数据映射
      • 目前已有大量的转换程序存在,供若干流行元数据格式之间的转化

    (四)信息描述需要注意的问题

    • 检索系统信息描述应根据资源特征和检索用户检索需求设计信息描述的标准
    • 兼顾不同资源的特性同时又要能最大程度地实现各类资源在发现和获取方法上的一致性,即从功能数据结构格式语义语法等诸多方面保持一致以实现不同系统之间的互操作和共享

    6 信息标引(重点)

    (一)信息标引的目的

    • 信息标引定义:采用一个或若干信息标识(词语或者代号)表示或替代信息内容特征的过程。揭示与标引形成的标识和代码不仅是信息存入信息系统的依据,也往往是信息检索的途径,如分类号、主题词、关键词等
    • 标引类型
      • 标引主体:人工标引和自动标引
      • 标引标识的不同形式:分类标引和主题标引
      • 标识是否规范控制:受控标引和非控标引(自然语言标引)

    (二)信息标引的方法

    标引分类

    • 人工受控标引
    • 转换标识:受控标引的标识必须来自受控分类表(分为等级体系分类和分面分类)或者受控词表(知识组织工具),即经过规范控制的标识,有时还需要进行概念之间的组配。
    • 自然语言自动标引
    • 汉语分词问题——歧义
      • 交集型歧义:结合成分子;我研究生期间是研究生物的
      • 组合型歧义:请把手拿开

    常见的中文分词方法

    • 基于规则的分词方法(机械分词方法、基于字典)
      • 三个要素:分词词典、文本扫描顺序、匹配原则
      • 扫描顺序:正向扫描、逆向扫描和双向扫描
      • 匹配原则:有最大匹配、最小匹配、逐词匹配和最佳匹配。
    • 基于统计的分词方法
      • 对训练文本中相邻出现的各个字的组合的频度进行统计,计算它们之间的互现信息(紧密程度);当紧密程度高于某一个阈值时,便可以认为此字组可能构成了一个词
      • 例如:N元文法模型(N-gram)、隐马尔可夫模型(HMM)、最大熵模型(ME)、条件随机场模型(CRF)等
    • 基于语义的分词方法
      • 对自然语言自身的语言信息进行更多的处理
      • 例如:扩充转移网络法、知识分词语义分析法、邻接约束法、综合匹配法、后缀分词法、特征词库法、矩阵约束法、语法分析法等
    • 基于理解的分词方法
      • 基本思想:在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象

    标引标识

    三个要素:分词子系统、句法语义子系统、总控部分。

    • 词典分词
    • 单汉字标引
    • 从分词结果到标引标识

    不是所有词都直接转换为标引标识

    词频:词在文献中出现的次数(一篇,一类文档)

    词性:名词常是有意义的

    逆文本档频率:在所有文档中统计词的频率

    位置:论文篇名,摘要,正文出现的词

    加权:词的权重

    • TF-IDF
    • TF:表示词条在当前文档中出现的频率,这个数字通常会被归一化(一般是词频除以文章总词数),以防止它偏向长的文件,公式=在某一类中词条出现的次数/该类中所有的词条数目
    • IDF:逆文件频率,公式=log⁡(语料库的文档总数/(包含词条w的文档树+1))

    应用场景:标引词的选择,自动标签生成/文档相似度的计算/文本聚类/自动文摘/SEO

    (三)信息标引和信息检索结果

    信息标引标识的数量

    信息标引标识是否受控

    信息标引标识粒度

    不同语种的处理差异

    7 信息存储(重点)

    (一)理解资源库

    概念:关系型数据库

    (二)理解索引

    索引由来

    索引组成的基本单位是索引款目,所有索引款目实现有序化编排

    款目一般包括索引词、说明或注释语、出处 3项内容

    本质特征是只揭示内容出处或文献线索,并不直接提供事实、资料本身。主要功能是为人们准确、迅速地获得文献资料提供线索性指引

    关系型数据库索引

    索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构

    索引有不同类型:普通索引、唯一索引、主键索引、全文索引等等

    索引将非结构化数据按照规则提取信息,重新组织,使其有一定结构

    全文索引

    创建索引:获得文件——构建文档对象——分析分档(分词)——创建索引

    查询索引:用户查询接口——创建查询——执行查询——渲染结果——(用户查询接口)

    (三)倒排索引及构建

    顺序和倒排含义:倒排(逆向)对应的是顺序(正排/正向)

    倒排索引的创建流程

    收集需要索引的文档

    将每篇文档转换为一个个词条(token):自然语言分词

    进行语言学预处理,产生归一化词条作为词项

    对所有文档按照其中出现的词项建立倒排索引

    词条问题的解决

    词条归一化隐式地建立等价类,例如去掉连字符;维持多个非归一化词条之间的关联关系,例如手工建立同义词表,参见后面的单词词典(所以可以知道汉语主题词表等受控词表的作用)

    词干还原stemming和词形归并lemmatization

    单词词典

    • 单词词典是由文档集合中出现过的所有单词构成的字符串集合。
    • 单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。
    • 单词词典是倒排索引中非常重要的组成部分,它是用来维护文档集合中所有单词的相关信息,同时用来记载某个单词对应的倒排列表在倒排文件中的位置信息。
    • 在支持搜索时,根据用户的查询词,去单词词典里查询,就能够获得相应的倒排列表。对于一个规模很大的文档集合来说,可能包含了几十万甚至上百万的不同单词,快速定位某个单词直接决定搜索的响应速度,所以需要很高效的数据结构对单词词典进行构建和查找。

    数据结构

    常用的数据结构包含哈希加链表树形词典结构

     

     

    展开全文
    vv_eve 2020-07-01 10:24:14
  • 信息检索系统——基于Lucene实现 题目要求 基于课程学习内容,实现简单的搜索引擎功能(界面可视化不做要求,可终端输出),要求实现以下基本功能: 拼写检查(参考最小编辑距离原理) 倒排索引 使用TF/IDF或者VSM...

    信息检索系统——基于Lucene实现

    题目要求

    基于课程学习内容,实现简单的搜索引擎功能(界面可视化不做要求,可终端输出),要求实现以下基本功能:

    1. 拼写检查(参考最小编辑距离原理)
    2. 倒排索引
    3. 使用TF/IDF或者VSM进行文档排序

    实现

    这里使用的是lucene-8.0.0,由于版本不同,网上很多博客的教程已经失效,具体的api参数或者调用要参考官网最新的手册,这里需要一定的搜索与查阅文档的能力。

    http://lucene.apache.org/core/8_0_0/core/

    项目完整源码:Github传送门

    下面只讲述部分关键的代码

    1.构建倒排索引

    • 这里利用IndexWriter类来构建索引,由于这里使用的是中文文档,故要使用分析中文的分析器SmartChineseAnalyzer.

    • 根据建立索引的目录以及数据的目录来读取。

    • 定义一个fieldType,并设置其属性,既保存在文件又用于索引建立

    • 读取 file 转 string

    • 用文件内容来建立倒排索引

    • 用文件名来建立倒排索引

    • 用文件路径来建立倒排索引

    public class Indexer {
       private IndexWriter writer;
       public Indexer(String indexDirectoryPath) throws IOException{
          // 获取目录directory
          Directory indexDirectory = FSDirectory.open(FileSystems.getDefault().getPath(indexDirectoryPath));
    
          // 中文分析器
          Analyzer analyzer = new SmartChineseAnalyzer();
          IndexWriterConfig config = new IndexWriterConfig(analyzer);
          writer = new IndexWriter(indexDirectory, config);
       }
    
       public void close() throws CorruptIndexException, IOException{
          writer.close();
       }
    
       private Document getDocument(File file) throws IOException{
          Document document = new Document();
          
           // 定义一个fieldType,并设置其属性,既保存在文件又用于索引建立
          FieldType fieldType = new FieldType();
          fieldType.setStored(true);
          fieldType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
          
          // 读取 file 转 string
          StringBuffer buffer = new StringBuffer();
          BufferedReader bf= new BufferedReader(new FileReader(file));
          String s = null;
          while((s = bf.readLine())!=null){//使用readLine方法,一次读一行
              buffer.append(s.trim());
          }
    
          String xml = buffer.toString();
          // 用文件内容来建立倒排索引
          Field contentField = new Field(LuceneConstants.CONTENTS, xml,fieldType);
          // 用文件名来建立倒排索引
          Field fileNameField = new Field(LuceneConstants.FILE_NAME,file.getName(),fieldType);
          // 用文件路径来建立倒排索引
          Field filePathField = new Field(LuceneConstants.FILE_PATH,file.getCanonicalPath(),fieldType);
    	  
          // 添加到document
          document.add(contentField);
          document.add(fileNameField);
          document.add(filePathField);
    
          return document;
       }   
    
       private void indexFile(File file) throws IOException{
          System.out.println("Indexing "+file.getCanonicalPath());
          Document document = getDocument(file);
          writer.addDocument(document);
       }
       
        
       public int createIndex(String dataDirPath, FileFilter filter) 
          throws IOException{
          //get all files in the data directory
          File[] files = new File(dataDirPath).listFiles();
          
          int count = 0;
          for (File file : files) {
    //    	  System.out.println(file);
             if(!file.isDirectory()
                && !file.isHidden()
                && file.exists()
                && file.canRead()
                && filter.accept(file)
             ){
                indexFile(file);
                count++;
             }
          }
          return count;
       }
    }
    

    测试函数:

    public class LuceneTester {
    	
       String indexDir = "C:/Users/asus/Desktop/java/information-retrieval-system/index";
       String dataDir = "C:/Users/asus/Desktop/java/information-retrieval-system/data";
       Indexer indexer;
       
       public static void main(String[] args) {
          LuceneTester tester;
    //      File[] fs = new File("C:/Users/asus/Desktop/java/information-retrieval-system/data").listFiles();
    //      for (File f : fs){  
    //          System.out.println(f);  
    //      }  
          try {
             tester = new LuceneTester();
             tester.createIndex();
          } catch (IOException e) {
             e.printStackTrace();
          } 
       }
    
       private void createIndex() throws IOException{
          indexer = new Indexer(indexDir);
          int numIndexed;
          long startTime = System.currentTimeMillis();	
          numIndexed = indexer.createIndex(dataDir, new TextFileFilter());
          long endTime = System.currentTimeMillis();
          indexer.close();
          System.out.println(numIndexed+" File indexed, time taken: "
             +(endTime-startTime)+" ms");		
       }
    }
    

    输出结果:这里我们就已经建立好索引,并在文件目录能找到索引文件

    1

    文件目录中的索引:

    2

    2. 使用TF/IDF进行文档排序,并使用关键词搜索文档

    • 得到读取索引文件的路径
    • 通过dir得到的路径下的所有的文件
    • 设置为TF/IDF 排序
    • 实例化分析器
    • 建立查询解析器
    • 根据传进来的q查找
    • 开始查询
    public class ReaderByIndexerTest {
     
    	public static void search(String indexDir,String q)throws Exception{
    		
    		//得到读取索引文件的路径
    		Directory dir=FSDirectory.open(Paths.get(indexDir));
    		
    		//通过dir得到的路径下的所有的文件
    		IndexReader reader=DirectoryReader.open(dir);
    		
    		//建立索引查询器
    		IndexSearcher is=new IndexSearcher(reader);
    		
    		// 设置为TF/IDF 排序
    		ClassicSimilarity sim = new ClassicSimilarity();
    		// Implemented as sqrt(freq).
    		// sim.tf(reader.getSumDocFreq(q));
    		
    		// Implemented as log((docCount+1)/(docFreq+1)) + 1.
    		// sim.idf(reader.getSumDocFreq(q), reader.numDocs());
    		is.setSimilarity(sim);
    		// 实例化分析器
    		Analyzer analyzer=new SmartChineseAnalyzer(); 
    		
    		// 建立查询解析器
    		/**
    		 * 第一个参数是要查询的字段;
    		 * 第二个参数是分析器Analyzer
    		 * */
    		QueryParser parser=new QueryParser("contents", analyzer);
    		
    		// 根据传进来的q查找
    		Query query=parser.parse(q);
    
    		// 计算索引开始时间
    		long start=System.currentTimeMillis();
    		
    		// 开始查询
    		/**
    		 * 第一个参数是通过传过来的参数来查找得到的query;
    		 * 第二个参数是要出查询的行数
    		 * */
    		TopDocs hits=is.search(query, 10);
    		
    		// 计算索引结束时间
    		long end=System.currentTimeMillis();
    		
    		System.out.println("匹配 "+q+" ,总共花费"+(end-start)+"毫秒"+"查询到"+hits.totalHits+"个记录");
    		
    		//遍历hits.scoreDocs,得到scoreDoc
    		/**
    		 * ScoreDoc:得分文档,即得到文档
    		 * scoreDocs:代表的是topDocs这个文档数组
    		 * @throws Exception 
    		 * */
    		for(ScoreDoc scoreDoc:hits.scoreDocs){
    			Document doc=is.doc(scoreDoc.doc);
    			System.out.println(doc.get(LuceneConstants.FILE_PATH));
    		}
    		
    		//关闭reader
    		reader.close();
    	}
    

    3. 拼写检查

    • 建立目录
    • 创建初始化索引
    • 根据创建好的索引来检查k个建议的关键词
    • 返回正确的关键词
    public static String[] checkWord(String queryWord){
    		//新索引目录
    		String spellIndexPath = "C:\\Users\\asus\\Desktop\\java\\information-retrieval-system\\newPath";
    		//已有索引目录
    		String oriIndexPath = "C:\\Users\\asus\\Desktop\\java\\information-retrieval-system\\index";
    
    		//拼写检查
    		try {
    			//目录
    			Directory directory = FSDirectory.open((new File(spellIndexPath)).toPath());
    
    			SpellChecker spellChecker = new SpellChecker(directory);
    
    			// 以下几步用来初始化索引
    			IndexReader reader = DirectoryReader.open(FSDirectory.open((new File(oriIndexPath)).toPath()));
    			// 利用已有索引
    			Dictionary dictionary = new LuceneDictionary(reader, LuceneConstants.CONTENTS);
    			
    			IndexWriterConfig config = new IndexWriterConfig(new SmartChineseAnalyzer());
    			spellChecker.indexDictionary(dictionary, config, true);
    			
    			int numSug = 5;
    			String[] suggestions = 
                    spellChecker.suggestSimilar(queryWord, numSug);
    			reader.close();
    			spellChecker.close();
    			directory.close();
    			return suggestions;
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return null;
    	}
    

    4. 综合测试

    这里调用之前实现好的基类和工具类,并制作简陋的命令行界面来进行信息检索

    //测试
    	public static void main(String[] args) throws IOException {
    		String indexDir="C:\\Users\\asus\\Desktop\\java\\information-retrieval-system\\index";
    		// 处理输入
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
            String str = null; 
            System.out.println("请输入你要搜索的关键词:"); 
            try {
    			str = br.readLine();
    			System.out.println(); 
    		} catch (IOException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
            // 拼写检查
            String temp = str;
            String[] suggestions = checkWord(str);
            if (suggestions != null && suggestions.length != 0){
                System.out.println("你可能想输入的是:"); 
            	for(int i = 0; i < suggestions.length; i++){
    		        System.out.println((i+1) + " : " + suggestions[i]); 
    			}
    
                System.out.println("请选择上面的一个正确的关键词(输入 1 ~ 5),或继续原词(输入0)进行搜索:"); 
                str = br.readLine();
    			System.out.println(); 
                if (str != "0"){
                	str = suggestions[str.charAt(0) - '1'];
                }
                else{
                	str = temp;
                }
            }
    		
    		try {
    			search(indexDir,str);
    		} catch (Exception e) {
    		    // TODO Auto-generated catch block
    		     e.printStackTrace();
    		}
    	}
    

    测试结果:

    3

    测试用例1解析:

    这里我输入一个错误的关键词美利坚共和国,试图进行搜索,然后系统马上就会告诉我拼写检查的结果让我重新选择。

    重新选择后会输出美利坚合众国的正确查询结果

    4

    测试用例2解析:

    这里直接输入一个正确的存在的关键词,就会直接输出美利坚合众国的正确查询结果,不会出现拼写检查的提醒

    展开全文
    dickdick111 2019-04-28 15:34:10
  • 5星
    1.41MB wwwwwqzh 2012-10-31 10:37:27
  • 4星
    15.94MB leeapi 2013-01-17 21:14:19
  • 5.73MB m0_59336714 2021-08-15 11:42:39
  • 997KB dbnjzy 2021-09-19 06:46:17
  • 4星
    68KB qq506964863 2017-11-27 11:51:19
  • 2.79MB kamo54 2020-07-18 14:26:01
  • 325KB weixin_39840515 2019-08-27 22:18:12
  • 3.24MB dbnjzy 2021-09-20 22:46:21
  • 261KB weixin_38605590 2021-05-13 19:45:29
  • 4星
    354KB bobyeoh 2013-03-21 10:52:48
  • 190KB weixin_39841856 2019-07-22 20:25:11
  • 2.73MB dbnjzy 2021-09-20 22:46:14
  • 341KB weixin_38609453 2021-05-11 09:17:59
  • 5星
    3.8MB q345852047 2011-07-26 11:37:38
  • 调用信息抽取模块和信息去噪模块,提取语料库中pdf、doc、ppt、html、excel、txt及专利等文件中的内容信息,并将抽取的信息进行去噪处理,去除标签、乱码、页眉和页脚等无用信息,同时确保有用信息被完整...

    系统源码及原文免费下载地址请访问:www.54manong.com

    一、 系统简介

    通过对网络爬虫工具的设置并扩展,自动抓取行业领域资料,或通过语料管理模块上传领域相关资料,形成语料库。调用信息抽取模块和信息去噪模块,提取语料库中pdf、doc、ppt、html、excel、txt及专利等文件中的内容信息,并将抽取的信息进行去噪处理,去除标签、乱码、页眉和页脚等无用信息,同时确保有用信息被完整保留。在完成语料预处理后进行知识挖掘,首先基于领域词典,对去噪处理后的信息进行分词、词汇统计分析,最终找出领域单词概念和组合概念,同时记录语料中包含领域概念的语句,并基于规则抽取核心语句中领域概念间的关系,通过本体的推理,形成此文档的概念知识关系网,并保存为xml语法格式,存入数据库。在此基础上通过对识别的领域概念和核心语句的精炼,提取出文档的关键词(1-3个)和摘要信息(3句左右)。基于关键词和摘要信息对文档进行自动分类,并在以后信息更新时,保持聚类结果的相对稳定。分析完相关的语料资料后,生成整个网站的概念知识网,并将挖掘出的知识建立语义索引库。

    用户使用该系统时,支持目录导航、相关概念、扩展概念和语义查询。目录导航:显示系统自动聚类的特定领域的层次结构信息,每个节点后显示节点下的网页或文档资源的个数,并支持图形化显示。语义查询:支持用户对关键词、词组和简单语句的查询,通过本体推理查询,形成语义查询检索式,返回语义索引库中的相关信息,同时通过本体推理,找出相关概念和扩展概念并能显示出来。

    二、 系统架构图

    image.png

    图1、系统架构图

    三、 系统数据处理流程图

    image.png

    图2、系统主要模块间关系图

     

    image.png

    图3、语义索引库构建流程图

    image.png

    图4、信息检索数据流程图

     

    四、 系统模块设计

    编号

    名称

    人员分配

    备注

    G20111025F01

    系统页面开发

     

    设计并开发

    G20111025F02

    网络爬虫

     

    升级完善

    G20111025F03

    信息提取

     

    重点

    G20111025F04

    信息去噪

     

    难点

    G20111025F05

    智能分词

     

    升级完善

    G20111025F06

    领域概念识别

     

    重点

    G20111025F07

    概念间关系抽取

     

    重点、难点

    G20111025F08

    文档关键词抽取

     

    重点、难点

    G20111025F09

    文档自动摘要

     

    重点、难点

    G20111025F10

    文档自动分类

     

    重点、难点

    G20111025F11

    语料管理模块

     

    工作量较大

    G20111025F12

    知识提取库

     

    重点、难点

    G20111025F13

    语义索引库

     

    重点、难点

        

    编号

    名称

    人员分配

    备注

    L20111025S1

    信息检索模块

     

    升级完善

    L20111025S2

    检索结果优化

     

    升级完善

    L20111025S3

    网状信息可视化显示

     

    重点

    L20111025S4

    统计信息可视化显示

     

    重点

        

    编号

    名称

    人员分配

    备注

    L20111025Y1

    互联网资源

     

    较简单

    L20111025Y2

    领域词典

     

    工作量较大

    L20111025Y3

    领域本体

     

    重点

    L20111025Y4

    目录导航体系

     

    难点、要点

        

    五、 系统各模块具体分工情况

    (1) 系统页面开发

    编号

    G20111025F01

    模块

    系统页面开发

    描述

    系统操作的平台

    功能

    合理布局,设置系统各项功能相应按钮、信息展示框。

    整体布局拟采用左、中、右三栏结构,主要栏目包括:语义检索、资源分布图、本体知识图等。

    格式

     

    存储

     

    输出

     

    接口

     

    难点

     

    分工

    贾婷负责搜集、调研互联网同类网站(包括相关智能搜索引擎、专家系统和行业重要网站),栾勇设计首页整体布局和栏目设置,最终在doc中采用表格或其他形式描述出来。


    (2) 网络爬虫

    编号

    G20111025F02

    模块

    网络爬虫

    描述

    对Heritrix网络爬虫工具的功能进行合理扩展利用。

    功能

    扩展升级已有网络爬虫工具,比如添加能够抓取特定前缀的URL、抓取含有特定关键字的网页等功能。 

    格式

     

    存储

     

    输入

    起始网址、摘要、前缀、关键词、抓取链接层数、抓取时间、抓取网页个数、抓取全部或只抓取更新等等

    输出

    抓取的互联网网页信息

    接口

     

    难点

     

    分工

     

    备注

    更新抓取时为识别信息是否为新信息,需要在知识提取库或索引库设置相应字段记录。


    (3) 信息提取

    编号

    G20111025F03

    模块

    信息提取

    描述

    提取网络爬虫抓取的各类网页文件和doc、docx、pdf、ppt、txt等文本文件内容。注意调用pdf文件内容提取程序(已有)时,当pdf为扫描版或软件识别版,可能会出错,要找出原因,同时注意当文档内容分栏或有插图、插表时的提取结果,设法提高准确性。

    功能

     

    格式

     

    存储

     

    输入

     

    输出

     

    接口

     

    难点

     

    分工

     


    (4) 信息去噪

    编号

    G20111025F05

    模块

    信息去噪

    描述

    去除抽取信息中的干扰字符,同时尽量确保有用信息完整保留

    功能

    实现信息去噪算法,归纳总结各种类型文件抽取内容的特点,以句子为单位,去除空格、页眉、页脚、页码、乱码和其他杂乱符号;归纳总结并识别出文件中各级标题的特点 

    格式

     

    存储

     

    输入

    文件内容抽取结果

    输出

    以句子为单位输出

    接口

     

    难点

    去噪算法

    分工

     

    备注

    去噪算法应当多花时间,防止过多有用信息也被去除。


    (5) 智能分词

    编号

    G20111025F04

    模块

    智能分词

    描述

    分析JE分词工具、庖丁解牛分词工具、Lucene自带分词工具、哈工大分词工具和中科院计算所分词工具的优缺点,选定适合该系统的分词工具。系统运行时不需要更新用户自定义词典,但需支持扩展词性(用于标识词是否为领域概念),初步考虑选用JE分词工具(考虑分词工具是否免费、有效期等因素)。

    功能

    分词工具有多个函数可以调用:快速分词(只分词)、全功能分词(分词、词性、关系)等,如果需要多次调用,需选择合适的分词函数。

    格式

     

    存储

     

    输入

    信息去噪结果:以句为单位。

    输出

    多维向量:词、词性、本体角色、在句子中与其他词的关系等等。

    接口

     

    难点

    处理好分词与去噪的先后关系,提高准确率。

    分工

     

    备注

    注意本体半自动构建系统中分词和信息去噪的先后关系,有可能先去噪后分词,或者交叉进行,考虑那种方式准确率高。


    (6) 领域概念识别

    编号

    G20111025F06

    模块

    领域概念识别

    描述

    基于智能分词中扩展词性标识,识别领域概念,并记录包含领域概念的句子,用于概念间关系抽取。

    功能

     

    格式

     

    存储

     

    输入

    文件中所有句子的分词结果:多维向量

    输出

    文件中的领域词汇(包括本体中的关系词汇)

    接口

     

    难点

    组合领域概念、自定义领域词典中未收录的领域概念识别;

    本体中动词属性关系词的识别抽取

    分工

     


    (7) 概念间关系抽取

    编号

    G20111025F07

    模块

    概念间关系抽取

    描述

    基于HOWNET对输入的概念进行相似度计算,并通过聚类算法聚类,最终提取出概念间关系。

    功能

     

    格式

     

    存储

     

    输入

    句子、带句法分析的分词结果、领域概念识别结果

    输出

    概念间关系三元组    xml语法格式字符串

    接口

     

    难点

    注意概念间关系冗余的处理。

    分工

     

    备注

    选用较好的聚类算法并比较结果


    (8) 文档关键词抽取

    编号

    G20111025F08

    模块

    文档关键词抽取

    描述

    基于领域概念识别结果,参考统计等关键词抽取算法,提取2至4个最能体现文档主题的词语。

    功能

     

    格式

     

    存储

     

    输入

    领域概念识别结果

    输出

    1至3个领域关键词

    接口

     

    难点

    高效准确的关键词抽取算法

    分工

     


    (9) 文档自动摘要

    编号

    G20111025F09

    模块

    文档自动摘要

    描述

    基于分词结果和领域概念识别结果,以句为单位计算每句中领域概念出现次数,选择2至4句出现领域概念最多的句子作为文档摘要。

    功能

     

    格式

     

    存储

     

    输入

    分词结果和领域概念识别结果

    输出

    2至4句文档摘要

    接口

     

    难点

    研究寻找准确性较好的自动摘要算法。

    分工

     


    (10) 文档自动分类

    编号

    G20111025F10

    模块

    文档自动聚类

    描述

    基于文档中识别出的领域词汇并重点考虑文档的关键词,根据词汇出现频率,设置一定的权重,映射到导航目录体系中,每篇文档可以映射体系中多个节点。

    功能

     

    格式

     

    存储

     

    输入

    领域词汇识别结果和关键词提取结果

    输出

    映射到目录导航体系中的节点

    接口

     

    难点

    高效遍历和映射算法

    分工

     


    (11) 语料管理模块

    编号

    G20111025F11

    模块

    语料管理模块

    描述

    提供对网络抓取资料和用户上传资料的目录导航,能够查看资料容量、抓取时间、网址等信息。

    功能

     

    格式

     

    存储

     

    输入

     

    输出

     

    接口

     

    难点

    可以将存储目录记录在数据表中,通过访问数据库实现查看。

    分工

     


    (12) 知识提取库

    编号

    G20111025F12

    模块

    知识提取库

    描述

    记录网络爬虫、信息提取、信息去噪、智能分词、领域概念识别、概念间关系抽取、文档关键词抽取、文档自动摘要、文档自动分类等所有模块处理的结果信息。

    功能

     

    格式

     

    存储

     

    输入

    网络爬虫、信息提取、信息去噪、智能分词、领域概念识别、概念间关系抽取、文档关键词抽取、文档自动摘要、文档自动分类等所有模块处理的结果信息

    输出

    数据库

    接口

     

    难点

     

    分工

     


    (13) 信息检索模块

    编号

    L20111025S1

    模块

    信息检索模块

    描述

    依据信息检索数据处理流程图,实现相应功能

    功能

     

    格式

     

    存储

     

    输入

    用户查询关键词或查询语句

    输出

    用户需要的相关信息

    接口

     

    难点

    提高信息检索的效率

    分工

     


    (14) 检索结果优化

    编号

    L20111025S3

    模块

    检索结果优化

    描述

    对用户查询返回的结果依据相关性进行优化排序

    功能

     

    格式

     

    存储

     

    输入

    用户查询输入和每条返回结果的领域概念、关键词、摘要等信息

    输出

    每条返回结果的查询相关性权值。

    接口

     

    难点

    优化排序算法

    分工

     


    (15) 网状信息可视化显示

    编号

    L20111025S4

    模块

    网状信息可视化显示

    描述

    当用户鼠标移至查询结果列表中每条信息的“图形预览”图标上时,读取记录该条文档信息中概念及关系的xml格式数据,调用信息可视化工具,显示该条记录的概念关系图。另外,通过该模块可以图示化展示本体结构和目录导航结构。

    功能

     

    格式

     

    存储

     

    输入

    xml格式数据

    输出

    动态结果图

    接口

     

    难点

    解决节点太多、太少时图形显示的美观问题。图形中节点文字要清晰,节点太多时,合理省略节点。

    分工

     


    (16) 统计信息可视化显示

    编号

    L20111025S5

    模块

    统计信息可视化显示

    描述

    使用饼状图、柱状图、折线图展示系统中相关统计信息,如目录导航体系中各节点资源数量、用户查询命中数量,以及其他与系统实际应用中相关的统计信息。

    功能

     

    格式

     

    存储

     

    输入

    相关统计数据

    输出

    相关统计图形

    接口

     

    难点

     

    分工

     


    (17) 互联网资源

    编号

    L20111025Y1

    模块

    互联网资源

    描述

    通过调研查找互联网上领域相关的门户网站信息,用于网络爬虫信息抓取来源。

    功能

     

    格式

     

    存储

     

    输入

     

    输出

    网址、网名、介绍

    接口

     

    难点

     

    分工

     


    (18) 领域词典

    编号

    L20111025Y2

    模块

    领域词典

    描述

    通过调研收起领域相关词汇,构建领域自定义词典。

    功能

     

    格式

     

    存储

     

    输入

     

    输出

    领域自定义词典。

    接口

     

    难点

     

    分工

     


    (19) 领域本体

    编号

    L20111025Y3

    模块

    领域本体

    描述

    通过不断收集领域主题词、领域概念,不停地完善领域本体。

    功能

     

    格式

     

    存储

     

    输入

     

    输出

     

    接口

     

    难点

     

    分工

     


    (20) 目录导航体系

    编号

    L20111025Y4

    模块

    目录导航体系

    描述

     

    功能

    显示系统自动聚类的行业领域的层次结构信息,每个节点后显示节点下的网页资源个数。目录导航体系的前两层需要人手工设计,参考领域本体层次架构体系,并且要同时考虑行业用户的需求。每一个资源根据提炼出的关键词和摘要信息进行映射,可以同属于目录体系的多个节点。

    格式

     

    存储

     

    输入

     

    输出

     

    接口

     

    难点

     

    分工

     

    重要名词:

    相关概念:与用户查询输入关键词相关的概念。

    扩展概念:用户输入关键词在本体中的上下位概念。

    本体知识图:显示本体结构、层次关系、属性关系。

    资源分布图:图形化显示系统自动聚类的结果。

    Web知识图:图形化预览各条搜索结果信息的知识图。

    文档知识图:图形化显示系统上传文档的知识结构图。

        统计分析图:采用饼状图、柱状图和折线图显示系统聚类体系中各节点资源比例、系统新增资源比例、查询结果中各节点资源比例等等。

    来源:我是码农,转载请保留出处和链接!

    本文链接:http://www.54manong.com/?id=1260

    '); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();

    '); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();

    展开全文
    xiaohuanglv 2019-05-07 17:38:13

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 348,159
精华内容 139,263
关键字:

信息检索系统