扫描字符串数组,并按最常用的字符/单词(PHP)对它们进行分组

扫描字符串数组,并按最常用的字符/单词(PHP)对它们进行分组,php,arrays,Php,Arrays,我有一大堆要整理的字符串。目前,我手动检查它们,并根据在字符串中可以看到的单词对它们进行分组,但是,我想看看是否可以用PHP脚本完成。例如,如果我的列表包含100个左右的字符串,如“fungames”或“funnychat”,我会将它们分组,因为它们都包含单词“fun”(并确保每个字符串在所有字符串/单词组中只使用一次) 因此,假设您有一个数组('gaming'、'game'、'fun'、'fungames'),则需要根据最常见的单词/字符串将其组织到不同的组中我们不知道要与哪些单词/字符串匹配

我有一大堆要整理的字符串。目前,我手动检查它们,并根据在字符串中可以看到的单词对它们进行分组,但是,我想看看是否可以用PHP脚本完成。例如,如果我的列表包含100个左右的字符串,如“fungames”或“funnychat”,我会将它们分组,因为它们都包含单词“fun”(并确保每个字符串在所有字符串/单词组中只使用一次)

因此,假设您有一个
数组('gaming'、'game'、'fun'、'fungames')
,则需要根据最常见的单词/字符串将其组织到不同的组中我们不知道要与哪些单词/字符串匹配,因此需要对字符串进行检查,直到找到匹配项。另外,字符串在单词之间没有任何空格(我想这会使它更复杂)。我是否也正确地认为,当您需要处理(比如)1000个种类更多的字符串时,这将花费大量时间

上述示例数组的示例输出可能是:

'gaming'=>[
    'gaming',
],
'game'=>[
    'game',
    'fungames',
],
在上面的示例输出中,它不会将“fun”显示为分组依据的新类别,因为“fun”字符串已在前一个组的数组集中使用。此外,优先考虑更长的字符串(因为它将捕获更完整的“单词”,而不是被拆分的“游戏”中的“ing”。此外,它的目标是避免创建小组,但尽量将字符串组合在一起(例如,它不会只将“fungames”添加为自己的组,然后将“fun”添加为另一组)


我明白这是否太复杂了-如果需要,我很乐意手动操作,但如果能以编程方式完成,我会非常感兴趣!

这当然很有趣,但我担心您没有选择足够的规则来获得一致的结果,例如,它作为一个单词的最小字母数是多少(或者是“e”)一个类别)?如何确保它是一个现有的单词(或者“游戏”和“阅读”可以归类为“ing”)?规则“优先考虑更长的字符串”和“不在新类别中,因为在以前的组中使用过”可能相互矛盾:如果“有趣”会发生什么首先找到?一个可能的解决方案是将自己限制为数组中存在的字符串作为类别,或者实际上需要更多的规则。啊,你是对的。这个问题需要更多的思考。我实际上建议最小字母为1,因为语言中的单词只有1个字母!即使在英语中,字母A和I也是单词。A对于可能存在的矛盾,我认为一个连续的顺序就足够了。我们应该首先优先考虑每个类别组中单词的唯一性,然后是更长的字符串。将字符串限制为数组中存在的字符串应该是可行的,但这不会产生太大的结果,而且限制太大。