首页 > 解决方案 > 两个单词列表之间的比较

问题描述

我想比较两个列表(结果,真实情况)。如果两者都匹配,则输出应包含 1,如果不是“0”并且输出正敏感。例如:

 result= [1,2,3,4,5]
 ground-truth=[2,4]
 Output= [0,1,0,1,0]

我为此实现了python代码:

def comparedkeground(dke,grd):
    correct=np.zeros(len(dke))
    try:
        for i in range(len(grd)):
            a=dke.index(grd[i])
            correct[a]=1
    except:
        'ValueError'
    return correct

此代码在某些情况下给出了完美的结果:例如:

d=[1,2,30,4,6, 8, 50, 90, 121]
e=[30, 2, 50, 90]
print(comparedkeground(d,e))
[0. 1. 1. 0. 0. 0. 1. 1. 0.]

cc=['word', 'flags', 'tv', 'nanjo', 'panjo']
ccc=['panjo', 'tv']
print(comparedkeground(cc,ccc))
[0. 0. 1. 0. 1.]

但相同的代码不起作用:

u=['Lyme-disease vaccine', 'United States', 'Lyme disease', 'Allen Steere']
u1= ['drugs', 'Lyme-disease vaccine', 'Lyme disease']
print(comparedkeground(u,u1))
[0. 0. 0. 0.]

标签: pythonnlp

解决方案


这是因为u数组没有'drugs'值,输出dke.index(grd[i])会出错!您将try语句放在错误的位置,您必须像这样更改它:

def comparedkeground(dke,grd):
    correct=np.zeros(len(dke))
    for i in range(len(grd)):
        try:
            a=dke.index(grd[i])
            correct[a]=1
        except:
            'ValueError'
    return correct

推荐阅读