1

Ruby 学習のちょっとした練習として、Ruby で単語カウンターを作成しました。

JavaScriptKit.com と WordCountTool.com のワード カウンター、および Open Office Writer のワード カウンターを使用しました。

一部のテキストは次の結果を生成しました

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

私の質問は次のとおりです。すべてのカウンターで同じ正確な抜粋のカウントが異なるのはなぜですか?

不正確なカウントを引き起こす可能性のあるスクリプトの問題は何ですか?

スクリプトをより正確にするために、スクリプトを改善するにはどのような方法がありますか?

4

2 に答える 2

5

あなたは本当に「単語」の定義を求めていますが、それは数えるためには非常に異なるものを意味する可能性があります. 例として、元の投稿を見てみましょう。

最も単純なカウント ツールは次のようになります。

text.split.count                      #=> 111

しかし、あなたが入れた場合はどうなります"Why do the counts differ/change for the same[...]"か?明らかに、"differ/change" は 2 つの単語なので、単語の区切り記号としてスラッシュを数えるべきでしょう。実際、ピリオドと次の単語の間にスペースを入れるのを忘れたからといって、同じ単語にはならないので、ピリオドも区切り文字として含めましょう。それでも、それが URL であるかどうかを確認するのは面倒なので、あなたが言及した Web サイトは 2 つの単語としてカウントする必要があります。

text.split(/[\s\.\/\?]+/).count       #=> 113

わかりました、それはいいことですが、実際には数字は技術的には単語ではありません。数字を話すと、458 は「458」となり、実際には 5 単語になります。だから、それらも割引しましょう

text.split(/[\s\.\/\?0-9]+/).count    #=> 109

あなたはアイデアを得る。得られた結果は 8 単語しか違わなかったので、単語の定義はそれほど異なっていないことは明らかです。ただし、文字数はあくまで目安ですので、多少の誤差はご容赦ください。

于 2011-08-11T11:31:33.267 に答える
1

WC の作成者が「単語」であると決定した内容に応じて、異なる結果が得られます。特定のタイプの句読点は、カウンター、空白、改行などに応じて単語区切りとして分類できます...

WC に関するウィキペディアの記事からの情報http://en.wikipedia.org/wiki/Word_count

「単語」の定義に応じて、単語カウント プログラムが異なると、結果が異なる場合があります。

于 2011-08-11T11:25:34.397 に答える