gpt4 book ai didi

python - 无法使用python迭代调用yahoo的term extractor api

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

我正在尝试遍历目录中的 50 多个文件。每个文件都有一些文本,我正在尝试使用 Yahoo Term Extractor 查找关键字.我能够从每个文件中提取文本,但我无法使用文本作为输入来迭代调用 API。仅显示第一个文件的关键字。

这是我的代码片段:在“评论”列表中,我从每个文件中提取并存储了文本。

for c in comments:

print "building query"
dataDict = [ ('appid', appid), ('context', c)]
queryData = urllib.urlencode(dataDict)
request.add_data(queryData)
print "fetching result"
result = OPENER.open(request).read()
print result
time.sleep(1)

最佳答案

嗯,我对 Yahoo Term Extractor 一无所知,但我认为您的调用 request.add_data(queryData) 只是在循环的每次迭代中添加另一个数据集。然后调用 OPENER.open(request).read() 可能只会处理第一个数据集的结果。因此,要么您的 request 对象只能容纳一个查询,要么您的 OPENER 对象的内部工作只能处理一个查询,就这么简单。

实际上,现在我想到了第三个原因,我阅读了您链接中提供的文档,这可能是真实的原因:

RATE LIMITS

The Term Extraction service is limited to 5,000 queries per IP address per day and to noncommercial use. See information on rate limiting.

因此,API 将您的使用一次限制为一个查询,并且不允许您在单个请求中淹没一堆查询是有道理的。

无论如何,我假设您可以通过使用许多 request 变量而不是一个变量来以“天真”的方式解决您的问题,或者可能只是在每次迭代时创建一个新请求你的循环。如果您不担心存储结果,而只是想调试,您可以尝试:

for c in comments:
print "building query"
dataDict = [ ('appid', appid), ('context', c)]
queryData = urllib.urlencode(dataDict)
request = urllib2.Request() # I don't know how to initialize this variable, do it yourself
request.add_data(queryData)
print "fetching result"
result = OPENER.open(request).read()
print result
time.sleep(1)

同样,我不知道 Yahoo Term Extractor(我也没有时间研究它),所以很可能有更好、更本地化的方法来执行此操作。如果您发布有关代码的更多详细信息(即 requestOPENER 对象来自哪些类),那么我可能可以对此进行详细说明。

关于python - 无法使用python迭代调用yahoo的term extractor api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7291437/

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