corpus处理(2)

将句子中省略标记去掉,并修改标记文件中的对应位置的下标值。

在此过程中,发现,del 和remove的不同:

del 按照准确位置删除

remove(s) 只要符合的,都会删除掉。 一般遍历删除时,需要倒叙删除,这样在python中,删除比较安全,不然会导致漏删(根本原因正序删的时候,下标错乱,导致找不到位置)

代码如下:

def modify(l1,l2):  # 处理 l1->word l2 ->wa
    l1_arr = l1.split(' ')
    flag_arr = []
    for num in range(len(l1_arr)-1, -1, -1):  # 遍历寻找省略的位置,倒叙删除
        s = l1_arr[num]
        if(s=='*OP*' or s == '*T*-1' or s == '*T*-2' or s == '*T*-3' or s == '*pro*' or s == '*PRO*'):
            flag_arr.append(num)
            del l1_arr[num]
    if l2 != 'rejected':
        l2_arr = l2.split(' ')
        for num in flag_arr:
            for count in range(0,len(l2_arr)-1):
                wa0 = l2_arr[count].split('-')[0]
                if int(wa0) > num:
                    val0 = str(int(wa0) - 1)
                    val1 = l2_arr[count].split('-')[1]
                    l2_arr[count] = val0 + '-' + val1
        l2 = ' '.join(l2_arr)
    return ' '.join(l1_arr), l2+'\n'

 

posted @ 2018-11-09 09:23  足下水清  Views(164)  Comments(1Edit  收藏  举报