2011-08-11 6 views
1

Rubyを学ぶ上での少しの練習として、Rubyに単語カウンターを作成しました。異なる単語カウンター間の相違の原因

私は、JavaScriptKit.comとWordCountTool.comの単語カウンターと、Open Office Writerの単語カウンターを使用しました。

いくつかのテキストは次のような結果を生み出し

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

私の質問はこれです:なぜ、カウントはすべてのカウンターで同じ正確な抜粋のために異なるのですか?

不正確ではあるが閉じたカウントを引き起こすスクリプトの問題は何ですか?

スクリプトを改善してより正確にする方法はありますか?

+0

コードを入力してください。 – Serabe

+1

異なる数を与えるテキストの例を投稿できますか?私は、これは、ハイフネーションされた単語が1つか2つと数えられるかどうかや、いくつかの略語をどのように扱うかといった小さな違いから来ると推測しています。これです。 – hammar

+1

私はその基本的に小さな不正確さのためだと思う - いくつかのプログラムはスペースを見ると新しい単語を数えますが、これは間違っています。 "そして実現しました。 .i "を1つの単語としてカウントしたり、ハイフネーションされた単語を1つの単語としてカウントしたりします。 –

答えて

5

の定義に を依存するあなたは本当にカウントのための目的は非常に異なるものを意味する可能性がある、「単語」の定義については、求めています。元の投稿を例にしましょう。

最も単純な集計ツールは、"Why do the counts differ/change for the same[...]"を入れていた場合はどのようなしかし

text.split.count      #=> 111 

でしょうか?まあ、明らかに「違い/変化」は2つの単語なので、スラッシュを単語区切り文字として数えてください。実際、完全停止と次の単語との間にスペースを入れるのを忘れてしまったので、同じ単語にしないので、区切り文字として完全停止するようにしましょう。しかし、私はそれがURLのかどうかをチェックするために気にすることはできませんので、あなたが言及してそれらのウェブサイトには、二つの単語としてカウントする必要があります。

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

[OK]を、それはクールだが、実際の数字は、技術的に言葉ではない - と彼らの場合458は実際には5ワードである "450となる"と言われました。ですので、値引きもしましょう。

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

あなたはこのアイデアを得ています。あなたが得た結果は8語だけ異なっていたので、言葉の定義はそれほど明確ではありません。しかし、単語数はこれまでのところ大まかなガイドでしかないので、矛盾については心配しないでください。

1

WCの作成者が「単語」であると決めたものによって、異なる結果が得られます。句読点の特定の種類は...ワード区切り文字は、同様に空白、改行などとしてカウンターに応じて

WC上のWikipediaの記事からいくつかの情報を分類することができhttp://en.wikipedia.org/wiki/Word_count

異なるワードカウントプログラムかもしれません様々な結果が得られ、「単語」

関連する問題