我已经编写了一个函数,它基本上计算文档的逆频率(logbase10(total编号文件/编号包含特定单词的文档)
我的代码:def tfidf(docs,doc_freqs):
res = []
t = sum(isinstance(i, list) for i in docs)
for key,val in doc_freqs.items():
res.append(math.log10(t/val))
pos = defaultdict(lambda:[])
for docID, lists in enumerate(docs):
for element in set(lists):
pos[element].append([docID] + res)
return pos
我的输出:
^{pr2}$
期望输出:index = tfidf([['a', 'b', 'c'], ['a']], {'a': 2., 'b': 1., 'c': 1.})
index['a']
[[0, 0.0], [1, 0.0]]
index['b']
[[0, 0.3010299956639812]]
所以基本上我只想显示这个词出现的docid,后面跟着它的idf值。(即,)在上述示例中,由于术语“a”出现在两个文档中,idf值为0。在
有人能建议我需要在代码中做些什么修改,以便根据运行时指定的术语只打印相应的idf值吗??在
请帮忙!!!
提前谢谢。在