Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 比较python中两个列表中的两个单词_List_Python 2.7_Compare_Words - Fatal编程技术网

List 比较python中两个列表中的两个单词

List 比较python中两个列表中的两个单词,list,python-2.7,compare,words,List,Python 2.7,Compare,Words,我想比较两个不同列表中的单词,例如,我有: [‘冻结’、‘狗’、‘困难’、‘回答’]和其他列表 ['freaze','dot','deficult','anser']。我想比较一下这个列表中的单词,并给不正确的字母打分数。所以,+1表示正确,-1表示一个字母错误。为了提供一些上下文,在拼写测试中,第一个列表是答案,第二个列表是学生的答案。我该怎么做呢?假设两个列表长度相同,并且您有一些函数grade(a,b)其中a,b是字符串: key = ['freeze','dog','difficult'

我想比较两个不同列表中的单词,例如,我有:
[‘冻结’、‘狗’、‘困难’、‘回答’]和其他列表
['freaze','dot','deficult','anser']。我想比较一下这个列表中的单词,并给不正确的字母打分数。所以,+1表示正确,-1表示一个字母错误。为了提供一些上下文,在拼写测试中,第一个列表是答案,第二个列表是学生的答案。我该怎么做呢?

假设两个列表长度相同,并且您有一些函数
grade(a,b)
其中
a,b
是字符串:

key = ['freeze','dog','difficult','answer']
ans = ['freaze','dot','dificult','anser']

pairs = zip(key, ans)
score = sum(grade(k,v) for (k,v) in pairs)
一个可能的分级功能是:

def grade(a,b):
    return 1 if a == b else -1
评分函数惩罚每个错误的字符,并为正确的拼写(听起来很刺耳…)给出1pt,可能是:

def grade(a,b):
    score = sum(a == b for (a,b) in zip(a,b)) - max(len(a), len(b))
    return score if score else 1
如果您想要Levenshtein距离,您可能希望您的
grade
函数是对以下内容的包装,这是在上找到的,并且看起来相当有效:

def levenshtein(seq1, seq2):
    oneago = None
    thisrow = range(1, len(seq2) + 1) + [0]
    for x in xrange(len(seq1)):
        twoago, oneago, thisrow = oneago, thisrow, [0] * len(seq2) + [x + 1]
        for y in xrange(len(seq2)):
            delcost = oneago[y] + 1
            addcost = thisrow[y - 1] + 1
            subcost = oneago[y - 1] + (seq1[x] != seq2[y])
            thisrow[y] = min(delcost, addcost, subcost)
    return thisrow[len(seq2) - 1]

你也可以看一看,做更复杂的事情。

你想计算单词之间的levenshtein距离吗?