1.一种基于融合字形信息的服药单识别结果纠错方法,其特征在于:包括以下步骤:S1:构建药品词库,包括门诊病历和医院服药单中的常用药品,以及能从网上获取到的部分开源药品数据,进行清洗去重,得到最终的药品词库;
S2:将所述药品词库中每个字符串信息作为一个节点存储在BK树内存结构中;所述步骤S2包括以下步骤:S21:随机选择词库中的一个字符串作为BK树的根节点;
S22:每插入一个新字符串,计算该字符串与根节点的距离d;
S23:如果距离值d是第一次出现,建立一个新的子节点,否则沿着编号与d相同的边递归下去;
S3:设置搜索距离阈值n,计算待纠错字符串与BK树中节点的编辑距离,将满足与待纠错字符串编辑距离不超过n的节点添加到结果候选集中;所述步骤S3包括以下步骤:S31:设置搜索距离阈值n;
S32:计算待纠错字符串与根节点之间的编辑距离d,然后搜索边的编号在范围[d‑n,d+n]的子节点node,不在此范围的节点代表其整个分支都不满足查找条件,可剪枝;
S33:比较待纠错字符串与node节点的编辑距离,如果小于n,代表找到的node节点符合查找要求,返回此节点,并将节点存储的字符串添加到结果候选集中;
S34:将当前node节点当作根节点,返回步骤S32,继续查找其他子节点;递归以致遍历BK树,找到所有满足条件的字符串,存储在结构候选集中;
S4:分别计算待纠错字符串与结果候选集中的字符串间融合了五笔编码、四角码和笔画后的字形编辑距离dc;所述步骤S4包括以下步骤:S41:融合五笔编码的编辑距离替换代价公式为
Wwb=dwb/4
其中,dwb表示两个字符五笔编码的编辑距离,除以4是进行归一化操作,取值在[0,1]之间,即两个汉字完全相同是为1,不同则为0;一个汉字最多用4个字母表示其五笔编码,当两个汉字相同时,五笔编码距离为0;当两个汉字不同时,五笔编码距离最大为4;
S42:融合四角码的编辑距离替换代价公式为
Wsj=dsj/5
其中,dsj为两个字符的四角码距离,Wsj是归一化之后的结果,取值在[0,1]之间;一个汉字最多用5个数字表示其四角码,四角码的编码规则是将汉字的基本笔画分为10种,分别用
0~9十个数字表示,按左上角、右上角、左下角、右下角的顺序取汉字的四角的笔画代码作为汉字的编码;即当两个汉字相同时,四角码距离为0;不同则距离最大为5;
S43:融合笔画的编辑距离替换公式为
Wstro=|stroi‑stroj|/max(stroi,stroj)上式中,stroi是字符ai的笔画数,stroj是字符bj的笔画数,|stroi‑stroj|是两个字符笔画数差值的绝对值;通过笔画数差值除以两个字符串笔画数的最大值,对其进行归一化处理,使取值在0到1之间;
S44:计算融合三种字形信息后的字符串编辑距离dc,字符串str1和str2的长度分别为m和n,构造矩阵LDm+1,n+1,给矩阵中的每个元素赋值,改进后的赋值公式如下:将传统编辑距离替换操作代价为1改进为替换字符之间的五笔编码编辑距离、四角码编辑距离和笔画差值相加的归一化值;其中,ai为字符串str1中第i个字符,bj为字符串str2中第j个字符;w1为dwb/4,是两个字符五笔编码的编码距离归一化结果,w2为dsj/5,是两个字符四角码编码距离归一化结果,w3为|stroi‑stroj|/max(stroi,stroj),表示两个字符之间笔画差异;
S5:计算融合字形信息的字符串相似度Simc,公式如下:
S6:将相似度最高的字符串作为纠错结果进行替换。