it-swarm.com.ru

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

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

Примеры:

I love Stackoverflow - Correct
I Stackoverflow love - Incorrect
40
ChamingaD

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

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

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

21
dhg

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

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 Hitchhiker’s 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 Hitchhiker’s Guide to the Galaxy'

Также возможно запустить серверную часть в частном порядке.

Имбирь

Кроме того, this - это хакерская (соскребающая с экрана) библиотека для Ginger, возможно, одна из самых полных бесплатных опций проверки грамматики.

Microsoft Word

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

Больше

Существует кураторский список программ проверки грамматики на сайте Open Office . Отмечено в комментариях Патрика.

31
user7610