我有一个术语(单词)列表,比如大约500,000,它们被加载到一些数据结构中,如字典或Trie或许。
在我的程序中,我想打开每个文本文档并搜索这些术语的出现次数。当我找到一个我想停止并转换文本文件中的字符串(用转换后的字符串替换它),然后继续搜索。完成文件后,我将新的修改文件写入磁盘。
我的问题如下
我只是在寻找一些关于从哪里开始的建议,因为我认为当我处理非常大量的文本文件时,速度将非常重要。
编辑:是的,每个字符串的转换都是相同的 - 基于算法 - 所以每个字符串看起来都不同。 (例如,使用Cipher来制作这个词是不可读的。无论如何,我只是在寻找某人指向正确的方向,我不熟悉那里的许多算法和数据结构。
答案 0 :(得分:1)
从我上过的课程中,我记得我们介绍过几种不同的算法。以下是我记得对大文本文件非常有效的那些......
博耶-摩尔:
http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm
Knuth的莫里斯-普拉特:
http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm
这些只会帮助查找,然后你可以自己进行操作
答案 1 :(得分:1)
哈希表(Dictionary
)将提供比树结构更快的查找。精心构建的哈希表可以找到具有两个或三个探测器的匹配单词条目,而树结构可能需要多达一个数量级的更多比较。
至于分割单词,将所有字母字符(可能还有数字字符)收集到每个单词的下一个空格或标点符号似乎很简单。在字典中查找之前,您可能希望将每个单词转换为全小写。