在字符串中查找相似的单词


Find similar words in a string

我正在尝试在字符串中获取类似的单词。假设我有一组5个关键词。

猫,狗,动物,食物,水

我有一个类似的字符串

"猫是一种动物,但和狗不同。它们的食物不一样。但它们都喝水。"

如果我在这种情况下尝试使用strpos,我可能只找到一个类似的词"水",但事实上还有其他词。什么可以帮助我检测上面提到的句子中的所有关键词?

您可能存在区分大小写的问题。尝试使用stripos()函数。这也可能是复数或缩写的问题,在这种情况下,正则表达式可能会使这更容易。

用于使用正则表达式-
这可能会减少缩写和边界标点符号等
如果检测相似性,则需要更精细的技术
一直到角色级别。

(?i)(?<!'S)(?:cat(?:'?s)?|dog(?:'?s)?|animal(?:'?s)?|food|water)(?:(?='p{P})|(?!'S))

格式化:

 (?i)
 (?<! 'S )
 (?:
      cat
      (?: '?s )?
   |  dog
      (?: '?s )?
   |  animal
      (?: '?s )?
   |  food
   |  water
 )
 (?:
      (?= 'p{P} )
   |  (?! 'S )
 )