我在'类别'中有字符串模式('规则')。 e.g:
组别
类别2
现在,我希望能够根据这些规则对字符串进行“分类”。假设我们想要找出字符串fusce laoreet amet ante nisi
属于哪个类别。我当前的实现将使用levenshtein distance
实现,并发现字符串大部分“看起来像”fusce sit amet ante nisi
,因此,类别为Category1
。
假设我们要对vivamus vel lorem imperdiet sit
进行分类。因为我在levenshtein distance
算法上将字符串长度的1/5设置为阈值(即字符串必须至少与其匹配的80%相似),所以字符串将保持“未分类”。
在这种情况下,我会继续使用以下算法......
从每个类别中,我将提取“常用词” - 即在类别中的规则之间重复的词。在某种程度上,这些是该类别中的主导词。所以,我们将:
组别
类别2
现在我将逐字逐句地分割vivamus vel lorem imperdiet sit
字符串,我会给每个类别一个值,具体取决于该类别的“主导词”中存在多少个字符串字。即:
Category1的值为3(lorem)+ 2(sit),而Category2的值为0(我正在分类的字符串的分割单词与类别中的主导单词之间没有匹配)。价值最高的类别“获胜”。
简而言之,我的算法是:
有更好的方法吗?你看到这个算法有问题吗?有什么建议吗?
答案 0 :(得分:1)
我没有看到算法有问题。但是,我认为这个问题背后可能存在问题。
没有算法,只要它们被正确实现,本身就会出现问题。这是我们在特定域的情况下使用它们会产生适当或不适当的结果。
因此,我不建议您找到您能想到的最佳算法,而是建议您在您考虑的特定情况下将算法付诸实践。这是一种练习,而不是作为一个孤立实体的算法,它将为您提供有关给定解决方案的局限性和优势的见解。换句话说,不要事先追求完美的抽象。实施可能有效的最简单的解决方案,然后在了解更多信息的同时不断改进。