有效提取anadromes



反调是一个恰当的句子,当反调书写时,它构成了一个(可能不同(恰当的句子,直到可能改变间距。我有一个文件,里面有1亿个正确的句子,我想通过测试忽略内部空间时它们的倒数是否也在文件中,找到所有句子(按单词边界划分(。我最初的方法是提取所有的子句子并将其保存到一个临时文件中,在内存中创建一个空间剥离反转的集合,最后在临时文件上迭代,测试空间剥离后的每一行是否属于该集合。这对于较小的文件来说效果很好,但无法缩放,因为集合对于内存来说太大了。除了用磁盘上的数据库替换内存中的集合之外,还能做些什么呢?

编辑:我最终使用了一个带索引的sqlite数据库。在一个500万句的小集合中,使用数据库而不是内存集需要2倍的时间。对于全套,这是我发现的唯一可以完成计算的方法。

对于每个合适的句子,你可以尝试将其倒置,并找到所有合适的可能子句。

然后,对于每个倒置的子内容,去掉所有空格。

然后在原始文件中执行regex搜索,使用空格分隔的倒置子内容进行搜索,允许在字符之间使用s?

例如,ds?ls?rs?os?ws?os?ls?ls?es?h(倒置的"你好世界"(将匹配"wlro woll eh"(带有疯狂间距的倒置的"hello世界",如果它是一个合适的句子,则会在原始文件中(

最新更新