我一直在尝试解析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
# }