首页 百科知识 概念获取子系统

概念获取子系统

时间:2022-02-26 百科知识 版权反馈
【摘要】:统计候选词表中的词汇出现频率。故概念获取应具有用例conceptExtract,包括三个子用例: parseHTML、extractItems(抽词)和extractNewItems。 extractItems(抽词)它是conceptExtract的子用例,将保存起来的反映文献主题的内容进行分词及相关的处理,剔除通用词汇,抽取出叙词本体中不存在的术语
概念获取子系统_多语种叙词本体

10.4 概念获取子系统

概念获取子系统首先要对抓取到的网络信息资源进行处理,抽取出文献主题属性,包括标题、关键词、摘要以及学科导航信息。然后进行中文分词,按照一定的标准抽取出新术语,交由专家评审模块进行专家评审。

10.4.1 功能分析

(1)提取文献的主题属性

爬虫系统所抓取到的网页只是比较粗糙的网页,内容繁杂。并不是所有内容都是我们所需要的。因此我们需要提取里面最有价值的内容。在第7章叙词本体概念获取中已详细分析了我们需要提取的是文献的主题属性,包括标题、关键词、摘要以及学科导航信息。

分析网页的源文件:

<tr…><td…>【篇名】</td>

<td…>…20年可视化发展历程对情报学的影响…</td>

</tr>

<tr><td>【关键词】</td>

<td width=""…>

<a…>可视化</a>;

<a…>信息组织</a>;

<a…>信息检索</a>;

<a…>信息分析</a>;

<a…>信息服务</a>;

<a…>情报学</a>;

<a…>应用</a>;

</td>

</tr>

所有关于标识为篇名,关键词,摘要,学科导航的内容都不是以HTML元素属性的形式呈现,因此按照元素属性来提取信息不可行。只有先解析出所有的文本节点内容,才能够在此基础上提取出所需内容。利用HTMLParse源代码解析出文本节点,然后根据解析出的内容特征,提取出重要的信息。提取结果如图10-13所示。

img130

图10-13 提取关键信息效果图

这样的结果基本上满足了我们的要求。然后我们将针对这些信息进行后续的研究。

(2)分词与新术语的判断

分析上一节所提取的信息,可以得知并不是每一项都需要分词。我们只需要对标题和摘要进行分词。我们利用中科院分词系统ICTCLAS的Java版本对标题和摘要进行分词。但是由于分词系统中所提供的词表都是已经得到广泛应用的词汇,因此并不能够很好地将一些新词汇识别出来。而有些文献所提出的新术语在关键词中已经有所提及。例如在上一例中,分词系统将标题分词的结果如下:

20/m年/q可/v视/vg化/v发展/vn历程/n对/p情报学/n的/b影响/n

其中,可视化在关键词中为一个完整的词,而在标题分词结果中却分别是一个个的词素,并不是一个完整的词。虽然在文献量比较大的情况下,分词系统能够根据统计学意义将可视化分为一个完整的词。但是我们为减少统计学上的误差,所以采取首先处理关键词,找出叙词本体中不存在的术语(可视化),然后再将新词与标题匹配,如果标题中也存在这个词,则记录下该词的出现频率。同样,对摘要进行分析。整个处理过程可以用下面的流程图10-14来表示。

img131

图10-14 新术语提取流程图

通过关键词可以提取出一部分新的术语,但是标题和摘要中可能还会出现其他的一些新术语。所以对关键词中出现的新术语的提取并不等于整个新术语判断的结束,还需要继续对标题、摘要进行分词处理和研究。对标题,摘要分词后会得到处理好的词汇以及词汇的词性标注。由于专业词汇大多数为名词或者动词,因此我们应该将不相干的其他词性的词汇排除在外。而中文中其他的辅助词汇的种类远远多于名词和动词,因此我们直接提取的词性有名形词/ an,名语素/Ng,名词/n,名动词/vn。其他的词性都可以排除在外。如上例中,将可视化提取后,再进行这一步的处理,剩下的词语就只剩下“发展/vn”,“历程/n”,“情报学/n”和“影响/n”。接着,将这些提取出的结果与通用词表进行比较,将通用的词汇排除在外,例如,上一例的“发展”,“历程”以及“影响”都是通用词,这里就应该将其排除掉,最后剩下“情报学/n”一词。再将剩下的词与现有本体进行对比,如果这些术语在本体中不存在,那么就说明该术语为新术语,将其记录在候选词表中,并记录下它出现的频率。注意这里的记录是指,先在候选词表中查找是否已经有该词。如果有,将原有频率加上新频率作为该词的出现频率;如果没有,则记录该词,并直接将此频率作为该词的出现频率。

将所有文献都处理之后,其结果就以候选词表呈现。统计候选词表中的词汇出现频率。按照前一章所提到的方法,如果频率超过5,则说明该词的使用比较广泛,可以将其提取出来分析其关系并递交专家评审。

10.4.2 问题域分析

通过功能分析可以得知,概念获取的过程主要经过了三个阶段:一是对爬虫系统抓取的网页信息资源进行HTML解析,提取出反映文献主题的标题、关键词、摘要和学术导航的内容,并将其保存起来。二是,将保存起来的反映文献主题的内容进行分词及相关的处理,剔除通用词汇,抽取出叙词本体中不存在的术语、出现术语的文章、术语出现的频率,并保存起来。三是对保存了的术语信息做出处理,筛选出出现频率超过阈值的术语信息,并将其保存。故概念获取应具有用例conceptExtract(概念获取),包括三个子用例: parseHTML(HTML解析)、extractItems(抽词)和extractNewItems(抽取新词)。而概念获取的整个过程是系统按设定的周期自行执行的,它是在爬虫系统自动执行之后接着执行的,故system(系统)是概念获取模块的参与者。关于系统如何实现按设定的周期自动执行,在爬虫系统构建一节已详细说明,这里就不赘述了。

1.识别参与者

根据上面的分析,概念获取模块的参与者是system,对其的描述如下:

system描述: system按照设定的运行周期自动执行概念获取的全过程。

2.识别用例

通过分析,概念获取的用例如下:

(1) conceptExtract(概念获取)

对爬虫系统爬取到的网页信息资源进行一系列的分析处理,得到领域内的新词以及其相关信息以供专家评审。

(2) parseHTML(HTML解析)

它是conceptExtract(概念获取)的子用例,用来对爬虫系统爬取到的网页信息资源进行HTML解析,提取出反映文献主题的标题、关键词、摘要和学术导航信息,并将之保存。

(3) extractItems(抽词)

它是conceptExtract(概念获取)的子用例,将保存起来的反映文献主题的内容进行分词及相关的处理,剔除通用词汇,抽取出叙词本体中不存在的术语、出现术语的文章、术语出现的频率,并保存起来。

(4) extractNew Items(抽取新词)

它是conceptExtract(概念获取)的子用例,对保存了的术语信息做出处理,筛选出出现频率超过阈值且不存在于叙词本体中的术语信息,并将其保存。

概念获取模块的用例图如图10-15所示,系统与用例conceptExtract(概念获取)交互,用例conceptExtract(概念获取)包含了用例parseHTML(HTML解析)、extractItems(抽词)和extract-New Items(抽取新词)。

img132

图10-15 概念获取用例图

3.用例的事件流描述

对用例的事件流的描述如下。

img133

img134

该用例可以用如图10-16所示的活动图描述,当爬虫系统爬取网页信息资源的过程结束后,开始启动parseHTML,对抓取到的信

img135

“conceptExtract”(概念获取)活动图

息资源进行HTML解析,提取出反映文献主题的标题、关键词、摘要和学术导航信息。当所有的网页资源处理完成后,则开始启动用例extractItems,将上一过程提取到的反映文献主题的内容进行分词及相关的处理,剔除通用词汇,抽取出叙词本体中不存在的术语、出现术语的文章、术语出现的频率。处理结束后,就开始启动extractNew Items。对抽取到的术语信息做出处理,筛选出出现频率超过阈值且不在叙词本体中的术语信息,即为所需要的新术语及其相关信息。

img136

该用例可用如图10-17所示的活动图来描述,首先获取网页信息资源文件,并保存到集合中。然后循环遍历集合中的各个文件,并对各个HTML文件进行HTML解析等相关处理,提取出反映文献主题的标题、关键词、摘要和学术导航。最后将提取到的信息保存至数据库。

img137

图10-17 “parseHTML”(HTML解析)活动图

img138

img139

img140

该用例可由如图10-18所示的活动图加以描述。其实现过程即为上面用例描述的事件流所描述的过程。

img141

img142

图10-18 “extractItems”(抽词)活动图

img143

该用例可用如图10-19所示的活动图加以描述。首先从数据库中抽取出用例“extractItems”(抽词)抽取到的术语及其相关信息的集合。然后遍历处理该集合中的每条术语信息记录,如果该术语的出现频率达到了工作人员设置的阈值,则认为该术语为领域内的新术语加入到候选词表中。

10.4.3 静态结构模型

1.定义对象类

对象类可以从概念获取的整个过程中识别出来。通过上一节的分析,我们可以看出,HTML解析首先是要获取爬虫系统爬取的网页信息资源,故需要抽象出一类实体TreeInfo用来表示这些HTML文件以及其路径;而HTML解析出的是反映文献主题的标题、摘要、关键词和学科导航,故需要用实体ParseResult来表示;而为实现对资源文件的获取,还需要一个动作类Directory;为实现对资源文件的HTML解析,需要类ParseHtml;为完成用例“parseHTML”(HTML解析)的整个过程,需类HTMLparse;抽词首先要获取HT-ML解析所产生的反映文献主题的标题、摘要、关键词和学科导航,故需要用实体ExtractorContent来表示,而获取的过程涉及对数据库相应表的操作,故需要类ExtractorContentDao来实现与数据库的操作;抽词最后产生的是术语及其相关信息,故需要类Items来表示,而术语及其相关信息需要保存到数据库,故需要类ItemsDao来实现其与数据库的操作;而对反映文献主题的信息进行处理得到术语及相关信息的过程,需要类ItemProcess来实现;抽取新词的过程中,抽取到的新词需要用类New Items来进行表示,其与数据库的操作需要类New ItemsDao来实现;抽取新词过程的实现需要类New ItemProcess;为实现用例conceptExtract(概念获取)的整个过程,需要类conceptExtract。故概念获取模块的类可以识别如下:

img144

图10-19 “extractNew Items(抽取新词)”活动图

(1)类TreeInfo

类TreeInfo用来表示爬虫系统爬取到的网络HTML资源文件以及其路径,其属性如下:

files: List<File>

dirs: List<File>

该类需要有存储和读出文件和路径的功能,故类TreeInfo应该有下述方法:

iterator(): Iterator<File>

addAll(other: TreeInfo)

(2)类ParseResult

类ParseResult是用来表示解析出的反映文献主题的标题、摘要、关键词和学科导航。其私有属性如下:

title: String

keywords: String

abstract: String

navigation: String

为实现对类的私有属性值的设置和读取,应具有相应的setXX()和getXX()方法。通过HTML解析抽取出的反映文献主题的标题、摘要、关键词和学科导航需要保存入数据库中,故类ParseResult还具有saveToDB()的方法。所以类ParseResult的方法如下:

saveToDB()

setTitle(title: String)

setKeywords(keywords: String)

setAbstract(abstract: String)

setNavigation(navigation: String)

getTitle(): String

getKeywords(): String

getAbstract(): String

getNavigation(): String

(3)类Directory

类Directory是用来实现对所要进行HTML解析的网页资源文件的获取。故它具有方法walk(),实现资源获取的过程。所以类Directory的方法如下:

walk(start: String,regex: String): TreeInfo

walk(start: File,regex: String): TreeInfo

walk(start: File): TreeInfo

walk(start: String): TreeInfo

(4)类ParseHtml

类ParseHtml是用来实现对所要进行HTML解析的网页资源文件的HTML解析过程。所以,类应具有TreeInfo类型的属性treeInfo以表示所需要解析的网页资源文件,应具有ParseResult类型的属性parseResult以表示解析后的结果,具有extract()方法以实现解析。故类的属性和方法如下:

treeInfo: TreeInfo

parseResult: ParseResult

extract(): ParseResult

getTreeInfo(): TreeInfo

setTreeInfo(treeInfo: TreeInfo)

getParseResult(): ParseResult

setParseResult(parseResult: ParseResult)

(5)类ExtractorContent

类ExtractorContent用来对抽词时所需要的反映文献主题的标题、摘要、关键词和学科导航进行表示。故类应具有的属性及方法如下:

title: String

keywords: String

abstract: String

navigation: String

setTitle(title: String)

setKeywords(keywords: String)

setAbstract(abstract: String)

setNavigation(navigation: String)

getTitle(): String

getKeywords(): String

getAbstract(): String

getNavigation(): String

(6)类ExtractorContentDao

类ExtractorContentDao用来实现对数据库中的反映文献主题的标题、关键词、摘要、学科导航的读取操作。故ExtratorContentDao的方法如下:

getExtractorContentById(id: Int): ResultSet

getExtractorContent(): ResultSet

(7)类Items

类Items用来表示抽词产生的术语、出现该词的文献、术语出现的频率。故类应具有属性item,ecids,frequence以及用来标志该条记录的属性id。类具有的属性如下:

id: int

item: String

ecids: String

frequency: float

为实现对私有属性的基本读取和写入操作,类还具有以下方法:

getId(): int

getItem(): String

getEcids(): String

getFrequency: float

setId(id: int)

setItem(items: String)

setEcids(ecids: String)

setFrequency(frequency: float)

(8)类ItemsDao

类ItemsDao用来实现对数据库中存储的抽词产生的术语及相关信息的添加记录、更新记录、查询记录等操作。该类的属性如下:

sql: String

表示用以操作数据库中数据的SQL语句。

connectDB: ConnectionToDB

connectDB是ConnectionToDB类的对象,具有实现对数据库中的数据进行增、删、改、查操作的方法。用在此类中用来辅助实现对Items的基本数据库操作。

items: Items

表示要执行数据库操作的Items对象。

因该类要实现对Items的增加、更新和查询操作,故类具有以下方法:

insertItems(items: Items)

updateItems(items: Items)

getItemsByItem(items: String): ResultSet

getAllItems(): ResultSet

getItemsByEcid(ecid: String): ResultSet

(9)类ItemProcess

类ItemProcess用来实现对HTML解析网页资源信息所获取的反映文献主题的信息进行处理,得到术语及相关信息。故类Item-Process的方法有:

processItem()

(10)类New Items

类New Items用来表示抽取到的新词的术语名、出现该词的文献、术语出现的频率。故类应具有属性item,ecids,frequence以及用来标志该条记录的属性id。类具有的属性如下:

id: int

item: String

ecids: String

frequency: float

为实现对私有属性的基本读取和写入操作,类还具有以下方法:

getId(): int

getItem(): String

getEcids(): String

getFrequency: float

setId(id: int)

setItem(items: String)

setEcids(ecids: String)

setFrequency(frequency: float)

(11)类New ItemsDao

类New ItemsDao用来实现对New Items的数据库操作。包括New Items记录的添加和New Items的查询。故类的属性和方法如下:

sql: String

表示用以操作数据库中数据的SQL语句。

connectDB: ConnectionToDB

connectDB是ConnectionToDB类的对象,具有实现对数据库中的数据进行增、删、改、查操作的方法。用在此类中用来辅助实现对Items的基本数据库操作。

insertNew Items(items: New Items)

getAllNew Items()

(12)类New ItemProcess

该类实现从Items记录集中抽取New Items的过程。故具有如下方法:

processNew Items()

(13)类HTMLparse

类HTMLparse是用来实现整个HTML解析的全过程。这个过程包括对存储在磁盘上的网页信息资源的获取和对获取到的文件的HTML解析。故该类应具有以下方法:

parseHTML()

(14)类conceptExtract

类conceptExtract用来实现概念获取的全过程,故应具有以下方法:

conceptExtract()

2.建立类图

识别出了类和类的结构后,通过进一步分析,可识别出类之间的关系,建立类图如图10-20。各类之间具有依赖关系。

img145

图10-20 概念获取类图

3.数据库设计

在概念获取整个过程中,对爬虫系统爬取的网页信息资源按要求进行HTML解析将产生反映文献主题的标题、摘要、关键字、学科导航的信息,而产生的信息应该保存到数据库中,故应建立表extractorcontent以保存信息;从保存了的反映文献主题的信息中按照一定处理流程抽取术语及其相关信息,这些信息也需要保存,故应建表items以保存相关信息,包括术语名、出现术语的文献、出现的频率;通过对抽取出的术语按照规定的处理过程进行处理,抽取出叙词本体中不存在的,出现频率超过阈值的术语,将之保存到临时词表,所以需要建表newitems以保存相关信息。所以概念获取涉及的表有: extractorcontent、items、newitems。

(1) extractorcontent(见表10-1)

表10-1 表extractorcontent

img146

(2) items(见表10-2)

表10-2 表item s

img147

(3) newitems(见表10-3)

表10-3 表new item s

img148

10.4.4 动态行为模型

概念获取部分的用例有: conceptExtract(概念获取)、parse-HTML(HTML解析)、extractItems(抽词)和extractNew Items(抽取新词)。对用例实现的过程所涉及的对象及对象之间信息的传递可用顺序图描述如下:

img149

图10-21 conceptExtract(概念获取)时序图

对用例conceptExtract(概念获取)的实现的描述如图10-21。当爬虫系统爬取网页信息资源的过程完成后,用例启动。类ConceptExtract被实例化,并且方法conceptExtract()被调用。在方法体conceptExtract()中,首先实例化类HTMLparse,并调用其方法parseHTML()完成对抽取到的信息资源的HTML解析,抽取出每篇文献中与文献主题相关的信息,包括标题、关键字、摘要和学科导航,并将信息保存至数据库。其次,在完成了所有信息资源的HTML解析之后,类ItemProcess被实例,调用方法processItem(),对抽取到的反映文献主题的信息进行处理,抽取出术语及其相关信息,并将信息保存在数据库中。最后,对所有文献信息的术语处理过程完成后,实例化类New ItemProcess,调用方法processNew Items(),对抽取出的术语及其相关信息进行筛选操作,抽取出其中不存在于叙词本体中并出现频率大于所设置的阈值的术语及其相关信息,作为新术语保存在临时词表中,有待专家评审。

img150

图10-22 parseHTML(HTML解析)时序图

对用例parseHTML(HTML解析)实现的描述如图10-22。用例parseHTML(HTML解析)的实现是用例conceptExtract(概念获取)实现的第一个步骤。当爬虫系统爬取网页信息资源的过程完成后,用例conceptExtract(概念获取)启动,而实质上是用例parse HTML(HTML解析)开始启动。用例启动后,首先实例化类HTMLparse,调用方法parseHTML()实现HTML解析的过程。在parseHTML()的方法体中,首先实例化类Directory,调用方法walk(filePath: String): TreeInfo,并在方法体中调用类TreeInfo的方法addAll(),将爬取到的网页资源文件及其路径保存至TreeInfo对象,并返回。然后实例化类ParseHtml,调用方法setTreeInfo(treeInfo: TreeInfo)为ParseHTML的实例设置treeInfo属性的值,调用方法extract()实现对treeInfo中的资源文件的HTML解析,并创建ParseResult对象,以解析的结果初始化ParseResult对象,返回对象。最后实例化ParseResult对象,调用方法saveToDB()将上一步返回的ParseResult存入数据库。

img151

图10-23 extractItems(抽词)时序图

对用例extractItems(抽词)实现的描述如图10-23。当用例parse-HTML(HTML解析)执行完成时,用例启动。实例化类ItemProcess,调用方法processItem()实现抽词的全过程。在processItem()的方法体中,首先实例化类ExtractorContentDao,调用方法getExtractorContent(),将HTML解析产生并保存到数据库的反映文献主题的信息读取出来,并将数据集ResultSet对象返回。然后调用当前的ItemProcess对象的方法process(),对读取到的暂存在ResultSet对象中的文献信息按照既定流程进行处理,抽取出术语及其相关信息,并以此信息实例化Items对象,返回该对象。最后实例化类ItemsDao,调用方法insertItems(items: Items)将Items对象的属性术语、术语所在文献、术语出现频率保存至相关的数据库。

img152

图10-24 extractNewItems(抽取新词)时序图

对用例extractNew Items(抽取新词)实现的描述如图10-24。当用例extractItems(抽词)完成后,用例extractNew Items(抽取新词)启动。类New ItemProcess被实例化,调用方法processNew Items()实现抽取新词的全过程。在processNew Items()方法体中,首先实例化类ItemsDao,调用方法getAllItems(),将保存在数据库中的术语及其相关信息查询出来,并返回记录集ResultSet对象。然后调用当前的New ItemProcess对象的validFrequence()方法和isExistInOntology()方法分别对记录集ResultSet对象中的术语进行验证,验证出现频率是否达到了所设置的阈值,该术语是否存在于叙词本体中。如果满足了验证条件,则实例化类New ItemsDao,调用方法insertNew Items()将该条术语信息保存至临时新词表中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈