我有一个包含一些嘈杂元素的大型(+/- 300,000行)文本片段数据集。有噪音我的意思是俚语,类型错误等...我希望过滤掉这些嘈杂的元素,以获得更干净的数据集。
我读了一些文件,建议通过跟踪每个单词的出现来过滤掉这些文件。通过设置一个阈值(例如小于20),我们可以假设这些单词是噪声,因此可以安全地从语料库中删除。
也许有一些库或算法可以快速有效地完成这项工作。当然我先是自己尝试过,但这非常慢!
总而言之,我正在寻找一种算法,可以快速有效地过滤出低于特定阈值的单词。也许我添加一个小例子:
This is just an example of whaat I wish to acccomplish.
单词'whaat'和'acccomplish'拼写错误,因此可能不那么经常发生(如果我们假设生活在一个完美的世界,错别字很少......)。我希望最终得到
This is just an example of I wish to.
谢谢!
PS:如果可能的话,我想在Java中使用算法(或伪代码,以便我自己编写)
答案 0 :(得分:4)
我认为你用评论中建议的方法使你复杂化。
您可以通过2次传递来完成数据:
Map<String,Integer>
map.get(word) > THRESHOLD
作为旁注,如果有的话 - 我认为固定阈值方法不是最好的选择,我个人会过滤发生少于MEAN-3*STD
的单词,其中MEAN
是平均单词数, STD
是standard deviation。 (3个标准偏差意味着您正在捕捉大约超出预期正态分布的单词,概率为~99%)。您可以使用常数因子“玩”并找到最适合您需求的内容。