不同字计数器之间的差异是什么原因造成的

时间:2011-08-11 10:37:54

标签: ruby word-count

我在Ruby中创建了一个单词计数器,作为学习Ruby的一个小练习。

我在JavaScriptKit.com和WordCountTool.com以及Open Office Writer中使用了单词counter。

某些文字产生了​​以下结果

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

我的问题是:为什么所有计数器的相同摘录的计数都不同?

脚本中可能导致不准确但仍然接近计数的问题是什么?

我可以通过哪些方法改进我的脚本以使其更准确?

2 个答案:

答案 0 :(得分:5)

你真的要求定义一个“单词”,出于计数目的,这可能意味着非常不同的东西。我们以您的原始帖子为例。

最简单的计数工具是

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 :(得分:1)

根据WC的作者决定成为一个“单词”,你会得到不同的结果。某些类型的标点符号可以被归类为单词分隔符,具体取决于计数器以及空格,换行符等...

维基百科有关WC http://en.wikipedia.org/wiki/Word_count

的文章中的一些信息
  

不同的单词计数程序可能会有不同的结果,具体取决于   关于“词”的定义