Get-LevenshteinDistance

Получить оценку похожести строк.
Параметры

  • -String1 Строка для сравнения

  • -String2 Строка, с которой сравнивать

Возвращаемое значение

  • Процент совпадения, число от 0 до 1. Где 1 - строки идентичны, 0 - строки не совпадают.

Примеры

  1. Получить оценку похожести строк.

    Wake up, Neo, select all

    Clear-Host
    Get-LevenshteinDistance "Привет" "Превет"
  2. Получить оценку похожести строк.

    Wake up, Neo, select all

    Clear-Host
    Get-LevenshteinDistance "У попа была собака" "У папы была собака"
  3. Найти самое похожее слово из словаря.

    Wake up, Neo, select all

    Clear-Host
    # список слов
    $dictionary = @("один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")

    # слово
    $Number = "шест"

    # найти самое похожее слово
    $dictionary|Sort-Object -Property @{Expression = {Get-LevenshteinDistance $_ $Number}} -Descending|Select-Object -First 1
  4. Получить оценку всех слов из словаря, сравнивая с указанным словом.

    Wake up, Neo, select all

    Clear-Host
    # список слов
    $dictionary = @("один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")

    # слово
    $Number = "шест"

    Write-Host "Оценка схожести:"
    $dictionary|ForEach-Object{
    Write-Host $_ -ForegroundColor Cyan -NoNewline
    $percent = Get-LevenshteinDistance $_ $Number
    Write-Host " `t$percent " -ForegroundColor Green
    }
  5. Решить пример такого вида: четыре + восемь = .

    Wake up, Neo, select all

    Clear-Host
    # список слов
    $dictionary = @("ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")

    $Text = "4етыре + 3осемь = " # строка, в которой слова написаны с ошибками
    $Words = -split $Text # разделить строку на слова, разделитель пробел

    # найти самое похожее слово из словаря
    $Words[0] = $dictionary|Sort-Object -Property @{Expression = {Get-LevenshteinDistance $_ $Words[0]}} -Descending|Select-Object -First 1
    $Words[2] = $dictionary|Sort-Object -Property @{Expression = {Get-LevenshteinDistance $_ $Words[2]}} -Descending|Select-Object -First 1

    # найти индекс слов в массиве и сложить их
    $result = $dictionary.IndexOf($Words[0]) + $dictionary.IndexOf($Words[2])

    Write-Host $Text -ForegroundColor Yellow
    Write-Host ($Words[0] + ' + ' + $Words[2] + ' = ' + $result) -ForegroundColor Cyan