如果内容匹配〜80%,则从数组中删除元素

问题描述 投票:0回答:1

我有一个使用nltk tokenize构建的数组的数组:-

[
  ['this', 'is', 'a', 'long', 'sentence'],
  ['another', 'sentence'],
  ['this', 'is', 'a', 'sentence'],
  ['welcome', 'to', 'stack', 'overflow']
]

我正在尝试删除大约80%相同的句子。

我编写了一个脚本,该脚本有效,该脚本通过使用两个for循环逐行检查数组,并将每一行与数组中的每一行进行比较。

[阵列中大约有40,000行,当前任务需要大约12个小时才能完成,我想知道是否有更有效的方法来完成此任务。

输出的数组将看起来像:-

[
  ['this', 'is', 'a', 'long', 'sentence'],
  ['another', 'sentence'],
  ['welcome', 'to', 'stack', 'overflow']
]

我当前拥有的代码在Google Colab上,这不是最终的代码,但是我无权使用我以前编写代码的机器:-

https://colab.research.google.com/drive/1fRg6c122HOjKUwIrvjd1cpSo457AOSp4

python arrays machine-learning nltk
1个回答
0
投票

我建议在此处发布一个包含代码的最小示例,但一些一般性提示:-您可以使用itertools.combinations轻松创建所有配对的配对-当前,您在每次比较之前都要对字符串进行标记处理,因此要重做很多工作。考虑预先进行标记化以及任何其他计算。-如果重复很多,您也可以考虑缓存某些结果-如果您可以排除一些比较(例如,按标记字符串的长度,也就是说,如果一个比较长的话,则不需要比较),那么您也许也可以使其效率更高。]

[有很多东西,但是如果您尝试列出一个具体的问题而不是像这样的开放式问题,那就更好了。

© www.soinside.com 2019 - 2024. All rights reserved.