【发布时间】:2017-06-15 16:56:36
【问题描述】:
我已经实现了一个自定义的 ruby 方法,它使用循环对相似的文本进行分组,
array = ["South East Queensland", "Wide Bay Burnett", "Margaret River", "Port Pirie", "Gippsland", "Elizabeth", "Barossa"]
similarity_group = []
similarity_percentage = 60.0
array.each do |first_text|
results.each do |second_text|
result = first_text.upcase.similar(second_text.upcase)
if result >= similarity_percentage
...
...
...
end
end
end
考虑2000个元素的上述实现,然后将它们分组将花费4000000次迭代,因为每个元素将相互检查。
是否有任何高性能解决方案或 gem 或库,例如根据它们的相似性对大容量数组进行分组。
(我需要使用相同的数组元素进行相似性检查)
样本期望:[array1].similarity([array1])
【问题讨论】:
-
similar来自哪里?是来自宝石吗?哪一个? -
注意:您使用了两次
first_text。我想相似性总是 1 :) 一个明显的优化是仅在string1 >= string2时检查 2 个字符串。它将迭代次数减半。
标签: ruby-on-rails ruby similarity