본문 바로가기

개발하자

문장이 맞는지 확인하는 방법(파이썬에서 간단한 문법 검사)?

반응형

문장이 맞는지 확인하는 방법(파이썬에서 간단한 문법 검사)?

파이썬에서 문장이 유효한지 확인하는 방법은 무엇입니까?

예:

I love Stackoverflow - Correct
I Stackoverflow love - Incorrect



확인해 보세요. 그들은 당신이 당신의 문장을 구문 분석하는 데 사용할 수 있는 문법을 지원한다. 문법을 정의하거나 문맥 없는 파서와 함께 제공된 문법을 사용할 수 있습니다. 만약 그 문장이 구문 분석된다면, 그것은 유효한 문법을 가지고 있고, 그렇지 않다면, 그것은 그렇지 않다. 이러한 문법들은 가장 넓은 범위를 가지고 있지 않을 수도 있지만(예: StackOverflow와 같은 단어를 다루는 방법을 모를 수도 있다), 이 접근 방식은 문법에서 무엇이 유효하거나 무효인지 구체적으로 말할 수 있게 해준다. NLTK 책에서 파싱을 다루며 당신이 알아야 할 것을 설명해야 한다.

대안은 파이썬 인터페이스를 넓은 범위의 파서(또는 )에 쓰는 것이다. 이것들은 비록 그들이 이전에 모든 단어나 모든 문법적 구조를 보지 못했더라도 문장을 이해할 수 있는 통계 파서이다. 단점은 때때로 파서가 가장 좋은 추측을 가능하게 하기 위해 통계를 사용하기 때문에 문법이 나쁜 문장에 대한 구문 분석을 여전히 반환한다는 것이다.

그래서, 그것은 여러분의 목표가 정확히 무엇인지에 달려있습니다. 문법적인 것으로 간주되는 것을 매우 정확하게 제어하려면 NLTK를 사용하여 컨텍스트가 없는 파서를 사용하십시오. 견고성과 넓은 범위를 원한다면 통계 파서를 사용하십시오.




자동 교정과 문법 검사를 제공하는 다양한 웹 서비스가 있습니다. 일부는 질의를 단순화하기 위해 파이썬 라이브러리를 가지고 있다.

내가 알기로는 대부분의 도구(확실히 마감 후 및 언어 도구)는 규칙 기반입니다. 선택한 텍스트는 일반적인 오류를 설명하는 대규모 규칙 집합과 비교됩니다. 규칙이 일치하면 소프트웨어는 이를 오류라고 부릅니다. 규칙이 일치하지 않으면 소프트웨어는 아무것도 하지 않습니다(규칙이 없는 오류는 감지할 수 없음).

마감 후

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을 권장합니다.

언어도구.

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'

서버 측을 개인적으로 실행할 수도 있습니다.

생강

또한, 은 Ginger를 위한 해키(스크린 스크래핑) 라이브러리로, 논란의 여지 없이 가장 세련된 무료 문법 검사 옵션 중 하나이다.

마이크로소프트 워드

마이크로소프트 워드를 스크립팅하고 문법 검사 기능을 사용할 수 있어야 한다.

패트릭의 댓글 중에 주목할 만한 것이 있다.




몇몇 다른 답들은 가장 큰 오픈 소스 문법 검사기를 언급했다. 그것은 지금까지 신뢰할 수 있는 최신 파이썬 포트를 가지고 있지 않았다.

나는 Python 3와 최신 버전의 Java 및 LanguageTool을 지원하는 문법 검사기를 추천한다. 유일한 최신 무료 파이썬 문법 검사기입니다. (완전 공개, 이 라이브러리를 만들었습니다.)




예를 들어 다음과 같습니다:

import language_tool_python
tool = language_tool_python.LanguageTool('en-US')

text = "Your the best but their are allso  good !"
matches = tool.check(text)
len(matches)

그리고 우리는 다음을 얻는다:

4

발견된 4가지 문제를 살펴볼 수 있습니다:

첫 번째 호:

matches[0]

그리고 우리는 다음을 얻는다:

Match({'ruleId': 'YOUR_YOU_RE', 'message': 'Did you mean "You\'re"?', 'replacements': ["You're"], 'context': 'Your the best but their are allso  good !', 'offset': 0, 'errorLength': 4, 'category': 'TYPOS', 'ruleIssueType': 'misspelling'})

두 번째 문제:

matches[1]

그리고 우리는 다음을 얻는다:

Match({'ruleId': 'THEIR_IS', 'message': 'Did you mean "there"?', 'replacements': ['there'], 'context': 'Your the best but their are allso  good !', 'offset': 18, 'errorLength': 5, 'category': 'CONFUSED_WORDS', 'ruleIssueType': 'misspelling'})

그리고 우리는 다음을 얻는다:

Match({'ruleId': 'MORFOLOGIK_RULE_EN_US', 'message': 'Possible spelling mistake found.', 'replacements': ['also', 'all so'], 'context': 'Your the best but their are allso  good !', 'offset': 28, 'errorLength': 5, 'category': 'TYPOS', 'ruleIssueType': 'misspelling'})

4호:

matches[3]

그리고 우리는 다음을 얻는다:

Match({'ruleId': 'WHITESPACE_RULE', 'message': 'Possible typo: you repeated a whitespace', 'replacements': [' '], 'context': 'Your the best but their are allso  good!', 'offset': 33, 'errorLength': 2, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace'})

더 자세한 예를 찾는다면 다음의 관련 게시물을 볼 수 있습니다




1단계

pip install Caribe

2단계

import Caribe as cb
sentence="I is playing football"
output=cb.caribe_corrector(sentence)
print(output)

반응형