Python中的反向文档到文档(列表)
我正在分析Microsoft Academic API中的一些文本,我希望使用论文摘要,但摘要是以相反的文档格式给出的,即{word:[文档中单词出现的索引]}。我需要将此文件转换为常规文件。我有大约20000篇这样的摘要,我提出了一种方法,结果是api输出Python中的反向文档到文档(列表),python,algorithm,Python,Algorithm,我正在分析Microsoft Academic API中的一些文本,我希望使用论文摘要,但摘要是以相反的文档格式给出的,即{word:[文档中单词出现的索引]}。我需要将此文件转换为常规文件。我有大约20000篇这样的摘要,我提出了一种方法,结果是api输出 doc_length = result['entities'][0]['IA']['IndexLength'] #provided in the api output variable - result output_list = [0]
doc_length = result['entities'][0]['IA']['IndexLength'] #provided in the api output variable - result
output_list = [0] * doc_length
inv_doc = result['entities'][0]['IA']['InvertedIndex']
for key in inv_doc.keys():
for index in inv_doc[key]:
output_list[index] = key
上述方法的时间复杂度为*M,其中N是文档数,M是每个文档的长度
我的问题是,就时间复杂性而言,我能做得更好吗?你不能做得更好
至少就渐进复杂性而言,您的复杂性是最优的。ONM是输出的大小。除非输入已经是输出的一部分,否则不可能以比ONM更快的速度输出大小为ONM的内容,这里的情况并非如此
参见此,考虑输出占用内存。要获得输出,如果没有其他内容,则必须访问所有内存。这本身就需要ONM时间。
那么下限确实是ONM?我们能证明吗?不要求证明只是一个直观的方向超出了你所写的应该是完整的。我会考虑我写了一个证明,因为这是一个非常基本的事情,写X的事情至少需要X次。我在下面写了一个更详细的解释。要清楚的是:上面的代码只处理一个文档?当你只处理一次每个文档时,你怎么能期望做得更好呢?顺便说一句,我们可以一起处理多个文档。是的,这只适用于一个文档。