我们有一个聊天机器人,有几个问题和答案。但是,当用户提出问题时,问题需要与数据库中的问题完全相同。
$check_data = "SELECT antwoord FROM Chatbot WHERE vraag LIKE '%$getMesg%'";
是否有一个选项,用户的问题可以是,例如,90%是相同的查询。
k75qkfdt1#
是的,您可以使用“Levenshtein距离”算法来执行基于用户问题和数据库中查询的相似性的模糊搜索。“Levenshtein距离”算法计算将一个字符串转换为另一个字符串所需的单个字符编辑(插入,删除或替换)的数量。下面是一个使用“Levenshtein距离”算法的PHP函数示例:
function levenshteinSearch($question) { // Get all questions from the Chatbot table $questions = array(); $query = "SELECT vraag FROM Chatbot"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { array_push($questions, $row['vraag']); } // Find the best match using the Levenshtein distance $bestMatch = ''; $lowestDistance = -1; foreach ($questions as $q) { $distance = levenshtein($question, $q); if ($lowestDistance == -1 || $distance < $lowestDistance) { $lowestDistance = $distance; $bestMatch = $q; } } // Return the answer corresponding to the best match $query = "SELECT antwoord FROM Chatbot WHERE vraag='$bestMatch'"; $result = mysqli_query($connection, $query); $answer = ''; if (mysqli_num_rows($result) > 0) { $row = mysqli_fetch_assoc($result); $answer = $row['antwoord']; } return $answer; }
请注意,“Levenshtein距离”算法在计算上可能很昂贵,特别是当数据库中有大量问题时。您应该仔细测试您的实现,以确保它提供有用和准确的结果,而不会降低应用程序的速度。我希望这对你有帮助。谢谢你。
1条答案
按热度按时间k75qkfdt1#
是的,您可以使用“Levenshtein距离”算法来执行基于用户问题和数据库中查询的相似性的模糊搜索。“Levenshtein距离”算法计算将一个字符串转换为另一个字符串所需的单个字符编辑(插入,删除或替换)的数量。
下面是一个使用“Levenshtein距离”算法的PHP函数示例:
请注意,“Levenshtein距离”算法在计算上可能很昂贵,特别是当数据库中有大量问题时。您应该仔细测试您的实现,以确保它提供有用和准确的结果,而不会降低应用程序的速度。
我希望这对你有帮助。
谢谢你。