Как автоматически исправлять ошибки в тексте? (Расстояния Левенштейна)

Алексей Иванов

Новичок
Пользователь
Апр 24, 2020
3
0
1
Нужно написать код программы, которая будет исправлять ошибки в тексте (при помощи расстояния Левенштейна)
 

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
Заголовок вопроса был исправлен. Но, на будущее ознакомьтесь с правилами: https://itfy.org/threads/kak-pravilno-sostavit-vopros-i-ne-poluchit-ban.1/
 
  • Мне нравится
Реакции: Алексей Иванов

Алексей Иванов

Новичок
Пользователь
Апр 24, 2020
3
0
1
Заголовок вопроса был исправлен. Но, на будущее ознакомьтесь с правилами: https://itfy.org/threads/kak-pravilno-sostavit-vopros-i-ne-poluchit-ban.1/
Спасибо!)
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Нужно написать код программы, которая будет исправлять ошибки в тексте (при помощи расстояния Левенштейна)
Добавьте подробное описание задачи (условия, пример входных и выходных данных) и форматированный код вашего варианта решения (пусть даже не рабочего). А то вопрос выглядит как заказ на бирже фриланса.
 

Алексей Иванов

Новичок
Пользователь
Апр 24, 2020
3
0
1
Добавьте подробное описание задачи (условия, пример входных и выходных данных) и форматированный код вашего варианта решения (пусть даже не рабочего). А то вопрос выглядит как заказ на бирже фриланса.
Python 3.8:
Нужно, чтобы программа находила ошибки в словах, которые вводит пользователь и исправляла их. Например: "Првет" - исправилось бы на "Привет". Реализация через расстояние Левенштейна:
def distance (a, b):
"Calculates the Levenshtein distance between a and b."
n, m = len(a), len(b)
if n > m:
a, b = b, a
n, m = m, n
current_row = range(n+1)
for i in range(1, m+1):
previous_row, current_row = current_row, +[0]*n
for j in range(1, m+1):
add, delete, change = previous_row[j]+1, current_row[j-1]+1, previous_row[j-1]
if a[j-1] != b[i-1]:
change +=1
current_row[j] = min(add, delete, change)

return current_row[n]
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Нужно, чтобы программа находила ошибки в словах, которые вводит пользователь и исправляла их. Например: "Првет" - исправилось бы на "Привет". Реализация через расстояние Левенштейна:
Расстояние Левенштейна просто показывает насколько символов два слова отличаются. Чтобы программа могла автоматически проверить текст нужно как минимум подключить ее к большому словарю с правильными словами и даже это не гарантирует что не будет ошибок потому что много слов, которые отличаются на 1 букву.
Вот тут можно почитать про проверку орфографии и посмотреть пример: ссылка
 
Последнее редактирование:

Форум IT Специалистов