0

我正在做一些文本处理,我有兴趣根据单词和/或短语的频率来查找和评分文本段落,理想情况下使用 Ruby。

问题的一个例子是:我有“苹果”、“香蕉”、“水果沙拉”和“橙子”。该列表可能有数千个单词和/或短语长。

我有一段文本要搜索:

我有一套苹果、苹果电脑和 Apple.com 上的帐户,但从来没有水果沙拉。为什么他们从未发布过兼具橙子功能的苹果电脑,这让我无法理解。

这会吐出一个数组,上面写着:

苹果 4
橙色 1
香蕉 0
水果沙拉 1

理想情况下,我可以应用不同的权重,例如域“apple.com”获得两分等。

是否有对此特别有用的库?

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 回答
0

看起来你正在尝试计算词频,试试这个包https://github.com/reddavis/TF-IDF

于 2013-11-04T05:38:56.310 回答