gpt4 book ai didi

arrays - 如何通过标签匹配和组匹配对该数组进行最佳排序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:19 25 4
gpt4 key购买 nike

我有一个条目数组 arr 和一个 entryA。我的目标是在 arr 中找到与 entryA 最相关的条目。

我决定使用标记出现次数和组成员资格来对 arr 进行排序。我想尽可能地减少时间和空间:

# For some entry entryX in array arr:
entryX.tag_list #returns the array of tags for entryX
entryX.groups #returns the array of groups for entryX
entryA.user #returns the user who created entryA

# Similarly, for entryA
entryA.tag_list #returns the array of tags for entryA
entryA.groups #returns the array of groups for entryA
entryA.user #returns the user who created entryA

我想对数组 arr 进行排序,使得 arr 中与 entryA 共享最多相同组的条目,最多entryA.tag_list 中由同一用户创建的相同标签的数量将具有优先权,并将位于 arr[0] 处。因此,我想为每个共享组提供 1 个系数,为每个共享标签提供 1 个系数,如果由同一用户创建则为 2 个。

实现此目标的最佳算法是什么?

最佳答案

TAG_LIST_UNIT_VALUE = 1
GROUPS_UNIT_VALUE = 1
SAME_USER_VALUE = 2

def score(entryA, entryX)
TAG_LIST_UNIT_VALUE * (entryA.tag_list & entryX.tag_list).size +
GROUPS_UNIT_VALUE * (entryA.groups & entryX.groups).size +
(entryA.user == entryX.user) ? SAME_USER_VALUE : 0
end

arr.sort_by { |entryX| -score(entryA, entryX) }

entryA.tag_list & entryX.tag_listentryAentryX 共有的一组数组。类似于 groupsscore 返回的值被取反以使排序递减。

关于arrays - 如何通过标签匹配和组匹配对该数组进行最佳排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40932338/

25 4 0