Php 从两篇课文中找出相似的单词或短语

Php 从两篇课文中找出相似的单词或短语,php,logic,Php,Logic,我知道如何比较两个文本,并获得两个文本中出现的所有单字。但是我如何匹配表达式/短语呢 例如: 1.“这是电脑制造商苹果” 2.“苹果是一家总部位于加利福尼亚的伟大计算机制造商” 现在:) 苹果显然在这两个领域都存在 计算机和制造商都在这两个领域。我可以在这一点上检查它们是否是一组单词(一个接另一个) 但就处理速度而言,是否有办法匹配“电脑制造商”而不是每个人,然后检查是否作为一个整体出现 请记住,给出的示例并不重要,只是为了举例说明,在实践中可能会出现更复杂的句子/文本 编辑:听起来您可能正在寻

我知道如何比较两个文本,并获得两个文本中出现的所有单字。但是我如何匹配表达式/短语呢

例如: 1.“这是电脑制造商苹果” 2.“苹果是一家总部位于加利福尼亚的伟大计算机制造商”

现在:)

  • 苹果显然在这两个领域都存在

  • 计算机和制造商都在这两个领域。我可以在这一点上检查它们是否是一组单词(一个接另一个)

  • 但就处理速度而言,是否有办法匹配“电脑制造商”而不是每个人,然后检查是否作为一个整体出现


    请记住,给出的示例并不重要,只是为了举例说明,在实践中可能会出现更复杂的句子/文本

    编辑:听起来您可能正在寻找解决方案,或者更一般地说。如果是这样的话,那么您基本上需要一个“diff”实用程序的变体,而实现的细节当然很大程度上取决于您的需求细节。

    您可以解析两个字符串并在空白处拆分,以获得令牌数组A1和A2。然后,简单地检查A1中的每个连续子序列,以查找A2中的匹配子序列。对我来说,这看起来像O(n^4),这比获得所有单个匹配并寻找组合要好。。。这不是多项式

      1. the cat is on the roof
      2. a man is on the stage
    
      A1 = [the, cat, is, on, the, roof]
      A2 = [a, man, is, on, the, stage]
    
      [the]: no match
      [cat]: no match
      [is]: match
      [is, on]: match
      [is, on, the]: match
      [is, on, the, roof]: no match
      [on]: match
      [on, the]: match
      [on, the, roof]: no match
      [the]: match
      [the, roof]: no match
      [roof]: no match
      -end-
    

    递归似乎是实现这样的东西的一种优雅方式。如果你需要更高效的东西,我相信有比这更聪明的方法。

    如果他想要所有的常用字符串,这似乎不是正确的方法。。。也许我错过了什么。也许LCS的标准解决方案会访问所有候选人,这样他们就可以被列举出来?-1用于用问题回答问题。如果这是你想要了解的,你应该把它作为一个评论。@barfoon:我觉得这是一个语义上的诡辩。但我不是那么专业,所以如果我们在这里就是这样的话,那就好了。@Peter-我同意你的看法,我不是想太迂腐,只是一个好公民。谢谢你没有粗鲁地回答:)@barfoon:因为原始海报没有任何附加评论,我将重写我的反问题作为有条件的回答。希望谷歌不会使用O(n^4)算法来检查网站中的内容修改。是的,但有一些观察。。。这很容易理解,比OP的建议要好得多,它的平均案例性能可能比O(n^4)好得多,可能更接近O(n^2)。