我正在使用 Python 在 Web 应用程序中实现tf-idf算法,但是它运行得非常慢。我基本上做的是:
1)创建2个字典:
- 第一个字典:键(文档ID),值(文档中所有找到的单词(包括重复)的列表)
- 第二本词典;键(文档 ID),值(包含文档唯一单词的集合)
现在,有一个用户请求获取文档 d 的 tfidf 结果。我要做的是:
2) 遍历文档 d 的第二个字典的唯一词,并且对于每个唯一词 w 得到:
2.1) tf 分数(w 在 d 中出现多少次:循环遍历文档的第一个字典的单词列表)
2.2)df分数(有多少文档包含w:循环所有文档的单词集(第二个字典)并检查是否包含w)。我正在使用集合,因为与列表相比,检查集合是否包含单词似乎更快。
步骤 2.2 非常慢。例如,有 1000 个文档,对于具有 2313 个唯一词的文档,输出结果大约需要 5 分钟。
有没有其他方法可以使步骤 2.2 更快?字典的迭代速度很慢吗?