gpt4 book ai didi

Python和tfidf算法,让它更快?

转载 作者:太空狗 更新时间:2023-10-30 00:51:58 27 4
gpt4 key购买 nike

我正在实现 tf-idf使用 Python 的 Web 应用程序中的算法,但是它运行起来非常慢。我基本上做的是:

1) 创建 2 个字典:

  • 第一个字典:键(文档 ID),值(在文档中找到的所有单词列表(包括重复)
  • 第二本词典;键(文档id),值(包含文档唯一词的集合)

现在,有一个用户请求获取文档d的tfidf结果。我所做的是:

2) 循环遍历文档 d 的第二个字典中的唯一词,对于每个唯一词 w 得到:

2.1) tf score(w在d中出现了多少次:循环遍历文档第一个字典的单词列表)

2.2) df score(有多少文档包含w:遍历所有文档(第二个字典)的词集并检查是否包含w)。我正在使用集合,因为与列表相比,检查集合是否包含单词似乎更快。

步骤 2.2 非常慢。例如,有 1000 个文档,对于一个包含 2313 个唯一单词的文档,输出结果大约需要 5 分钟。

有没有其他方法可以使步骤 2.2 更快?字典的迭代速度是否很慢?

最佳答案

那么,您必须以某种方式重新思考和重新设计您保存数据的方式,或者换句话说,实现“倒排索引”的“正统”版本。

您的瓶颈是术语文档频率 (DF) 的“即时”计算。这是一个动态的想法,所以每次你更新你的语料库(文档集合)时,做一些处理并更新文档中每个术语的 DF(当然,以持久的方式保存结果,又名数据库等。)。

你唯一需要的结构就是像那样的嵌套字典

{ "term1" : { "DF" : x, "some_doc_id" : tf , "some_other_doc_id" : tf, etc  } ,
"term2" : ...
etc..
}

每次“输入”语料库时都会正确更新。

当然,在某个地方保存你的语料库基数...

作为我的爱好和工作的一部分,我正在实现一个 python - redis 支持的小型搜索引擎。你也可能会得到一些其他的想法。看看here .

关于Python和tfidf算法,让它更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7215850/

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