欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2019102088024
申请人: 西安理工大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于规则和词典的地铁设计规范中主体识别方法,其特征在于,按照以下步骤实施:步骤1,利用词典文件构建名词哈希词典索引;

词典文件是从IFC实体类得到,构建名词哈希词典索引采用hash_map数据结构;

步骤2,将待处理《地铁设计规范》文本作为输入文本S1;

步骤3,对输入文本S1进行处理,去除中英文标点符号,生成句子集合S1’;

步骤4,对步骤3得到的句子集合S1’进行逆向最大匹配算法处理,生成第一结果集S2;

步骤5,对步骤3得到的句子集合S1’进行正向最大匹配算法处理,生成第二结果集S3;

步骤6,对步骤4得到的第一结果集S2、步骤5得到的第二结果集S3分别进行规则集匹配,生成地铁设计规范中名词的最终结果集S4,输出该最终结果集S4。

2.根据权利要求1所述的基于规则和词典的地铁设计规范中主体识别方法,其特征在于:所述的步骤3中,具体过程是,将输入文本S1存入数组S1[]中,设定S1[0]为第一个字符;先根据ASCII码值对输入文本S1中的英文标点符号进行识别,并添加预定义的分隔符“/”,初步对输入文本S1进行划分,并以英文标点符号作为划分结点将输入文本S1划分为多个部分;然后根据汉字GB2312编码利用高低区位码进行再次识别,并进行再次划分,并以中文符号作为划分结点,并添加分隔符“/”,最终生成句子集合S1’。

3.根据权利要求2所述的基于规则和词典的地铁设计规范中主体识别方法,其特征在于:所述的步骤4中,逆向最大匹配算法的具体过程如下:

4.1)在经步骤3处理的句子集合S1’中,将句子集合S1’中的句子按照从前往后的顺序,从第一个划分点处获取一个句子;

4.2)若步骤4.1)中获取的一个句子长度小于预设定的最大词长n,n即名词哈希词典中最长词的长度,则将该句作为匹配字段w,执行步骤4.3);

若大于或者等于最大词长n,则从该句的最右侧开始,取最大词长长度的字符串作为匹配字段w,执行步骤4.3);

4.3)查找步骤1中的词典文件,根据哈希索引匹配步骤4.2)中所得的匹配字段w,判断其是否在名词哈希词典中,若匹配成功,则添加分隔符“/”,输出至第一结果集S2中,并将匹配字段w从句子中剔除;

再将剩余句子重复步骤4.2);若不存在,则执行步骤4.4);

4.4)将匹配字段w的最左侧字剔除,用剩下的n-1个字组成的字段作为新的匹配字段w,反复执行步骤4.2);若剔除至单个字还未匹配成功,则添加分隔符“/”并将该字从句子中剔除,直至句子为空;

4.5)对一个句子处理完成后,该句子即从句子集合S1’中剔除,在剩余的句子集合S1’中,按照从前往后的顺序,从第一个划分点处获取一个新句子;

4.6)重复执行步骤4.2)~步骤4.5),直至句子集合S1’为空,最终输出第一结果集S2。

4.根据权利要求3所述的基于规则和词典的地铁设计规范中主体识别方法,其特征在于:所述的步骤5中,正向最大匹配算法的具体过程如下:

5.1)在经步骤3处理得到的句子集合S1’中,将句子集合S1’中句子按照从前往后的顺序,从第一个划分点处获取一个句子;

5.2)若步骤5.1)中获取的一个句子长度小于预设定的最大词长n,则将该句作为匹配字段w,执行步骤5.3);若大于或者等于最大词长n,则从该句的最左侧开始,取最大词长长度的字符串作为匹配字段w,执行步骤5.3);

5.3)查找步骤1中的词典文件,根据名词哈希词典索引匹配步骤5.2)中所得匹配字段w,判断其是否在名词哈希词典中,若匹配成功,则添加分隔符“/”,输出至S3中,并将匹配字段w从句子中去除;

再将剩余句子重复步骤5.2);若不存在,则执行步骤5.4);

5.4)将匹配字段w的最右侧字剔除,用剩下的n-1个字组成的字段作为新的匹配字段w,反复执行步骤5.2;若剔除至单个字还未匹配成功,则添加分隔符“/”并将该字从句子中剔除,直至句子为空;

5.5)对一个句子处理完成后,该句子即从句子集合S1’中剔除,在剩余的句子集合S1’文本中,按照从前往后的顺序,从第一个划分点处获取一个新句子;

5.6)重复执行步骤5.2)~步骤5.5),直至句子集合S1’为空,最终输出第二结果集S3。

5.根据权利要求4所述的基于规则和词典的地铁设计规范中主体识别方法,其特征在于:所述的步骤6中,具体过程如下:

6.1)读取第一结果集S2、第二结果集S3,将第一结果集S2、第二结果集S3分别存入数组S2[]、S3[]中,设定S2[0]、S3[0]均为第一个字符,再将S2[]、S3[]数组中的分隔符所在位置的下标分别存入数组a[]、b[]中;

6.2)循环遍历数组a[]、b[],判断a[]、b[]中的相同下标下的对应的数组元素是否相同,若所有相同下标下的对应数组元素均相同,则执行步骤6.3);

若a[]、b[]两个数组中相同下标下的对应数组元素出现不同,则执行步骤6.4);

6.3)判断若a[0]大于3且a[1]减去a[0]大于3,则将第一结果集S2中a[0]位置处的分隔符去除,否则不做处理;

再从a[]中第二个元素位置(a[1])开始循环,判断若a[i]-a[i-1]大于3且a[i+1]-a[i]大于3,则将第一结果集S2中a[i]位置处的分隔符去除,否则不做处理,直至a[]中最后一个元素,结束循环,输出最终结果集S4,直接执行步骤6.5);

6.4)循环遍历a[]、b[]中元素,直到找出不一致的元素所对应的下标j,将第一结果集S2中a[j]位置处的分隔符去除,当a[]、b[]两个数组中元素均相同时,返回执行步骤6.3);

6.5)重复步骤6.2)~步骤6.4),直至将第一结果集S2、第二结果集S3中对应句子都比较处理完,并输出最终结果集S4,即成。