Вы действительно спрашиваете об определении «слова», которое для целей подсчета может означать совсем другие вещи. Давайте возьмем ваш оригинальный пост в качестве примера.
Самый простой инструмент подсчета будет
text.split.count #=> 111
Но что, если вы положили "Why do the counts differ/change for the same[...]"
? Ну, ясно, что «отличается / изменить» - это два слова, поэтому мы, вероятно, должны считать косые черты как разделители слов. На самом деле, просто потому, что я забыл поставить пробел между полной остановкой и следующим словом, это не означает, что они совпадают, поэтому давайте также включим точки в качестве разделителей. Однако я не могу проверить, является ли это URL-адресом, поэтому те сайты, которые вы упомянули, должны считаться двумя словами:
text.split(/[\s\.\/\?]+/).count #=> 113
Хорошо, это круто, но на самом деле цифры не являются технически словами - и если бы они были произнесены, 458 было бы "четыреста пятьдесят восемь", что на самом деле 5 слов. Так что давайте скидывать их тоже
text.split(/[\s\.\/\?0-9]+/).count #=> 109
Вы поняли идею. Результаты, которые вы получили, отличались только на 8 слов - так что их определения слова не так уж и отличаются. Но подсчет слов - только приблизительный пример, поэтому не беспокойтесь о расхождениях.