gpt4 book ai didi

python - Python 脚本中的关键错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:40 25 4
gpt4 key购买 nike

尝试运行以下代码时出现关键错误 ln 12:

import math
from collections import Counter

def retrieve():

wordFrequency = {'bit':{1:3,2:4,3:19,4:0},'red':{1:0,2:0,3:15,4:0},'dog':{1:3,2:0,3:4,4:5}}
search = {'bit':1,'dog':3,'shoe':5}

sizeFileVec = {}
for word, innerDict in wordFrequency.iteritems():
for fileNum, appearances in innerDict.iteritems():
sizeFileVec[fileNum] += appearances ** 2
for fileNum in sizeFileVec:
sizeFileVec[fileNum] = math.sqrt(sizeFileVec[fileNum])

results = []
for word, occurrences in search.iteritems():
file_relevancy = Counter()
for fileNum, appear_in_file in wordFrequency.get(word, {}).iteritems():
file_relevancy[fileNum] += (occurrences * appear_in_file) / sizeFileVec[fileNum]

results = [fileNum for (fileNum, count) in file_relevancy.most_common()]

return results

print retrieve()

我遇到错误的代码应该采用 wordFrequency 的内部字典,然后对每个文件编号的值的平方求和,然后开平方根(有 4 个文件),即对于文件 1,它是 sqrt( 3^2 + 0^2 + 3^2)。

  • 编辑

结果[]

应该根据查询按最相关的顺序返回 4 个文件的列表。所以在这个例子中:

          bit     dog      shoe

File 1 3 3 0

File 2 4 0 0

File 3 19 4 0

File 4 0 5 0


Search 1 3 5

sim(1,S) = (3 * 1) + (3 * 3) + (0 * 5)/sqrt(3^2 + 3^2 + 0^2) * sqrt(1^2 + 3) ^2 + 5^2) = 0.478

获取每一项的标量积,然后除以文件和搜索量值的乘积。

这是在其他 3 个文件和搜索之间完成的,并存储在列表中。

然后按照最相关到最不相关的顺序返回列表。

  • 编辑2

sim(2,S) = (4 * 1) + (0 * 3) + (0 * 5)/sqrt(4^2 + 0^2 + 0^2) * sqrt(1^2 + 3) ^2 + 5^2) = 0.169

sim(3,S) = (19 * 1) + (4 * 3) + (0 * 5)/sqrt(19^2 + 4^2 +0^2) * sqrt(1^2 + 3) ^2 + 5^2) = 0.26987

sim(4,S) = (0 * 1) + (5 * 3) + (0 * 5)/sqrt(0^2 + 5^2 + 0^2) * sqrt(1^2 + 3) ^2 + 5^2) = 0.507

因此应返回 [4,1,3,2]

最佳答案

   sizeFileVec = {}
for word, innerDict in wordFrequency.iteritems():
for fileNum, appearances in innerDict.iteritems():
sizeFileVec[fileNum] += appearances ** 2

这是错误的,因为 key 还不存在,所以 python 不知道要增加什么appearance**2

你可以这样做,

   sizeFileVec = {}
for word, innerDict in wordFrequency.iteritems():
for fileNum, appearances in innerDict.iteritems():
if not sizeFileVec.has_key(filenum):
sizeFileVec[filenum] = 0 #your default value
sizeFileVec[fileNum] += appearances ** 2

(或使用 setdefault 内置方法达到相同的效果)。您需要在第 18 行重复上述错误,进行相同的更改。

关于python - Python 脚本中的关键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27091397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com