web-dev-qa-db-ja.com

文が正しいかどうかを確認する方法(Pythonの簡単な文法チェック)?

Pythonで文が有効かどうかを確認する方法は?

例:

I love Stackoverflow - Correct
I Stackoverflow love - Incorrect
41
ChamingaD

[〜#〜] nltk [〜#〜] を確認してください。彼らはあなたの文章を解析するために使用できる文法をサポートしています。文法を定義するか、提供されているものをコンテキストフリーパーサーと共に使用できます。文が解析される場合、有効な文法があります。そうでない場合は、そうではありません。これらの文法は、最も広い範囲を網羅していない場合があります(たとえば、StackOverflowのようなWordの処理方法がわからない場合があります)が、このアプローチにより、文法の有効または無効を具体的に言うことができます。 第8章 NLTK本の解析について説明しているため、知っておくべきことを説明する必要があります。

別の方法は、pythonワイドカバレッジパーサーへのインターフェイスを記述することです( Stanfordパーサー または C&C など)。これらは統計的です。パーサーは、すべての単語やすべての文法構造を一度も見たことがなくても、文を理解できるようになります。可能な限り最高の推測を行います。

だから、それは本当にあなたの目標が何であるかに正確に依存します。文法と見なされるものを非常に正確に制御したい場合は、NLTKでコンテキストフリーパーサーを使用します。堅牢性と広範囲をカバーしたい場合は、統計パーサーを使用してください。

21
dhg

自動化された校正と文法チェックを提供するさまざまなWebサービスがあります。クエリを簡素化するためにPython=ライブラリがあります。

私が知る限り、これらのツールのほとんど(確かにAfter the 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

自分のマシンでサーバーアプリケーションを実行することができます。4GB 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のハッキング(スクリーンスクレイピング)ライブラリであり、おそらく最も洗練された無料の文法チェックオプションの1つです。

マイクロソフトワード

Microsoft Wordのスクリプトを作成し、その文法チェック機能を使用できるようにする必要があります。

もっと

Open Office Webサイトの文法チェッカーのキュレーションリスト があります。パトリックのコメントに記されています。

31
user7610