一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种汽车配件名称分词方法和系统与流程

2022-05-06 11:20:59 来源:中国专利 TAG:


1.本发明属于计算机技术领域,具体涉及一种汽车配件名称分词方法和系统。


背景技术:

2.在汽车配件领域,通常需要通过一个配件商品的名称来确定这个商品是属于哪个类别的配件。例如,配件生产厂家都会提供一个他们生产的汽车配件列表,但是不同的厂家会有他们自己的汽车配件命名风格。所以,对于同一个汽车配件商品,可能会有多个名称和它对应。而一个汽车配件erp系统的其中一个目标就是整合不同来源的数据,并将它们转换到一个统一而标准的系统当中。对于不同来源的配件商品名称,汽车配件erp系统需要创建一个标准的汽车配件类别库,并将每一个配件商品名称对应到一个标准的配件类别。
3.而汽车配件商品名称的一个特点是商品名称主要是由短文本构成。在一个由几百万配件商品名称构成的样本中,名称在十个字以内的占了总数的80%,名称在十二个字以内的占了总数的86%。汽车配件商品名称的简短的这一特点也确定了在汽车配件商品名称中并没有太多的上下文可以参考。
4.对汽车配件商品名称进行自然语言处理的主要目标是将商品名称分配到一个标准的配件类别中。而要实现这个目标,一个关键的步骤就是对汽车配件商品名称进行准确的分词。常用的中文分词软件例如结巴分词并不能对汽车配件商品名称进行准确的分词,因为这些商品名称中包含了汽车配件领域特有的专业名词,例如“空气滤清器”,“减震器”,“点火线圈”等。
5.为此,需要提出了一个适用于汽车配件领域对汽车配件商品名称进行分词的方法和系统。使用分词方法对汽车配件商品名称进行准确的分词,从而为汽车配件商品的准确分类提供基础。


技术实现要素:

6.为解决汽车配件商品名称的准确分词问题,本发明提供了一种汽车配件名称分词方法和系统,采用递归的方法对短文本进行分词,通过一个配件名的包含关系图来保存分词结果,实现对汽车配件商品名称进行准确的分词。
7.本发明采用以下技术方案实现:
8.一种汽车配件名称分词方法,包括以下步骤:
9.一、创建配件名列表
10.人工标注创建配件名列表;
11.二、创建包含关系图
12.对创建的配件名列表按配件名长度排序,并创建一个初始状态为空的已处理的配件名列表;对已排序的配件名列表中每个配件名执行以下操作:
13.寻找包含关系;生成有向无环图;设置权重,根据动态规划算法在所有路径中寻找最优路径,更新包含关系图,得到执行的配件名的分词结果;
14.将当前执行的配件名加入到已处理的配件名列表,并将已排序的配件名列表中全部配件名进行一个循环,完成配件名的包含关系图创建;
15.三、使用包含关系图
16.使用创建后的配件名的包含关系图对配件商品名称进行分词。
17.作为本发明的进一步方案,所述人工标注创建配件名列表时,由本领域的专家手动标注或提取出来,一个配件名必须对应到一个汽车配件类别,并且一个配件名中的所有词都是和汽车配件有关的。
18.作为本发明的进一步方案,所述配件名列表中配件名由两个或两个以上的字组成,且一个配件名对应一个汽车配件类别。
19.作为本发明的进一步方案,创建配件名的包含关系图之前,对创建的配件名列表按配件名长度排序的方法为:对创建的配件名列表按配件名长度由短到长排列。
20.作为本发明的进一步方案,寻找包含关系时,对于当前循环到的配件名,在已处理的配件名列表中查找包含当前循环到的配件名的所有配件名,并标记为当前循环到的配件名的子列表,包括以下步骤:
21.获取已排序的配件名列表中当前执行的配件名,判断当前执行的配件名的长度;当前执行的配件名长度为2时定义为基础配件名并添加至已处理配件名列表;当前执行的配件名长度大于2时,在已排序的配件名列表中查询包含所述当前执行的配件名的所有配件名,生成所述当前执行的配件名的子列表。
22.作为本发明的进一步方案,已排列的长度由短到长的配件名列表中,配件名长度为2的基础配件名添加至已处理配件名列表,在长度大于2的配件名执行时,已处理配件名列表中已包含所有的长度为2的配件名,在已包含所有的长度为2的配件名的已处理配件名列表中查找包含当前循环到的长度大于2的配件名的所有配件名。
23.作为本发明的进一步方案,生成有向无环图时,根据生成的配件名的子列表生成一个有向无环图,包括以下步骤:
24.对当前执行的配件名的子列表中配件名的每个字设置一个id,并在每个配件名的结尾添加一个id作为结束标识;将配件名中的id作为有向无环图的点,子列表中的每个配件名作为当前执行的配件名的有向无环图中的一个边,构建生成所述当前执行的配件名的有向无环图。
25.作为本发明的进一步方案,设置权重为对生成的有向无环图中每条边设置权重,包括以下步骤:
26.根据单调递减函数按顺序对当前执行的配件名中的每个字设置权重,并获得包含当前执行的配件名中所有字的权重平均值;
27.获得的权重平均值与对应配件名设置的长度权重值的计算结果作为总权重。
28.作为本发明的进一步方案,动态规划算法在所有路径中依据总权重寻找最优路径,总权重最高的路径为最优路径,其中,一条路径的总权重为该路径所包含的所有边的权重之和。
29.作为本发明的进一步方案,更新包含关系图时,动态规划算法计算出最优路径后,得到当前执行的配件名的分词结果,将分词结果保存在包含关系图中;其中,配件名的权重与配件名的长度成正比关系。
30.作为本发明的进一步方案,使用包含关系图时,对配件商品名称进行分词的步骤为:
31.获取一个给定的配件商品名称,通过寻找包含关系寻找包含于配件商品名称中的所有配件名,通过生成有向无环图生成给定的配件商品名称的有向无环图,通过设置权重来设置有向无环图中各条边的权重,通过动态规划算法寻找给定的配件商品名称的最优路径,得到的最优路径为给定的配件商品名称的分词的结果。
32.本发明还包括一种汽车配件名称分词系统,所述汽车配件名称分词系统采用前述汽车配件名称分词方法对汽车配件商品名称进行分词,所述汽车配件名称分词系统包括配件名列表创建模块、包含关系图创建模块和包含关系图使用模块。
33.所述配件名列表创建模块用于通过人工标注方式创建配件名列表。
34.所述包含关系图创建模块用于对按配件名长度排序的配件名列表中每个配件名执行寻找包含关系,生成有向无环图,设置权重,根据动态规划算法在所有路径中寻找最优路径,更新包含关系图,得到执行的配件名的分词结果的操作,还用于将当前执行的配件名加入到创建的一个初始状态为空的已处理的配件名列表中,并将已排序的配件名列表中全部配件名进行一个循环,完成配件名的包含关系图创建。
35.所述包含关系图使用模块用于使用创建后的配件名的包含关系图对配件商品名称进行分词。
36.本发明还包括一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现汽车配件名称分词方法的步骤。
37.本发明还包括一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现汽车配件名称分词方法的步骤。
38.本发明提供的技术方案,具有如下有益效果:
39.本发明的汽车配件名称分词方法和系统,使用了包含关系图将分词结果保存在一个图的结构中,不仅完成了中文分词,而且将分词结果中蕴含的汽车配件领域知识也保存起来,为创建汽车配件领域的知识图谱提供了重要的知识来源。当包含关系图和其它知识结合在一起时将可以自动生成新的知识和关系。而且,配件名的分词结果是保存在包含关系图中的,可以同时得到包含关系图和标准配件类别的对照关系。
40.本发明的汽车配件名称分词方法和系统,还通过包含关系图同时定义了配件名之间的层级关系,大大降低了因为配件名的组合的多样性和不确定性而造成的分词错误的可能性,可以提高中文分词的准确性。
41.本发明的汽车配件名称分词方法和系统,通过包含关系图还可以提高中文分词的效率。当包含关系图中积累越来越多的配件名时,大部分常见的配件名的分词结果都已经保存在包含关系图中,当相同的配件名再次出现时,就可以通过包含关系图的有向边直接找到分词的结果。而包含关系图的有向边是可以保存在字典数据结构中的,所以分词结果将以常数级的时间复杂度返回,提高了中文分词的效率。
附图说明
42.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
43.图1为本发明实施例的一种汽车配件名称分词方法的流程图。
44.图2为本发明实施例的一种汽车配件名称分词方法中配件名的id示意图。
45.图3为本发明实施例的一种汽车配件名称分词方法中生成有向无环图的五条边的示意图。
46.图4为本发明实施例的一种汽车配件名称分词方法中计算最优路径的示意图。
47.图5为本发明实施例的一种汽车配件名称分词系统的系统框图。
具体实施方式
48.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
49.本发明提供的一种汽车配件名称分词方法和系统,采用递归的方法对短文本进行分词,通过一个配件名的包含关系图来保存分词结果。在本发明中,分词算法可以分为两大步,第1步是创建配件名的包含关系图,第2步是使用配件名的包含关系图。通过这这两大步骤实现对汽车配件商品名称进行准确的分词。以下将结合具体实施例加以说明。
50.如图1所示,本发明的一个实施例提供一种汽车配件名称分词方法,该方法对汽车配件商品名称进行分词,该方法包括如下步骤:
51.s1、创建配件名列表。
52.在本实施例中,通过人工标注方式创建配件名列表。一般都是由该领域的专家手动标注或提取出来。
53.为避免单字的配件名存在歧义,一个配件名必须对应到一个汽车配件类别,并且一个配件名中的所有词都是和汽车配件有关的。本实施例中,所有的配件名都是由两个或两个以上的字组成,且一个配件名对应一个汽车配件类别,从而避免存在很多歧义。因此,所有的单个的字均不作为配件名使用。
54.在本实施例中,对配件名定义时,一个配件名必须对应到一个汽车配件类别,并且一个配件名中的所有词都是和汽车配件有关的。而在本实施例应用于对汽车配件商品名称进行分词时,配件商品名称中可以包含一些和汽车配件无关的信息。例如:
[0055]“上汽集团生产的发动机”可以是一个配件商品名称,但在定义时,“上汽集团生产的发动机”不能成为一个配件名,因为它包含了很多和汽车配件无关的信息。上例中,“上汽集团”,“生产”和“的”不是配件名,而“发动机”是配件名。所以一个配件商品名称有可能包含配件名和一些非配件名的词汇,当然一个配件商品名称可以仅包含配件名。
[0056]
另外,配件名中也有包含关系,例如“前轮”,“轴承”和“前轮轴承”都是配件名,但“前轮轴承”中包含了前两个配件名。“前轮轴承”即“前轮的轴承”是“轴承”的一个更细的分类。需要注意的是,在配件名中也经常包含非配件名的词汇。例如“前刹车片”是一个配件名,它包含了“刹车片”这个配件名,因为“前刹车片”是“刹车片”的一种,但是“前刹车片”中也包含了“前”这个非配件名的词汇。
[0057]
需要特别说明的是,本发明使用的编程语言是python。程序使用了并行处理的函数concurrent.futures.processpoolexecutor在4核处理器上并行执行。而且,获取的配件名列表保存在关系型数据库中,配件名列表中不包含重复的配件名。
[0058]
s2、创建包含关系图。
[0059]
在本发明实施例中,创建配件名的包含关系图之前,对创建的配件名列表按配件名长度排序的方法为:对创建的配件名列表按配件名长度由短到长排列。
[0060]
对创建的配件名列表按配件名长度排序,并创建一个初始状态为空的已处理的配件名列表。
[0061]
原因在于,在完成配件名列表标注后,需要创建一个配件名的包含关系图来保存分词结果。在这之前,由于配件名列表中可能包含几万个到几十万个不重复的配件名,需要对标注的配件名列表按配件名长度由短到长排列。同时,创建一个已处理的配件名列表,这个已处理的配件名列表的初始状态是空的。
[0062]
在对已排序的配件名列表进行一个循环时,对已排序的配件名列表中的每个配件名创建包含关系图后在加入到创建的已处理的配件名列表中。
[0063]
在本实施例中,对已排序的配件名列表中每个配件名执行以下操作:
[0064]
寻找包含关系;生成有向无环图;设置权重,根据动态规划算法在所有路径中寻找最优路径,更新包含关系图,得到执行的配件名的分词结果。
[0065]
将当前执行的配件名加入到已处理的配件名列表,并将已排序的配件名列表中全部配件名进行一个循环,完成配件名的包含关系图创建。
[0066]
具体的,在创建配件名的包含关系图时,第1步为寻找包含关系。
[0067]
寻找包含关系时,对于当前循环到的配件名,在已处理的配件名列表中查找包含当前循环到的配件名的所有配件名,并标记为当前循环到的配件名的子列表,包括以下步骤:
[0068]
获取已排序的配件名列表中当前执行的配件名,判断当前执行的配件名的长度;当前执行的配件名长度为2时定义为基础配件名并添加至已处理配件名列表;当前执行的配件名长度大于2时,在已排序的配件名列表中查询包含所述当前执行的配件名的所有配件名,生成所述当前执行的配件名的子列表。
[0069]
其中,已排列的长度由短到长的配件名列表中,配件名长度为2的基础配件名添加至已处理配件名列表,在长度大于2的配件名执行时,已处理配件名列表中已包含所有的长度为2的配件名,在已包含所有的长度为2的配件名的已处理配件名列表中查找包含当前循环到的长度大于2的配件名的所有配件名。
[0070]
在本实施例中,对于已排序的配件名列表中当前循环到的配件名(记为oe_name)作为当前执行的配件名,在已处理的配件名列表中找到包含于oe_name的所有配件名,这些配件名记为一个子列表sub_names。当oe_name的长度为2时,不包含其他配件名,所以sub_names将为空列表。当一个配件名不包含任何其他配件名时,将其定义为基础配件名。因此,在本实施例中,所有的长度为2的配件名都是基础配件名。当oe_name是基础配件名时,其不具备任何包含关系,直接将其加入已处理的配件名列表即可。
[0071]
当oe_name的长度为大于2时,可能包含其他配件名,这时sub_names列表不为空。例如,当oe_name为“前轮轴”时,已处理的配件名列表已包含所有的长度为2的配件名。在已处理的配件名列表中可以找到“前轮”和“轮轴”两个配件名包含于“前轮轴”。因此sub_names列表为[“前轮”,“轮轴”]。
[0072]
在第1步中,在找到包含于oe_name的所有配件名时,使用了trie数据结构来提高
字符串查找的速度。其中,trie是一个前缀树结构。将在已处理的配件名列表中的所有配件名插入到trie结构中。在循环的查找oe_name字符串的子字符串时,trie的前缀树结构可以将循环查找的速度提高将近10倍。
[0073]
第2步为生成有向无环图。
[0074]
根据包含关系生成所述当前执行的配件名的有向无环图时,对当前执行的配件名的子列表中配件名的每个字设置一个id,并在每个配件名的结尾添加一个id作为结束标识;将配件名中的id作为有向无环图的点,子列表中的每个配件名作为当前执行的配件名的有向无环图中的一个边,构建生成所述当前执行的配件名的有向无环图。
[0075]
在本实施例中,根据第1步中sub_names列表生成一个有向无环图(dag)。首先为配件名中的每个字设置一个id,用每个字在字符串中的索引作为其的id,例如“前轮轴”的各个字的id分别是0,1,2,并且在每个配件名的结尾添加一个表示结束的id,这时“前轮轴”这个配件名的id列表为[0,1,2,3],其中id=3代表的是配件名的结束标识。这些id将会作为有向无环图的点,也就是说这个有向无环图有4个点:0,1,2,3。
[0076]
参见图2所示,图中,0,1,2,3是有向无环图的四个点。“前轮”是有向无环图的一个有向边(图中箭头表示有向边方向),其从“前”指向“轮”的下一个字“轴”。
[0077]
根据第1步可知,“前轮轴”的sub_names列表为[“前轮”,“轮轴”],sub_names列表中的每个配件名将成为有向无环图中的一个边。例如,“前轮”将表示为(0,2)因为“前轮”将“前”(id=0)连接到了“轴”(id=2),而“轮轴”将表示为(1,3)因为“轮轴”从“轮”(id=1)连接到了oe_name字符串结束(id=3)。参见图3所示,有向无环图的五条边:“前轮”,“轮轴”,“前”,“轮”,“轴”。
[0078]
需要说明的是,以上的定义只是将文本转换为有向无环图的其中一种形式,而其他任何的有效转换形式都是可以的。
[0079]
构建有向无环图的目的是要找到从oe_name字符串开始到结束的一条路径。但是在上例中,没有办法从现有的两条边(0,2)和(1,3)中找到一条从开始(id=0)到结束(id=3)的路径。为了保证从oe_name开始到结束的路径一直都是存在的,在sub_names列表中加入了oe_name的单字序列:[“前”,“轮”,“轴”]。这时sub_names列表变为[“前轮”,“轮轴”,“前”,“轮”,“轴”],用id表示的有向无环图的边为:[(0,2),(1,3),(0,1),(1,2),(2,3)]。这时,通过整个oe_name字符串的路径就很容易找到,例如[(0,2),(2,3)]代表的是[“前轮”,“轴”],[(0,1),(1,3)]代表的是[“前”,“轮轴”]。但问题是,需要在这些路径中找到一条最优的路径。为了达到这个目标,需要为有向无环图的每条边添加一个权重。
[0080]
第3步为设置权重,为有向无环图的每条边设置一个权重。
[0081]
在对生成的有向无环图中每条边设置权重时,根据单调递减函数按顺序对当前执行的配件名中的每个字设置权重,并获得包含当前执行的配件名中所有字的权重平均值;获得的权重平均值与对应配件名设置的长度权重值的计算结果作为总权重。
[0082]
在第2步完成以后,会将创建好的配件名的包含关系图保存在关系型数据库中。当需要使用包含关系图时,会从关系型数据库中加载数据,并将加载好的包含关系图放在内存中。
[0083]
在本步骤中使用包含关系图进行分词时,通过一个递归函数去查找包含关系图,得到细粒度的分词结果。
[0084]
根据第2步可知:sub_names列表中的元素分为两类。一类是长度大于等于2的词,定义为基础配件名,另一类是长度为1的单字序列。而本实施例中,忽略长度为1的单字序列。因此,只需考虑oe_name分词结果中长度大于等于2的文本即可确定oe_name的类别。由于单字序列在分词过程中只起到辅助作用,因此,为每个单字设置一个几乎可以忽略不计的权重,例如:将权重设置为1
×
10-10
,以在最后的分词结果中,只关心长度大于等于2的词,其他的长度为1的单字都忽略不计。
[0085]
在本实施例中,对于长度大于等于2的词,并没有用词在语料库中出现的频率作为权重,而是用另外的两个指标。如上文所述,配件商品名称的一个特点就是简短,而且是直接的描写了配件商品本身。根据这一特点,假设在配件商品名称中越靠近右边的字越重要。因为配件商品名称的左边可能是一些描写商品的形容词,而在越右边越有可能是代表商品本身的名词。
[0086]
因此,对于oe_name中包含的字,用一个单调递减的函数按从右到左的顺序给每个字设置权重。例如当oe_name为“前轮轴”时,每个字的权重可能是“前”=0.2,“轮”=0.6,“轴”=1.0。这时,当一个词包含多个字时,取其所包含的所有字的权重平均值,例如“前轮”的权重为(0.2 0.6)/2=0.4,“轮轴”的权重为(0.6 1.0)/2=0.8。设置权重的另外一个指标是词的长度,词的长度越长,权重越高。例如,可以将刚计算好的词的权重乘与词的长度的λ次方得到词的最后权重,其中λ是一个大于1的数。当λ=2时,“前轮”的权重为0.4
×2λ
=1.6,“轮轴”的权重为0.8
×2λ
=3.2。再次强调的是以上的两个计算权重的指标只对长度大于等于2的词有效。所以,对于sub_names列表中的词[“前轮”,“轮轴”,“前”,“轮”,“轴”]最后的权重分别是[1.6,3.2,1
×
10-10
,1
×
10-10
,1
×
10-10
]。
[0087]
第4步为利用动态规划算法在有向无环图中找到最优的路径。
[0088]
在本实施例中,sub_names列表中的元素的权重设置好之后,就可以用动态规划算法在有向无环图中找到最优的路径。动态规划算法作为已知算法在此不再赘述。需要说明的是,动态规划算法是从右向左寻找最优路径的,而且一条路径的总权重是其所包含的所有边的权重之和。动态规划算法将在所有路径中找到总权重最高的那条路径。
[0089]
参见图4所示,采用动态规划算法计算出最优路径:“前”,“轮轴”。
[0090]
第5步为更新包含关系图。
[0091]
在本实施例中,采用动态规划算法计算出最优路径后,就得到了oe_name的分词结果。在上例中,最优路径是[(0,1),(1,3)],代表了[“前”,“轮轴”],这时的路径总权重为3.2 1
×
10-10
。接下来,将分词结果保存在包含关系图中。如上文所述,将不考虑分词结果中的单字。所以,对于分词结果[“前”,“轮轴”],只保留[“轮轴”]。对于这个oe_name,得到的结论是“前轮轴”配件名包含“轮轴”配件名。因此,需要将包含关系插入到包含关系图中。
[0092]
在本实施例中,包含关系图的初始状态是空的。配件名代表了包含关系图的点。不需要保存点的信息。用一个关系列表即可表示包含关系图的边。关系列表被初始化为空列表。规定一个配件名最多可以包含两个子配件名,例如“空调滤清器”配件名包含了“空调”和“滤清器”两个子配件名,而且两个子配件名是有顺序的,“空调”在左边而“滤清器”在右边。采用(“空调滤清器”,(“空调”,“滤清器”))的数据结构代表关系列表中的一个元素,其含两个有向边,一个边是“空调滤清器”和“空调”的包含关系,另一个是“空调滤清器”和“滤清器”的关系。因此,上例的“前轮轴”和“轮轴”的包含关系将被表示为(“前轮轴”,(none,“轮轴”)),因为“前轮轴”只包含一个子配件名,其的左边的子配件名被设为空(none)。
[0093]
由于在第1步中的配件名列表是按词的长度由短到长排序的,而且由第3步可知配件名的权重与配件名的长度成正比关系,所以配件名的包含关系会有一种类似于递归的效果。在一般情况下,在oe_name的分词结果中,oe_name最多只会包含两个子配件名。但是在少数情况下,oe_name的分词结果可能包含三个或三个以上的子配件名,例如配件名a包含[d,c,b]三个子配件名。在这种情况下,拼接配件名c和b为一个新的配件名cb,这样cb和c,b的包含关系表示为(cb,(c,b)),而a和d,cb的包含关系表示为(a,(d,cb))。得到当前执行的配件名的分词结果后,所述当前执行的配件名添加到已处理的配件名列表,并完成对已排序的每个配件名循环执行包含关系图创建。
[0094]
在第5步中,可以用python的字典结构保存包含关系图的有向边。假设配件名a包含b,c两个子配件名,那么可以将其们的关系保存为{a:[b,c]},其中a是字典中的键,数组[b,c]是值,而且数组的第一个元素是左边的子配件名,数组的第二个元素是右边的子配件名。这样在查找包含关系图时,就可以通过配件名快速的找到其的子配件名。
[0095]
因此,当以上的五个步骤完成以后,需要将当前的oe_name加入到已处理的配件名列表。根据以上的五个小步,将第1步中的配件名列表全部循环一遍后,配件名的包含关系图将构造完成。
[0096]
s3、使用包含关系图。
[0097]
在本实施例中,使用创建后的配件名的包含关系图对配件商品名称进行分词。
[0098]
在本实施例中,当配件名的包含关系图创建好之后,使用包含关系图时,可以用来对配件商品名称进行分词。分词的步骤与上述第一至五步的步骤一致。对于一个给定的配件商品名称,采用上述第1步寻找包含于配件商品名称中的所有配件名,采用第2步来生成有向无环图,采用第3步来设置有向无环图中各条边的权重,采用第4步的动态规划算法来寻找最优路径。而找到的最优路径就是分词的结果。有所不同的是不需要采用第5步去更新包含关系图。
[0099]
需要说明的是,采用第一至四步骤完成的分词是比较粗粒度的分词结果,例如“驾驶员座椅靠背加热器”的分词结果为[“驾驶员”,“座椅靠背加热器”]。此时,可以用配件名的包含关系图得到更细粒度的分词结果。
[0100]
因为包含关系图保存着各个配件名的分词结果。可以从包含关系图中搜索得到“座椅靠背加热器”包含“座椅”和“靠背加热器”,而“靠背加热器”包含“靠背”和“加热器”,所以得到的最后的分词结果为[“驾驶员”,“座椅”,“靠背”,“加热器”]。
[0101]
本发明的汽车配件名称分词方法,使用了包含关系图将分词结果保存在一个图的结构中,不仅完成了中文分词,而且将分词结果中蕴含的汽车配件领域知识也保存起来,为创建汽车配件领域的知识图谱提供了重要的知识来源。当包含关系图和其它知识结合在一起时将可以自动生成新的知识和关系。而且,配件名的分词结果是保存在包含关系图中的,可以同时得到包含关系图和标准配件类别的对照关系。而且,配件名的分词结果是保存在包含关系图中的,可以同时得到包含关系图和标准配件类别的对照关系,可以提高中文分词的准确性以及中文分词的效率。
[0102]
如图5所示,在本发明的又一实施例提供了一种汽车配件名称分词系统,对汽车配件商品名称进行分词,该系统包括配件名列表创建模块100、包含关系图创建模块200和包
含关系图使用模块300。
[0103]
所述配件名列表创建模块100用于通过人工标注方式创建配件名列表。
[0104]
在本实施例中,所述人工标注创建配件名列表时,由本领域的专家手动标注或提取出来,一个配件名必须对应到一个汽车配件类别,并且一个配件名中的所有词都是和汽车配件有关的。
[0105]
其中,所述配件名列表中配件名由两个或两个以上的字组成,且一个配件名对应一个汽车配件类别。
[0106]
所述包含关系图创建模块200用于对按配件名长度排序的配件名列表中每个配件名执行寻找包含关系,生成有向无环图,设置权重,根据动态规划算法在所有路径中寻找最优路径,更新包含关系图,得到执行的配件名的分词结果的操作,还用于将当前执行的配件名加入到创建的一个初始状态为空的已处理的配件名列表中,并将已排序的配件名列表中全部配件名进行一个循环,完成配件名的包含关系图创建。
[0107]
在本实施例中,创建配件名的包含关系图之前,对创建的配件名列表按配件名长度排序的方法为:对创建的配件名列表按配件名长度由短到长排列。
[0108]
所述包含关系图创建模块200在寻找包含关系时,对于当前循环到的配件名,在已处理的配件名列表中查找包含当前循环到的配件名的所有配件名,并标记为当前循环到的配件名的子列表,包括以下步骤:
[0109]
获取已排序的配件名列表中当前执行的配件名,判断当前执行的配件名的长度;当前执行的配件名长度为2时定义为基础配件名并添加至已处理配件名列表;当前执行的配件名长度大于2时,在已排序的配件名列表中查询包含所述当前执行的配件名的所有配件名,生成所述当前执行的配件名的子列表。
[0110]
其中,已排列的长度由短到长的配件名列表中,配件名长度为2的基础配件名添加至已处理配件名列表,在长度大于2的配件名执行时,已处理配件名列表中已包含所有的长度为2的配件名,在已包含所有的长度为2的配件名的已处理配件名列表中查找包含当前循环到的长度大于2的配件名的所有配件名。
[0111]
所述包含关系图创建模块200在生成有向无环图时,根据生成的配件名的子列表生成一个有向无环图,包括以下步骤:
[0112]
对当前执行的配件名的子列表中配件名的每个字设置一个id,并在每个配件名的结尾添加一个id作为结束标识;将配件名中的id作为有向无环图的点,子列表中的每个配件名作为当前执行的配件名的有向无环图中的一个边,构建生成所述当前执行的配件名的有向无环图。
[0113]
所述包含关系图创建模块200中,设置权重为对生成的有向无环图中每条边设置权重,包括以下步骤:
[0114]
根据单调递减函数按顺序对当前执行的配件名中的每个字设置权重,并获得包含当前执行的配件名中所有字的权重平均值;
[0115]
获得的权重平均值与对应配件名设置的长度权重值的计算结果作为总权重。
[0116]
在本实施例中,所述包含关系图创建模块200采用的动态规划算法在所有路径中依据总权重寻找最优路径,总权重最高的路径为最优路径,其中,一条路径的总权重为该路径所包含的所有边的权重之和。
[0117]
所述包含关系图创建模块200在更新包含关系图时,动态规划算法计算出最优路径后,得到当前执行的配件名的分词结果,将分词结果保存在包含关系图中;其中,配件名的权重与配件名的长度成正比关系。
[0118]
所述包含关系图使用模块300用于使用创建后的配件名的包含关系图对配件商品名称进行分词。
[0119]
作为本发明的进一步方案,所述包含关系图使用模块300在使用包含关系图时,对配件商品名称进行分词的步骤为:
[0120]
获取一个给定的配件商品名称,通过寻找包含关系寻找包含于配件商品名称中的所有配件名,通过生成有向无环图生成给定的配件商品名称的有向无环图,通过设置权重来设置有向无环图中各条边的权重,通过动态规划算法寻找给定的配件商品名称的最优路径,得到的最优路径为给定的配件商品名称的分词的结果。
[0121]
其中,汽车配件名称分词系统在执行时采用如前述实施例的一种汽车配件名称分词方法的步骤,因此,本实施例中对汽车配件名称分词系统的运行过程不再详细介绍。
[0122]
在本发明的一个实施例中提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述方法实施例中的步骤:
[0123]
获取人工标注的配件名列表,创建配件名的包含关系图;
[0124]
使用配件名的包含关系图对配件商品名称分词,得到分词结果。
[0125]
在本发明的又一实施例中提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤:
[0126]
获取人工标注的配件名列表,创建配件名的包含关系图;
[0127]
使用配件名的包含关系图对配件商品名称分词,得到分词结果。
[0128]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。
[0129]
综上所述,本发明使用了包含关系图将分词结果保存在一个图的结构中,不仅完成了中文分词,而且将分词结果中蕴含的领域知识也保存起来,这为创建汽车配件领域的知识图谱提供了重要的知识来源。而且当包含关系图和其其知识结合在一起时将可以自动生成新的知识和关系。例如,当将分词好的配件名归类到一个标准的汽车配件类别库时,就得到了配件名和标准配件类别的对照关系。而配件名的分词结果是保存在包含关系图中的,所以同时得到了包含关系图和标准配件类别的对照关系。现在假设配件名a包含子配件名b和c,而配件名x包含子配件名b和y。如果知道配件名c和y都映射到同一个标准配件类别时,就可以推断出配件名a和x也是代表着同一个标准配件类别。
[0130]
本发明中包含关系图同时定义了配件名之间的层级关系,较长的配件名包含较短的配件名。而且一般地,较长的配件名会有更高的权重,例如“空调滤清器”的权重要大于“空调”和“滤清器”两个配件名的权重之和。所以,动态规划算法将会更倾向于选择较长的配件名而不是许多短的配件名的组合。这样就大大降低了因为配件名的组合的多样性和不确定性而造成的分词错误的可能性。也就是说,包含关系图可以提高中文分词的准确性。
[0131]
本发明中包含关系图还可以提高中文分词的效率。当包含关系图中积累越来越多的配件名时,大部分常见的配件名的分词结果都已经保存在包含关系图中,当相同的配件名再次出现时,就可以通过包含关系图的有向边直接找到分词的结果。而包含关系图的有向边是可以保存在字典数据结构中的,所以分词结果将以常数级的时间复杂度返回。
[0132]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献