Подтвердить что ты не робот

Как проверить правильность предложения (простая проверка грамматики в Python)?

Как проверить правильность предложения в Python?

Примеры:

I love Stackoverflow - Correct
I Stackoverflow love - Incorrect
4b9b3361

Ответ 1

Проверьте NLTK. У них есть поддержка грамматик, которые вы можете использовать для разбора вашего предложения. Вы можете определить грамматику или использовать предоставленную вместе с контекстно-свободным парсером. Если предложение анализируется, то оно имеет правильную грамматику; если нет, то это не так. Эти грамматики могут не иметь самого широкого охвата (например, он может не знать, как обрабатывать такие слова, как Qaru), но этот подход позволит вам конкретно сказать, что является действительным или недействительным в грамматике. Глава 8 книги NLTK посвящена анализу и должна объяснить, что вам нужно знать.

Альтернативой может быть написание интерфейса Python для синтаксического анализатора с широким охватом (например, Stanford parser или C & C). Это статистические парсеры, которые смогут понять предложения, даже если они не видели все слова или все грамматические конструкции раньше. Недостатком является то, что иногда синтаксический анализатор по-прежнему возвращает анализ предложения с плохой грамматикой, поскольку он использует статистику, чтобы сделать наилучшее возможное предположение.

Таким образом, это действительно зависит от того, какова ваша цель. Если вы хотите очень точный контроль над тем, что считается грамматическим, используйте синтаксический анализатор с NLTK. Если вам нужна надежность и широкий охват, используйте статистический анализатор.

Ответ 2

Существуют различные веб-сервисы, предоставляющие автоматическую корректуру и проверку грамматики. У некоторых есть библиотека 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 ГБ ОЗУ.

LanguageTool

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

Должна быть предусмотрена возможность написания сценария Microsoft Word и использования его функций проверки грамматики.

Более

На веб-сайте Open Office есть список проверок грамматики. Отмечено в комментариях Патрика.