发明内容
本发明的目的是为了解决知识管理系统中,在缺乏标注文本集合的条件下,实现用户自定义分类管理知识的问题,提出了一种基于词匹配的用户自定义的知识分类方法。本方法绕过了训练文本集合标注的难题,通过用《同义词词林》扩展用户自定义关键词,利用Wu-Manber多模式匹配算法来快速匹配关键词,根据关键词在文档中的命中率来判断分类类别。
为实现上述目的,本发明所采用的技术方案如下:
步骤一、对知识管理系统中相关定义进行说明,具体如下:
定义1:知识管理系统中每个具体分类称为子类,记为c;
定义2:用户为每个子类制定的专属一系列词组称为子类关键词,记为keys,单个词记为key;关键词集和记为KEYS;
定义3:通过《同义词词林》对子类关键词keyi(i=0,1,2…n)进行同义词扩展,得到keyi(i=0,1,2…n)的同义词集合E{keyi}(i=0,1,2…n),所有子类关键词E{keyi}(i=0,1,2…n)的合并称为子类扩展关键词,记为E(keys)。其中,i表示关键词的下标,n表示子类中关键词的个数;
定义4:若干个包含关键词的子类组成一套完整的分类标准,称为一个类组,记为C;要求文档集合中的所有文档按不同类组进行分类,因此在一个类组中文档集合中每个文档只能属于至多一个子类,但是可以属于其他类组中的子类;
例如,C
1{c
11,c
12,c
13}和C
2{c
21,c
22,c
23}是系统中的两个类组,文档d
j(j=0,1,2…m)只能同时属于子类
或者属于子类
二者之一;其中,j表示文档的下标,m表示文档集合中的文档数;
定义5:在给定文档集合D{d1,d2…di…dm},其中,i代表文档下标,m代表文档集合总数量;
步骤二、用户自定义一个类组C{c1,c2…ci…cn},其中,i表示子类的下标,n表示类组包含的子类数;
步骤三、为每个子类ci添加自定义的子类关键词keysi;
步骤四、用《同义词词林》对每个子类关键词keysi进行扩展,得到子类ci扩展子类关键词E{keysi};
步骤五、把类组C所有子类c
i的扩展子类关键词E{keys
i}合并为关键词集合
其中
代表关键词集合中下标为h的关键词项,K
h代表关键词,其后面()中的c表示关键词K
h包含在子类c中,s
h代表包含关键词K
h的子类数;t代表关键词集合元素数;
步骤六、应用Wu-Manber多模式匹配算法统计一组关键词keys在文档d中出现次数;首先要对模式串的集合进行预处理,预处理阶段将建立三个表格:SHIFT表,HASH表,SHIFT表中存储字符串集合中所有字符在文本中出现时转移距离,HASH表用来存储匹配窗口内尾字符散列值相同的模式串,PREFIX表用来存储匹配窗口内首字符散列值相同的模式串;
步骤七、把关键词集合KEYS看做多模式匹配中的模式串,把文档di看做多模式匹配中的文本串,利用Wu-Manber多模式匹配算法进行关键词匹配,记录匹配成功的关键词来自的子类ci和匹配的位置,每个文档包括标题Title、摘要Abstract和正文Text,统计每个扩展子类关键词E{keysi}在文档di各个位置中出现的次数,分别记为counti{Title}、counti{Abstract}和counti{Text};
Wu-Manber多模式匹配算法原理如下:
假设B=1,S是我们当前正在处理的文本中单个字,并且S映射到SHIFT表。m为最短模式串的长度,从文本串的第m-1个位置开始匹配时。考虑两种情况:
(1)S不在任何一个模式串中出现,即不可能有候选模式串可以匹配成功,将考察的位置向后移动m个字符的距离,于是我们在SHIFT[h(S)]中存放m,其中h(S)代表字符S的散列值。
(2)S在某些模式串中出现,这种情况下,考察那些模式串中S出现的最右位置。假设,S在模式串P1中的q位置出现,且在其他的出现S的模式串中S的位置都不大于q。那么我们应该在SHIFT[h(S)]中存放m-q。
下面描述算法匹配的主要过程:
(1)计算所有模式串中最短的模式串的长度,记为m,并且我们只考虑每一个模式串的前m个字符,即m为匹配窗口的大小。
(2)根据文本当前正考察的m个字符计算其尾字符c散列值h。
(3)检查SHIFT[h(c)]的值,如果SHIFT[h(c)]>0,那么将窗口向右移动SHIFT[h(c)]大小位置,返回第(2)步,否则,进入第(4)步。
(4)从HASH[h(c)]得到以位置为m-1为c的模式串列表,逐个比较直到找到匹配模式串。若文本串匹配结束,则停止。否则,将窗口向右移动1位,返回第(2)步。
步骤八、确定最合适的分类:
假设:在一个文档d中关键词命中率最高的子类为文档最终所属的类别。
其中,
代表最佳分类标号,i代表自定义子类的下标,Count
i表示子类c
i在文档d中的命中率。
由于关键词出现的位置不同会带来不同的效果,应该区分对待。通常知识管理系统中知识文档包含三个部分,分别是标题、摘要和正文。因此,同一个关键词出现在标题中比出现在摘要中要重要,而出现在摘要中要比出现在正文中的关键词要重要。命中率不能仅仅通过文档中关键词出现的总数来衡量,而是出现在不同的位置赋予不同的权重,最终子类ci在一个文档d中的命中率定义如下式。
Counti=α·counti{Title}+β·counti{Abstract}+γ·counti{Text} (2)
其中α,β,γ(α>β>λ)分别为关键词出现在文档d标题、摘要和正文的权重,counti{Title}、counti{Abstract}、counti{Text}分别代表文档d标题、摘要和正文出现关键词的个数。
有益效果
本发明是对针对知识管理系统中特殊条件下的特殊用户需求提出的,是其他现有方法难以实现的,并且取得了较好的效果。特殊的条件是缺乏标注语料,特殊的需求是多维度的用户自定义分类。
具体实施方式
下面结合实施例对本发明做进一步说明。
假设要对文档d(来自凤凰网)进行自定义分类,文档d结构如下。
根据步骤一,进行相关定义;
根据步骤二、假设用户定义类组C{c1,c2,c3},其中,子类c1为交通、子类c2为医药、子类c3为教育;
根据步骤三、为每个子类ci添加自定义的子类关键词keysi,每个子类关键词如下:
子类 |
关键词 |
c1 |
运输;铁路;公路;车辆; |
c2 |
治疗;病人;医院;疾病; |
根据步骤四、用《同义词词林》对每个子类关键词keysi进行扩展,得到子类ci扩展子类关键词E{keysi}。
合并同义词后得到如下子类扩展关键词。
根据步骤五、合并所有子类的关键形成以个总的关键词集合。
根据步骤六、生成SHIFT表、HASH表和PREFIX表。
根据步骤七、利用步骤六的三个散列表,采用Wu-Manber多模式匹配算法,分别对文档d的标题、摘要和正文进行关键词匹配,结果如下。
count{Title} |
0 |
0 |
2(老师:2) |
count{Abstract} |
0 |
2(治疗:1医疗:1) |
2(老师:2) |
count{Text} |
0 |
4(医疗:3医院:1) |
18(老师:13学生:5) |
步骤八、根据公式(2)(其中,α=2,β=1.5,γ=1)计算三个子类的命中率如下,
Count1=α·count1{Title}+β·count1{Abstract}+γ·count1{Text}=2×0+1.5×0+0=0
Count2=α·count2{Title}+β·count2{Abstract}+γ·count2{Text}=2×0+1.5×2+4=7
Count3=α·count3{Title}+β·count3{Abstract}+γ·count3{Text}=2×2+1.5×2+18=25
根据公式(2)可知,文档d属于子类c3。