Как я могу рассчитать точность исправления орфографии? - PullRequest
0 голосов
/ 01 октября 2019

Я работаю в коде для извлечения неправильных слов в тексте, я использую python с библиотекой "textblob". В этой библиотеке есть функция correction(), но она просто возвращает правильную фразу на основе неправильной фразы, например:

in: b = TextBlob("I havv goood speling!")
in: print(b.correct())
out: I have good spelling!

Я хотел бы рассчитать точность коррекции, т.е. получить процентисправления на основе исходного текста или просто получить количество неправильных слов в тексте.

Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Метод correct не возвращает достоверности, Word.spellcheck - не возвращает. Тем не менее, это не очень помогает, поскольку правильные слова и те, которые были зафиксированы с максимальной достоверностью, имеют значение достоверности 1,0, и вы не можете определить, сколько слов было исправлено.

Вы можете получить их количество, получив исходное словосписок, список фиксированных слов, а затем используйте понимание списка, чтобы получить слова, отсутствующие в исходном списке:

from textblob import TextBlob
text = 'I havv goood speling!'
orig_words = text.split()
fixed_words = TextBlob(text).correct().split()
print(len([(x,y) for x,y in zip(orig_words, fixed_words) if x != y])) # => 3
0 голосов
/ 01 октября 2019

Для сравнения строк вы обычно используете расстояние Левенштейна. Это важно для того, насколько «неправильным» было слово. Для точности исправления вам нужны языковые данные, чтобы проверить правильность вывода коррекции (), но я думаю, что вы просто хотите, чтобы число сообщало вам, какое соотношениетекст должен быть исправлен, что является простой статистикой подсчета ложных срабатываний, истинных положительных результатов, истинных негативов и ложных негативов. просто Google "точность", "вспомнить" и "F-оценка".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...