Как проверить правильность предложения в Python?
Примеры:
I love Stackoverflow - Correct
I Stackoverflow love - Incorrect
Как проверить правильность предложения в Python?
Примеры:
I love Stackoverflow - Correct
I Stackoverflow love - Incorrect
Проверьте NLTK. У них есть поддержка грамматик, которые вы можете использовать для разбора вашего предложения. Вы можете определить грамматику или использовать предоставленную вместе с контекстно-свободным парсером. Если предложение анализируется, то оно имеет правильную грамматику; если нет, то это не так. Эти грамматики могут не иметь самого широкого охвата (например, он может не знать, как обрабатывать такие слова, как Qaru), но этот подход позволит вам конкретно сказать, что является действительным или недействительным в грамматике. Глава 8 книги NLTK посвящена анализу и должна объяснить, что вам нужно знать.
Альтернативой может быть написание интерфейса Python для синтаксического анализатора с широким охватом (например, Stanford parser или C & C). Это статистические парсеры, которые смогут понять предложения, даже если они не видели все слова или все грамматические конструкции раньше. Недостатком является то, что иногда синтаксический анализатор по-прежнему возвращает анализ предложения с плохой грамматикой, поскольку он использует статистику, чтобы сделать наилучшее возможное предположение.
Таким образом, это действительно зависит от того, какова ваша цель. Если вы хотите очень точный контроль над тем, что считается грамматическим, используйте синтаксический анализатор с NLTK. Если вам нужна надежность и широкий охват, используйте статистический анализатор.
Существуют различные веб-сервисы, предоставляющие автоматическую корректуру и проверку грамматики. У некоторых есть библиотека Python для упрощения запросов.
Насколько я могу судить, большинство из этих инструментов (конечно же, после Deadline и LanguageTool) основаны на правилах. Проверенный текст сравнивается с большим набором правил, описывающих типичные ошибки. Если правило соответствует, программное обеспечение называет это ошибкой. Если правило не соответствует, программное обеспечение ничего не делает (оно не может обнаружить ошибки, для которых нет правил).
import ATD
ATD.setDefaultKey("your API key")
errors = ATD.checkDocument("Looking too the water. Fixing your writing typoss.")
for error in errors:
print "%s error for: %s **%s**" % (error.type, error.precontext, error.string)
print "some suggestions: %s" % (", ".join(error.suggestions),)
Ожидаемый результат:
grammar error for: Looking **too the**
some suggestions: to the
spelling error for: writing **typoss**
some suggestions: typos
Возможно запустить серверное приложение на своем компьютере, рекомендуется 4 ГБ ОЗУ.
https://pypi.python.org/pypi/language-check
>>> import language_check
>>> tool = language_check.LanguageTool('en-US')
>>> text = 'A sentence with a error in the Hitchhikers Guide tot he Galaxy'
>>> matches = tool.check(text)
>>> matches[0].fromy, matches[0].fromx
(0, 16)
>>> matches[0].ruleId, matches[0].replacements
('EN_A_VS_AN', ['an'])
>>> matches[1].fromy, matches[1].fromx
(0, 50)
>>> matches[1].ruleId, matches[1].replacements
('TOT_HE', ['to the'])
>>> print(matches[1])
Line 1, column 51, Rule ID: TOT_HE[1]
Message: Did you mean 'to the'?
Suggestion: to the
...
>>> language_check.correct(text, matches)
'A sentence with an error in the Hitchhikers Guide to the Galaxy'
Также возможно частное использование серверной части.
Кроме того, это хакерская (скребущаяся на экране) библиотека для Ginger, возможно, одна из самых совершенных бесплатных в мире опций проверки грамматики.
Должна быть предусмотрена возможность написания сценария Microsoft Word и использования его функций проверки грамматики.
На веб-сайте Open Office есть список проверок грамматики. Отмечено в комментариях Патрика.