0

私はいくつかのテキスト処理を行っており、理想的にはRubyを使用して、単語やフレーズの頻度に基づいてテキストの段落を見つけてスコアリングすることに興味があります。

問題の例: 「リンゴ」、「バナナ」、「フルーツ サラダ」、「オレンジ」があります。このリストは、数千の単語および/またはフレーズの長さになる可能性があります。

検索するテキストの本文があります。

私は一組のりんごとりんごのコンピュータ、そして Apple.com のアカウントを持っていますが、フルーツ サラダは一度も持っていません。なぜ彼らがオレンジを兼ねた Apple Computer をリリースしなかったのか、私には理解できませんでした。

これにより、次のような配列が吐き出されます。

アップル4
オレンジ 1
バナナ 0
フルーツサラダ 1

理想的には、ドメイン「apple.com」が 2 ポイントを獲得するなど、さまざまな重みを適用できます。

これを行うのに特に役立つライブラリはありますか?

4

3 に答える 3

1
text = <<_.downcase
I have a set of apples, and apple computer, and an account on Apple.com. Why they never released an Apple Computer that doubled as an orange was beyond me.
_

["apple", "banana",  "fruit salad", "orange"]
.map{|w| [w, text.scan(/\b#{w}\b/).length]}
# => [
#   ["apple", 3],
#   ["banana", 0],
#   ["fruit salad", 0],
#   ["orange", 1]
# ]
于 2013-11-04T05:19:11.100 に答える
0

これを行う非常に簡単な方法は、カウントのハッシュを取得することです。ここで、keyは単語で、 はvalue単語が出現するたびにインクリメントされます。

ハッシュを作成したら、 などの各単語のカウントを簡単に出力できますApple, Orange, Banana。大文字と小文字が問題にならない場合は、キーとして使用する前に各単語を小文字に変換してください。

于 2013-11-04T05:04:36.363 に答える