Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 比较字符串并将相似的字符串放在一起的最佳算法是什么?_String_Algorithm_Metrics - Fatal编程技术网

String 比较字符串并将相似的字符串放在一起的最佳算法是什么?

String 比较字符串并将相似的字符串放在一起的最佳算法是什么?,string,algorithm,metrics,String,Algorithm,Metrics,我试图在数据集中对冗余进行分组,以便进行一些分析。我的主要分析工具是它们的标题 我可能有像“蓝鸟”、“大蓝鸟”、“棕色狗”、“红色狗”之类的东西 在本例中,我希望将“blue bird”和“big blue bird”分组在一起,但不应将其他元素分组 我知道字符串度量,但一般来说,相对于单字或嘈杂的字符串,它们对短语的效果如何?对于这个问题,哪种方法是有效的解决方案?您可以使用人们通常在程序中放入的逻辑来排序数组,修复变量(在本例中,将是一个字符串,我们将使用第一个单词)并将其与您拥有的字符串进

我试图在数据集中对冗余进行分组,以便进行一些分析。我的主要分析工具是它们的标题

我可能有像“蓝鸟”、“大蓝鸟”、“棕色狗”、“红色狗”之类的东西

在本例中,我希望将“blue bird”和“big blue bird”分组在一起,但不应将其他元素分组


我知道字符串度量,但一般来说,相对于单字或嘈杂的字符串,它们对短语的效果如何?对于这个问题,哪种方法是有效的解决方案?

您可以使用人们通常在程序中放入的逻辑来排序数组,修复变量(在本例中,将是一个字符串,我们将使用第一个单词)并将其与您拥有的字符串进行比较,始终寻找一个相等的单词,如果它相等,则应将其放置在单独的向量或特定的顺序中

但是,这样做会花费大量时间,而且可能不是最好的方法,因为这样做会逐句、逐字、逐字母进行。否则,在大组中按第一个单词的首字母分隔字符串似乎很有帮助。这样,你在搜索重复单词时花费的时间就更少了,这将选择最大限度地利用内存

我从卡内基梅隆大学找到了这篇论文,它看起来很有趣,它讨论了这个问题,你应该好好看看:

您可以使用人们通常在程序中放入的相同逻辑对数组进行排序,修复变量(在本例中是一个字符串,我们将使用第一个单词),并将其与您拥有的字符串进行比较,始终寻找一个相等的词,如果它相等,则应放在单独的向量中或按特定顺序放置

但是,这样做会花费大量时间,而且可能不是最好的方法,因为这样做会逐句、逐字、逐字母进行。否则,在大组中按第一个单词的首字母分隔字符串似乎很有帮助。这样,你在搜索重复单词时花费的时间就更少了,这将选择最大限度地利用内存

我从卡内基梅隆大学找到了这篇论文,它看起来很有趣,它讨论了这个问题,你应该好好看看:

字符串度量并不关心单词是否包含空格。因此,短语通常只是比单词长的字符串(在这方面),因此,如果执行模糊搜索,字符串度量也同样有效(尽管您可能希望单独搜索每个单词)

由于您似乎在寻找精确的匹配项,因此我建议您从标题的串联中构建后缀树。然后,如果您有多个匹配项,您可以在该树中搜索每个标题并构建标题组。不过,您需要决定如何处理以下组合:

  • 蓝鸟
  • 蓝色大鸟
  • 蓝色小鸟

以棕色/红色的狗为例,您不希望将“蓝色大鸟”与“蓝色小鸟”归为一组,但“蓝色大鸟”将与这两个词归为一组。

字符串度量并不关心您的单词是否包含空格。因此,短语大多只是比单词长的字符串(在这方面),因此,如果您正在执行模糊搜索,字符串度量也同样有效(尽管您可能希望单独搜索每个单词)

由于您似乎在寻找精确的匹配项,因此我建议您从标题的串联中构建后缀树。然后,如果您有多个匹配项,您可以在该树中搜索每个标题并构建标题组。不过,您需要决定如何处理以下组合:

  • 蓝鸟
  • 蓝色大鸟
  • 蓝色小鸟

按照brown/red dog的示例,您不想将“大蓝鸟”与“小蓝鸟”分组,但“蓝鸟”将与这两个分组。

通过“字符串度量”,您是在谈论度量空间嵌入吗?是的,您可以通过定义适当的度量将字符串集设置为度量空间(例如levenshtein距离)。通过“字符串度量”,您是在谈论度量空间嵌入吗?是的,您可以通过定义适当的度量(例如levenshtein距离)将字符串集设置为度量空间。