Pythonの編集距離

インポートNPとしてnumpyの
 インポートのJSON
 インポートコーデックは

计算编辑距离
DEF :edit_distance(WORD1、WORD2)
    LEN1 = LEN(WORD1)
    LEN2 = LEN(WORD2)
    DP = np.zeros((LEN1 + 1、LEN2 + 1 ))
     のために範囲(LEN1 + 1 ):
        DP [i]が[0] = のために、J における範囲(LEN2 + 1 ):
        DP [0] [j]は = Jの

    ための I 範囲(1、LEN1 + 1 のために J範囲(1 ,. 1 LEN2用+ ):
             IF WORD1 [I - 1] == WORD2 [J - 1 ]:
                TEMP = 0
             
                TEMP = 1 
            DP [I] [J] [I - 1] =分(DP [J - 1] + TEMP、分(DP。[I - 1] [J] + 1、DP [I]、[J - 1] + 1 ))
     を返すDP [LEN1] [LEN2] 


190 801 計算編集距離類似
DEF simility(WORD1、WORD2):
    RES = edit_distance(WORD1、WORD2)
    MAXLEN = MAX(LEN(WORD1)、LEN(WORD2))
     リターン 1-RES * 1.0 /。MAXLEN

bianhaos = [] 
sub_sens = [] 
codecs.open有する(R ' C:\ユーザー\ Administrator.SC-201812211013 \ PycharmProjects \ untitled29 \ yiwoqu \コード\のxianbingshi_write_sub.txt '' R '' UTF8 ' )Fとして得ました:
     以下のためのF:
        bianhao、sub_sen = line.split( '< - >') 
        。sub_sen = sub_sen.strip()ストリップ( '<B>')ストリップ( '<E>')
        #1 bianhaos.append (bianhao)
        sub_sensを。追加(ライン)  = LEN(sub_sens)
leibie = [-1] *カウント
CLA = 0
 印刷(カウント)
 のための I における範囲(数):
     もし!leibie [I] = -1 継続
    leibieを[I] = CLA 
    SUB1 = sub_sens [i]は
     のために J における範囲(カウント):
         もし leibie [J ] = -1! 続ける
        SUB2 = sub_sens [J] 
        SIM = simility(SUB1、SUB2)
         であれば SIM> = 0.5 
            leibie [J] = CLAの
    CLA= CLA + 1枚の
    プリント(I)
 プリント(leibie) オープンと' leibie05.json '' W ' Fとして):
    json.dump(leibie、F)

 

おすすめ

転載: www.cnblogs.com/yiwoqu/p/11542074.html