我在Ruby中创建了一个单词计数器,作为学习Ruby的一个小练习.
我在JavaScriptKit.com和WordCountTool.com以及Open Office Writer中使用了单词counter.
一些文本产生了以下结果
OpenOffice: 458 words
JavaScriptKit: 453 words
WordCountTool: 455 words
Mine: 461 words
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么计数在所有计数器的相同精确摘录中有所不同?
脚本中可能导致不准确但仍然接近计数的问题是什么?
有什么方法可以改进我的脚本以使其更准确?
你真的要求定义一个"单词",为计算目的可能意味着非常不同的东西.我们以您的原始帖子为例.
最简单的计数工具是
text.split.count #=> 111
Run Code Online (Sandbox Code Playgroud)
然而,如果你放了"Why do the counts differ/change for the same[...]"怎么办?好吧,显然"不同/改变"是两个单词,所以我们应该把正斜杠算作单词分隔符.事实上,仅仅因为我忘了在句号和下一个单词之间放置一个空格,并不会使它们成为同一个单词,所以让我们将完全停止作为分隔符.然而,我不能打扰检查它是否是一个URL,所以你提到的那些网站必须算作两个词:
text.split(/[\s\.\/\?]+/).count #=> 113
Run Code Online (Sandbox Code Playgroud)
好吧,这很酷,但实际上数字在技术上并不是单词 - 如果说出来,458将是"四百五十八",实际上是5个单词.所以我们也要打折它们
text.split(/[\s\.\/\?0-9]+/).count #=> 109
Run Code Online (Sandbox Code Playgroud)
你明白了.你得到的结果只有8个字 - 很明显他们对一个单词的定义并没有那么不同.但字数只是一个粗略的指导,所以不要担心差异.