首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Levenshtein距离验证javascript中的句子?

如何使用Levenshtein距离验证javascript中的句子?
EN

Stack Overflow用户
提问于 2021-03-25 18:54:55
回答 1查看 43关注 0票数 0

我正在尝试使用Levenshtein距离比较两个句子("Kat“和输入"Spat")。如果句子足够相似,我希望出现一个“正确”的文本。我复制的脚本运行得很好,但If语句有点问题。我希望出现一个“正确的”文本,如果Levenshtein距离被测量为"2“(就像"Kat”和“Spat”的情况一样),但我不知道哪个变量应该设置为等于"2“。

代码语言:javascript
复制
//Codes by Jared Stilwell
var matrix;
var first = "Kat";

function levenshteinDistance(a, b) {
  if (b.length == 0) return a.length;

  matrix = [];

  // increment along the first column of each row
  for (var i = 0; i <= b.length; i++) {
    matrix[i] = [i];
  }

  // increment each column in the first row
  for (var j = 0; j <= a.length; j++) {
    matrix[0][j] = j;
  }

  // fill in the rest of the matrix
  for (i = 1; i <= b.length; i++) {
    for (j = 1; j <= a.length; j++) {
      if (b.charAt(i - 1) == a.charAt(j - 1)) {
        matrix[i][j] = matrix[i - 1][j - 1];
      } else {
        matrix[i][j] = Math.min(
          matrix[i - 1][j - 1] + 1, // substitution
          Math.min(
            matrix[i][j - 1] + 1, // insertion
            matrix[i - 1][j] + 1
          )
        ); // deletion
      }
    }
  }

  return matrix[b.length][a.length];
}

function updateDistance() {
  var second = $(".term-2").val();
  $(".js-distance").text(levenshteinDistance(first, second));
}

$(".term-2").on("keyup", function(ev) {
  ev.preventDefault();
  updateDistance();
});

updateDistance();


//My own part which I can't figure out
function testknap() {
  if (matrix == 2) // I CAN'T FIGURE OUT THIS PART?
    document.getElementById("correct_text_here").innerHTML = "Correct";
};
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="js-distance">0</div>
<!-- The distance points -->
<!-- Textform -->
<input class="term-2" value="Spat" placeholder="Skriv her">


<button onclick="testknap()">Tryk</button>
<!-- A submit button -->
<!-- Text which appear if the input is correct -->
<p id="correct_text_here"></p>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-25 18:59:54

只需读取值

代码语言:javascript
复制
function testknap() {
  if (document.querySelector(".js-distance").textContent == 2)
    document.getElementById("correct_text_here").innerHTML = "Correct";
};

代码语言:javascript
复制
//Codes by Jared Stilwell
var matrix;
var first = "Kat";

function levenshteinDistance(a, b) {
  if (b.length == 0) return a.length;

  matrix = [];

  // increment along the first column of each row
  for (var i = 0; i <= b.length; i++) {
    matrix[i] = [i];
  }

  // increment each column in the first row
  for (var j = 0; j <= a.length; j++) {
    matrix[0][j] = j;
  }

  // fill in the rest of the matrix
  for (i = 1; i <= b.length; i++) {
    for (j = 1; j <= a.length; j++) {
      if (b.charAt(i - 1) == a.charAt(j - 1)) {
        matrix[i][j] = matrix[i - 1][j - 1];
      } else {
        matrix[i][j] = Math.min(
          matrix[i - 1][j - 1] + 1, // substitution
          Math.min(
            matrix[i][j - 1] + 1, // insertion
            matrix[i - 1][j] + 1
          )
        ); // deletion
      }
    }
  }

  return matrix[b.length][a.length];
}

function updateDistance() {
  var second = $(".term-2").val();
  $(".js-distance").text(levenshteinDistance(first, second));
}

$(".term-2").on("keyup", function(ev) {
  ev.preventDefault();
  updateDistance();
});

updateDistance();



function testknap() {
  if (document.querySelector(".js-distance").textContent == 2)
    document.getElementById("correct_text_here").innerHTML = "Correct";
};
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="js-distance">0</div>
<!-- The distance points -->
<!-- Textform -->
<input class="term-2" value="Spat" placeholder="Skriv her">


<button onclick="testknap()">Tryk</button>
<!-- A submit button -->
<!-- Text which appear if the input is correct -->
<p id="correct_text_here"></p>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66798009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档