text = "Simply speaking: group word list into subsets with same first
character, eventually restricted to the CharacterRange, and select
from the Tally list the subset with count > 1";text = "Simply speaking:
group word list into subsets with same first character,
eventually restricted to the CharacterRange,
and select from the Tally list the subset with count > 1";
wordList = TextWords[text];
allitteralQ[a_ , b_ ] :=
SameQ @@ ((StringTake[#, 1] & ) /@ (ToLowerCase /@ {a, b}))
Select[Union /@ Gather[wordList, (allitteralQ[#1, #2] &)], (Length[#] > 1 &)]
All in One
Select[Union /@ Gather[
TextWords[text],
Function[{a,b}, SameQ @@ ((StringTake[#, 1] & ) /@ (ToLowerCase /@ {a, b})) ] ],
(Length[#] > 1 &)]