-- 作者:天一生水
-- 发布时间:2018/7/31 11:15:00
-- [求助]相似度
甜老师好!
您以前写的相似度代码,我想在第二段代码的加黑地方应用。
原先代码的意思是:[案号]和[被告]都相同时,就引用数据,否则就添加新行;
实际应用中,[被告]的描述可能有些不同,因为共同的字符不固定,前后的包含关系也不确定。比如,“章丘市人民政府”和“济南市章丘区人民政府”。
因此,我希望,如果[被告]的相似度>70(相同字符与短字符串的占比)就认为找到了,进而引用数据;否则才添加新行。
第二段代码怎样修改呢?自己改不了,请老师指教。
谢谢!
1、--------------------------------------
Dim sa As String = "章丘市人民政府" Dim sb As String = "济南市章丘区人民政府" Dim count As Integer \'For i As Integer = 0 To sa.Length - 1 For i As Integer = 0 To IIF((sa.Length-sb.Length)< 0, sa, sb).Length - 1 \'短字符长度 \'If sb.Contains(sa(i)) Then If IIF((sa.Length-sb.Length)> 0, sa, sb).Contains(IIF((sa.Length-sb.Length)< = 0, sa, sb)(i)) Then \'长字符包括短字符 count += 1 End If Next msgbox(IIF((sa.Length-sb.Length)< =0, sa.Length, sb.Length)) \'短字符长度 msgbox(IIF((sa.Length-sb.Length) > 0, sa.Length, sb.Length)) \'长字符长度 msgbox(count) \'共同字符数 msgbox(count/IIF((sa.Length-sb.Length)< = 0, sa.Length, sb.Length)*100%) \'占比-短 msgbox(count/IIF((sa.Length-sb.Length)> 0, sa.Length, sb.Length)*100%) \'占比-长
2、--------------------------------------- If e.DataCol.name = "庭审笔录_被告出庭" Then Dim str As String = e.NewValue If str > "" Then Dim ary() As String = str.Replace("被告", "@").split("@") For i As Integer = 0 To ary.length-1 str = ary(i).trim() If str > "" Then str = "被告" & str Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=被告).*?(?=。)") \'提取被告单位名称 Dim s As String = mc(0).value \'到机关负责人出庭表去找 Dim dr = DataTables("机关负责人出庭").Find("[案号] = \'" & e.DataRow("案号") & "\' And
[被告] = \'" & s.split(",")(0) & "\'") If dr Is Nothing Then dr = DataTables("机关负责人出庭").AddNew End If dr("案号") = e.DataRow("案号") dr("被告") = s.split(",")(0) dr("庭审笔录被告出庭") = str dr("开庭时间") = e.DataRow("开庭排期_开庭时间") End If Next End If End If
|