Что является причиной расхождений между различными счетчиками слов - PullRequest
1 голос
/ 11 августа 2011

Я создал счетчик слов в Ruby как небольшое упражнение по изучению Ruby.

Я использовал счетчики слов на JavaScriptKit.com и WordCountTool.com, а также в Open Office Writer.

В некотором тексте были получены следующие результаты

OpenOffice: 458 words
JavaScriptKit: 453 words
WordCountTool: 455 words
Mine: 461 words

У меня такой вопрос: почему счетчики отличаются для одного и того же точного фрагмента по всем счетчикам?

Какие проблемы возникают всценарий, который может привести к неточному, но все же близкому счету?

Какими способами я мог бы улучшить свой сценарий, чтобы он был более точным?

Ответы [ 2 ]

5 голосов
/ 11 августа 2011

Вы действительно спрашиваете об определении «слова», которое для целей подсчета может означать совсем другие вещи. Давайте возьмем ваш оригинальный пост в качестве примера.

Самый простой инструмент подсчета будет

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 слов - так что их определения слова не так уж и отличаются. Но подсчет слов - только приблизительный пример, поэтому не беспокойтесь о расхождениях.

1 голос
/ 11 августа 2011

Вы получите разные результаты в зависимости от того, что автор WC решил назвать «словом».Определенные типы знаков препинания могут быть классифицированы как разделитель слов в зависимости от счетчика, а также от пробелов, переносов и т. Д.1006 * Различные программы подсчета слов могут давать разные результаты, в зависимости от определения «слова»

...