使用爆炸组合词

时间:2019-06-08 10:24:48

标签: php explode

我想知道如何解决这个问题。

用户给我一个句子,例如:“我喜欢编码”。 我的数据库中有一个名为“爱编码”的关键字,想查看关键字是否在给定的句子中。

因此,我将从数据库中删除所有关键字,对其进行循环,然后查看是否存在preg_match。 现在出现了问题,很多人都在打错字。 我考虑过通过levenstein方法将关键字与句子中的单词进行比较。

您的问题是爆炸功能。由于我的关键字由多个单词组成,因此爆炸功能会将整个句子分解为单个单词。 从而无法识别我的关键字。有没有一种方法可以将上述情感分为多种组合,而不仅仅是单个单词?

我正在考虑从$ input删除所有空格。 (将变为“ ilovetocodr”)对数据库哨兵执行相同操作,并使用levenshtein。

该代码将有效,但仅适用于单个单词的关键字。爆炸功能会将句子分成单个单词。

$input = 'I love to codr';

$keywords = \Layla\Keyword::all();
$words = explode(' ', $input);

foreach ($words as $word) {
    foreach ($keywords as $keyword) {
        $similarity = levenshtein($word, $keyword);
        if ($similarity <= 1) 
            print "$keyword is similar to $word";
    }
}

然后,我尝试删除空格并将关键字与句子进行比较,但是两者之间的差别就很大(原本是期望如此)。

$sentence = 'ilovetocodrandstuff';
$keyword = 'ilovetocode';

$similarity = levenshtein($sentence, $keyword);

echo $similarity;

将输出9。

0 个答案:

没有答案