将一个输入文件与给定数量的文件进行匹配的算法
上周我接受了采访。 我在算法轮回中遇到了一个问题。 我回答了这个问题,但面试官似乎并不相信。 这就是为什么我分享相同。
请告诉我有关此问题的任何优化方法,以便在未来的访谈中帮助我。
问题 : -
共有20个文本文件,所有文件都是ASCII文本文件,大小小于10 ^ 9字节。 还有一个输入也给出了,这也是一个ASCII文件,比如input.txt。
我们的任务是将此输入文件的内容与给定的20个文件进行战略匹配,并打印最接近的匹配文件的名称。 输入文件的内容可能只匹配部分内容
提前致谢。 寻找你的回应。
对它们进行差异化并通过wc -l,或者在C ++中实现Levenshtein距离,将每行视为单个字符(或者包含主题域的任何更合适的单位)
您可以创建某种索引(例如:trie)来汇总输入文件。 然后您可以检查多少个索引匹配文档。
例如。 为输入文件创建一个长度为10的树。对于文本文件中每个长度为10(重叠)的字符串,检查它们在树中的匹配数目。
作为设计真正有能力,可扩展的文档相似系统的建议,我建议阅读Mining Massive Datasets的第3章,它可以在线免费获取。 其中一种方法是通过将单词计数向量化为集合来“拼凑”数据集,然后散列这些单词计数,并将哈希结果家族与Jaccard相似性进行比较以获得所有文档之间的分数。 如果做得对,这可以在高精度的PB级文件上工作。 可以从斯坦福大学的CS246幻灯片上的局部敏感散列中读出具有良好图表的明确细节。 书中还描述了更简单的方法,如词频计数。
链接地址: http://www.djcxy.com/p/70629.html上一篇: Algorithm to match one input file with given numbers of file