在我的应用程序上,当用户选择兴趣(例如:ios)时,我想显示相关的兴趣(swift、xcode、apple 等)。我有一个大约 700 个兴趣/标签的列表(其中大约 300 个可以归类为技术)。如何设计系统,以便当用户选择 700 项中的一项时,系统可以显示其他相关项?请注意,其中不涉及“学习”。我只是自己去分类,这个列表大部分是静态的。
这就是我一直在思考的方式:
我可以为每个兴趣分配一个类别列表。这些类别从窄到宽。最广泛的类别只是“技术”,所以如果用户选择“ios”,我可以立即消除 400 个非技术兴趣。现在我可以通过查看更窄的类别进行微调(例如:“mobile-apps”,因此我可以推荐归类为“mobile-apps”的内容。我可以通过查看更窄的类别来进一步微调“ ios-apps”。因此,当用户选择兴趣时,我首先搜索类别最窄的项目,如果我需要更多结果,并且需要搜索更多,那么我会更广泛。开始使用这个, 对于每个兴趣,我最多可以有三个类别(窄、中、宽)。一旦我确定了一些类别,我可以将它们指定为窄、中、或宽泛到每一个。现在,对于任何给定的兴趣,我可以找出哪些其他兴趣具有相同的窄、中或宽类别。
我正在考虑的另一种方法是为每个兴趣维护一个相关兴趣列表。这需要我做更多的初步工作,因此对于 700 个兴趣中的每一个,我会找到与其最相关的 5-10 个其他兴趣,例如,“ios”可能具有相关兴趣,例如 [swift, xcode, iphone, ipad],所以当用户进入 ios 时,我只需要查找这个列表。我可以按相关顺序维护此列表。这种方法很乏味,因为当我想在我的 700 个兴趣列表中添加一个新兴趣时,我必须逐个查看是否需要将这个新兴趣添加为相关兴趣。
我的问题是——我想重新发明轮子吗?有没有标准的数据模型和算法来做这种事情?我一直在尝试用谷歌搜索,结果似乎表明了兴趣图、聚类算法之类的东西。我没有数据科学或机器学习方面的背景。任何输入表示赞赏!