第二讲文本处理章课件
* 三、文档解析3.1 目的和任务 文档解析的目的 识别文档的内容和结构 并分析和抽取各种文档特征(为文档索引和信息检索服务) 文档解析的任务 通过词素切分、词法分析和语法分析,识别词语、元数据(发布日期、作者)、图、表等特征(形象比喻‘动物解剖’) 通过标记语法分析(识别文档中的标签和元数据),解析文档结构 解析结果:文档的结构和文档的内容表示(用于建索引) 文档解析关注的内容 不仅包括:构成文档内容的词素、词、短语 而且包括:与文档结构相关的重要话题、标记、标题、链接等 # 文档解析的目标? 文档解析关注的内容? 文档解析的具体任务? * 3.2 词素切分 词素切分(智能性) 指从文档中的字符序列中获取词的过程 对于英文相对简单(仍有短语,地名等识别问题),对于中文就非常困难 同时,还需做一些简单处理(大写换小写,忽略无意义字符) 例子:Bigcorp’s 2007 bi-annual report showed profits rose 10%.得到: bgcorp 2007 annual report showed profits rose 注意:这种简单处理有时是不合理的(P.53:大写,-,’,数字,有意义) 词素切分的基本思路 虽然词素切分考虑的因素复杂,但一种基本思路是:二次扫描! 第一遍,先识别文档标记/标签(利用特定解析器,如HTML解析器) 第二遍,对文档结构中合适的部分(所需内容)进行词素切分 注意:考虑到几乎所有内容可能对查询都有意义,词素切分规则必须将大部分内容(包括大写,标点符号,-,’等)转化为可搜索标记# 什么是词素切分? 如何进行词素切分? * 3.3 停用词去除 停用词 文档内容中包含很多功能词,它们没有太多实际含义: 如,冠词(the,that,a),介词(over,above,under),Hai,be,等 它们的特点? 都是高频/无意义词,影响处理,不能用于表达文档的相关度 在信息检索中,称这些功能词为停用词stopword(将被扔掉) 停用词处理 一般可采用停用词表 但包含何词需斟酌,否则影响查询体验(可能查to be or not to be) 可采用集合中前n(如50)个高频词,或使用标准停用词表 更奇特的处理方式 如果存储空间允许,最好索引文档中所有词(包括停用词) 如果需要处理停用词,可以仅去除查询输入中的停用词# 什么是停用词,影响? 如何处理停用词? 还有其它的处理思路? * 3.4 词干提取 词干提取 自然语言的表达能力在于,可以不同方式表达同一观点 但,对基于匹配的检索,成为一个问题 故,很多技术允许搜索引擎按照语义(而非机械)匹配相关文档 词干提取(stemming) :获得一个词不同变形之间关系的过程! 如:swam,swimming,swim等?归结为词干swim 词干提取方法(智能化) 法一:规则演算方法 最简单的(英文)仅处理后缀”s”,复杂一点的处理后缀ing和ed等 20世纪70s的经典方法:Porter stemmer(分多步,每步处理不同后缀,P.56) 法二:基于词典方法 采用一个词典来存储相关词的列表 (如同义词表,适合中文) (人工创建,甚至相关词可不相似,如:is,was,be) 法三:规则与词典结合方式 经典方法(1993):Krovetz stemmer (英文词典+手动生成例外列表): 先确定词是否在词典中;不在时使用一个通用的变形和派生后缀列表,逐个检查这个词;如果找到匹配后缀,那么从这个词删除后缀后,再次检查这个词是否在词典中 (可反复这个过程) # 这些方法的处理效果如何? 图4-6 什么是词干提取,重要吗? 如何提取词干? * 图4-6:Krovetz等方法的处理效果例示 P.58 处理更合理! * 3.5 短语和n元串 短语的重要性 许多提交给搜索引擎的查询都是两、三个词的短语,如black sea 一般地,包含短语的文档比仅包含短语中词的文档更相关 短语比单个词更准确,歧义也更少 短语使用中的问题 难点:短语对检索的影响非常复杂: 文档应该确切地包含整个短语(如fishing supplies), 还是在同一段落/文档中包含其中的词干(如fish,fishing,supplies )? 如何识别短语(智能化) 一般地,采用句子语法结构来识别 使用最频繁的是名词短语,可用词性标识器来分析: 通过上下文识别的方法,或基于统计或规则的方法(从人工标注样本训练) 注:一般的词性标记有:NN-单数名词,NNS-复数名词,VB-动词,CC-连词, 等 (图4-7) 其它方式:不是为短语建索引,仅在索引中存储词位置,处理查询时才利用位置信息识别短语(可不局限于紧邻的词语,判断在一个特定窗口中) 表4-9给出一