Page 111 - 《中国药房》2024年15期
P. 111
Function LevR(a As String,b As String) As Double 后下降的规律,且图形整体呈现出类似钟形曲线的
Dim m,n As Integer 特征。
m = Len(a) :n = Len(b)
If m = 0 or n = 0 Then Return 0 具有钟形曲线特征的常见函数是正态分布的概率
Dim L(m,n),i,j As Integer 密度函数,该函数的图像具有对称性:从峰值点开始,曲
For i = 1 To m :L(i,0) = i :Next i
For j = 1 To n :L(0,j) = j :Next j 线两侧都呈现下降趋势,且在拐点处的下降速率最快。
Dim Insert,Delete,Replace As Integer 将该性质类比到函数g上,意味着存在某个特定的相似
For i = 1 To m
For j = 1 To n 性阈值δ ,使得易混淆药品组数最大。当相似性阈值大
c
Insert = L(i,j-1) + 1 于δ 时,易混淆药品组数将逐渐减少,且在函数g的右侧
Delete = L(i-1,j) + 1 c
If Mid(a,i,1) = Mid(b,j,1) Then 拐点处,记为 δ ,g( δ k)) ,具有最大的下降速率。
( k
Replace = L(i-1,j-1)
Else 在遴选最佳相似性阈值时, δ 和 δ 均为可行的选
c
k
Replace = L(i-1,j-1) + 1 项,但使用 δ 更为合理。原因有如下 2 点:(1)由函数 g
k
End If
δ
δ
L(i,j) = Math.Min(Math.Min(Insert,Delete),Replace) 的性质可知,g( ) >g( ) >g( ) 1 ,表明以 δ 作为相似性
c
k
k
Next j 阈值时,易混淆药品组数不会出现过多或过少;(2)当相
Next i
Return 1-L(m,n)/Math.Max(m,n) 似性阈值超过 δ 后,易混淆药品组数减少的速度放缓,
k
End Function
表明各组内的药品名称都具有高度的相似性。因此本
图1 基于LD的药品名称相似性算法代码
研究使用δ 作为最佳的相似性阈值。
k
从 A 中识别出易混淆药品组的方法如下:首先,选
实践中,函数g的图形并非为一条光滑曲线,这不利
出A中第一个药品名称A 。然后,将A 与数组中余下的
1 1 于确定 δ 。但可以寻找一条拟合曲线来代替函数 g,从
所有药品名称进行相似度计算。如果计算得到的 R 不 k
而将寻找函数g右侧拐点的问题转换为寻求拟合曲线右
小于设定的相似性阈值 δ,则把当前药品名称标记为与
侧拐点。由于函数g与正态分布的概率密度函数具有相
A 相似。遍历完所有药品名称后,如果被标记的药品
1
似的图形特征,故设拟合曲线的公式为:
数>1,则把 A 与所有标记的药品归为 1 个易混淆药品
1
- ( δ - μ ) 2
组。上述过程仅识别出了1组易混淆药品,为筛选出更 f (δ) = αe 2σ 2 ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅(3)
多易混淆药品组,需要对 A 进行放缩,即将 A 和所有被 其中 α、 μ 和 σ 均为待定的参数。公式(3)中的自变
1
标记的药品名(若存在)从A中删除。然后对放缩后的A 量δ位于指数中,因此需对该公式进行对数化处理:
重复上述识别步骤,即可得到第2组易混淆药品。以此 ) 2
h(δ) = ln( f (δ)) = ln(α) - ( δ - μ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅(4)
往复,直到A中仅包含0个或1个药品名称为止,即可筛 2σ 2
选出所有易混淆药品组。 可以看到,公式(4)是关于 δ 的二次函数,故需要进
1.2.4 相似性阈值的筛选 行二阶多项式拟合。进行参数拟合的过程如下:首先,
相似性阈值δ是易混淆药品目录自动生成算法的重 在区间[0.1,0.9]内,以 0.01 为步长等间隔地取值,得到
要参数。若设定的 δ值偏低,可能会导致易混淆药品组 相似性阈值δ的81个样本,即δ =0.10, δ =0.11, , δ =
81
2
1
的质量不尽如人意,进而影响算法的准确性和实用性; 0.90。随后计算各相似性阈值所对应的易混淆药品组
反之,若δ的设定值偏高,则有可能造成某些重要的易混 ( 1 ( 1)))
数,并取自然对数,得到 1 组样本数据 δ , ln g( δ ,
(
险控制方面的作用。因此,合理地设定 δ值对于确保算 ( δ , ln g( δ 2))) , ,δ , ln g( δ 81))) 。 利 用 该 组 数
淆的药品被遗漏,从而削弱算法在易混淆药品管理和风
81 (
2 (
法的有效性和可靠性至关重要。 据,在 Matlab 中使用 polyfit 函数进行二阶多项式拟合,
相似性阈值δ与易混淆药品组数之间存在着紧密关 即可确定参数 α、 μ 和 σ。上述相似性阈值 δ 的样本取值
联。为明确该关系,本课题组定义了一个能将相似性阈 区间未设定为[0,1]的原因在于,靠近0和1的易混淆药
值δ映射到易混淆药品组数的函数g。通过观察这个函 品组数会对参数拟合的结果产生不利影响。
数的图形,可以从整体上把握相似性阈值 δ对易混淆药 函数 f 的定义与正态分布的概率密度函数非常相
品组数的影响。从实际操作中可以观察到,随着 δ的逐 似,仅存在常数项的差异。这点差异不会影响右侧拐点
渐增大,易混淆药品组数g(δ)的变化趋势表现出先上升 的横坐标位置。因此,根据后者的性质,可推断出函数f
中国药房 2024年第35卷第15期 China Pharmacy 2024 Vol. 35 No. 15 · 1901 ·