Get-LevenshteinDistance
Получить оценку похожести строк.
Параметры
-String1 Строка для сравнения
-String2 Строка, с которой сравнивать
Возвращаемое значение
Процент совпадения, число от 0 до 1. Где 1 - строки идентичны, 0 - строки не совпадают.
Примеры
Получить оценку похожести строк.
Wake up, Neo, select all
Clear-Host
Get-LevenshteinDistance "Привет" "Превет"Получить оценку похожести строк.
Wake up, Neo, select all
Clear-Host
Get-LevenshteinDistance "У попа была собака" "У папы была собака"Найти самое похожее слово из словаря.
Wake up, Neo, select all
Clear-Host
# список слов
$dictionary = @("один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять")
# слово
$Number = "шест"
# найти самое похожее слово
$dictionary|Sort-Object -Property @{Expression = {Get-LevenshteinDistance $_ $Number}} -Descending|Select-Object -First 1Получить оценку всех слов из словаря, сравнивая с указанным словом.
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
}Решить пример такого вида: четыре + восемь = .
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