4.1 标题特征规则撰写
标题特征规则的撰写过程实际上是决定什么样的内容符合标题的过程,也就是依据资源标题的特征进行相应的匹配、对照。尽管DOC、PPT、PDF等富文档文件与HTML等网页文档的候选标题来源有所不同,但其标题的特征基本相同,因此其相关的规则除在来源方面有所区别外,主要的特征基本相同。
(1)纯网页资源的标题特征规则
在网页文档方面,通过对科技监测项目采集到的数万条资源数据进行分析,笔者发现:
①来源于
字段的标题元数据与文档标题匹配的准确率非常高,通过对监测项目中有类似元数据字段的网站进行抽样分析,该字段值为文档标题的准确率达到了100%,尽管拥有此类元数据的网站在科技监测项目中不到10%。
②链入页面上相应的链接文字(即锚点信息)与文档标题匹配的准确率也非常高,如
图1
所示:
在http://apps1.eere.energy.gov/news/页面的新闻列表中给出的链接文字即对应链接如http://energy.gov/news/9923.htm的新闻标题。但链接文字也可能是“full text”、“download pdf”等一类的共性词,因此,在利用链接文字时需要构建相关的停用词库和停用规则。
③最广为人知的网页文档页面上< html >标签内的文本在实际的统计评价中真正能成为文档标题的准确率却不高。因此,该来源的标题重要程度较低。
按照不同来源对网页标题的贡献准确程度,将其进行排序,具体顺序为:< meta name="title" >、anchorText、< title >、URL、
。在实际计算中,同时考虑候选标题的词长(主要指实词的个数)、是否包含停用词、候选标题中的n元词组(不含介词、副词等词)在正文中出现的情况几个方面的因素,形成一系列纯网页资源标题判定规则。鉴于分析中发现< meta >元数据段和anchorText内容对标题的高准确度指示情况,在实际处理过程中,仅对< title >标签值、URL、
几个来源的候选标题进行n元切分处理以获取其相应的n元词组,从而计算n元词组在正文中的出现情况。另外,为了避免这种排除法带来候选标题的漏选问题,在经过层层排除还无法确定标题时,可基于候选标题中n元词组在正文中出现的频次来确定最终标题。具体判定规则如下:
Declare 网页标题 title;
Declare 停用词表 stopWordSet;
Declare 停用标号集 stopTabSet;
Declare 候选标题的n元词组分别为 tagTitleGram,urlGram,tagHGram;
If (存在
&& content值不为空,且content内容长度不小于10字符){
Title=
中content里的内容;
} else If (存在
&& content值不为空,且content内容长度不小于10字符){
Title=
中content里的内容;
} else If (anchorText非空,其分词个数(实词)不少于3个且不在stopWordSet中){
Title=
中content里的内容;
}else If (< title >标签非空,其分词个数(实词)不少于3个且不在stopWordSet中,同一个站点下的不同网页标题不同,tagTitleGram在正文中有出现){
Title=< title >标签值;
} else If (< h1~h6 >标签值循环处理,hn标签值不为空,其分词个数(实词)不少于3个且不在stopWordSet中,不包含stopTabSet,tagHGram在正文中有出现){
Title=< h1~h6 >中最符合规则的标签值;
} else If (url最后一段中取出的不含非正常字符的分词个数(实词)不少于3个且不在stopWordSet中,urlGram在正文中有出现){
Title=url最后一个段落中替换掉非正常字符后的内容;
}else{
title取tagTitleGram、tagHGram、urlGram中在正文中出现频次最多的对应候选标题;
}
(2)富文档文件的标题特征规则
与纯网页资源不同,富文档文件的标题没有相关的标签值可以解析,但是其标题的特征与纯网页资源有共通之处,因此,参考纯网页资源的标题匹配规则,也可以形成类似的富文档文件的标题特征。具体可参见文中的匹配规则,进行相应的修改。
4.2 候选标题的获取
从
表1
中可以看到,候选标题的来源是非常丰富的,不同来源的标题其获取方法也有所不同。具体而言,这些来源可以分为4类进行解析获取:
(1)采集过程中进行解析获取
主要包括链入页面上的锚点文字、URL字段中标出的标题内容两个来源。对于前者,可以通过采集器在采集过程中将链入、链出页面的关系和相应的锚点文字信息进行记录,从而获取到相应的候选标题。对于后者,采集器记录下当前采集页面的URL,撰写相应的解析器,获取最后一个“/”后的所有内容(若URL以“/”结尾,则取倒数第二个“/”后所有内容),并替换其中的非字符编码等内容。
(2)对HTML页面编码进行解析,获取相应候选标题
这种方法主要针对纯网页资源。在解析过程中,可以借助HTMLParser
[
10
]
或Jericho
[
11
]
等分别解析获得< title >、< meta >中的“title”属性、
标签的值,也可以综合加入< font >、< strong >等描述字体、字形等的特征标签对结果进行过滤。
(3)对文本属性进行解析,获取相应候选标题
这种方法主要针对DOC、PPT、PDF等富文档文件,目标是要从其相关的文本属性信息中解析获得相应的标题信息。PDF和PPT两个类型的富文档文件的标题文本属性源,如
图2
所示。
针对这类信息,可以分别利用Apache PDFBox
[
12
]
和Apache POI
[
13
]
两个开源工具进行相应的处理和获取。但是这一来源的信息往往较少,多数情况下该来源值为空。
(4)对正文内容进行解析,获取正文顶部最大字体值
无论是DOC、PPT、PDF等富文档还是HTML页面,正文顶部最大字体且无结束标点符号(如句号等)的单独成段文字通常可能是文档标题。对于DOC、PPT、PDF等富文档文件而言,可以分别利用Apache PDFBox和Apache POI解析获取其首页的内容并从首页内容中按行取出字体中的最大字体内容。对HTML而言,则可以内容块判定的方法确定出主体内容最大的区域,在该区域中依据
等属性特征筛选出最大内容。