如何查找和计数所有重复的2/3/4单词短语



我一直在尝试解析300-400个单词的文本片段,并且得到所有重复的2/3/4单词短语,我无法找到解决方案。

对于一个词的共性,我简单地拆分文本,.each_slice 1,然后。map和。tally.

但是对于2+单词,.each_slice不起作用,因为我无法解释顺序。例如,文本是:

An alligator walked and an alligator walked alone.

它将分裂为:

The alligator | walked and | another alligator | walked alone

我该写什么代码来识别"短吻鳄行走"?重演吗?

我能想到的唯一解决办法是每次都删除第一个单词,这样这对就会不断变化并得到所有选项,但这看起来非常愚蠢…

任何帮助都是感激的!

您要查找的方法是Enumerable#each_cons,而不是Enumerable#each_slice

我不知道确切地你当前的解决方案是什么样子的(它会更好地分享你的实际代码而不是松散的代码描述:&;我只是.split文本,.each_slice 1,然后.map.tally&;!),但例如你可以这样做:

input = "An alligator walked and an alligator walked alone"
input.split(' ').map(&:downcase).each_cons(2).tally
# => {
#   ["an", "alligator"]=>2,
#   ["alligator", "walked"]=>2,
#   ["walked", "and"]=>1,
#   ["and", "an"]=>1,
#   ["walked", "alone"]=>1
#  }

最新更新