php Chatbot查询90%正确

9rygscc1  于 2023-06-28  发布在  PHP
关注(0)|答案(1)|浏览(91)

我们有一个聊天机器人,有几个问题和答案。但是,当用户提出问题时,问题需要与数据库中的问题完全相同。

$check_data = "SELECT antwoord FROM Chatbot WHERE vraag LIKE '%$getMesg%'";

是否有一个选项,用户的问题可以是,例如,90%是相同的查询。

k75qkfdt

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距离”算法在计算上可能很昂贵,特别是当数据库中有大量问题时。您应该仔细测试您的实现,以确保它提供有用和准确的结果,而不会降低应用程序的速度。
我希望这对你有帮助。
谢谢你。

相关问题