Home

Awesome

한국어 문장을 교정합니다.

<a name="requirements"></a>

공통 요구사항

  1. Python3가 설치되어 있어야 합니다.

  2. 다음 명령을 실행해 필요한 패키지를 설치합니다.

    pip install -r requirements.txt

팁:

correct.py

(proofread.py로 이름 변경됨)

grmchk.py

문장의 문법을 검사합니다.

사용 예:

$ echo "양자 알고리즘의 제시되었다." | grmchk.py
Trying to import KoNLPy...
Loading rule file: ko_grammar.json...
양자 알고리즘의 제시되었다.

     ^
   => 알고리즘의 제시되었다 →  알고리즘이 제시되었다	 (0167020a_주어-술어 호응 : https://wikidocs.net/167020#a)

=== Summary ===
0167020a_주어-술어 호응 ==> count: 1

proofread.py

원고(docx 파일)에서 규칙을 준수하는지 검사합니다.

관련 파일:

요구사항:

사용법:

아래처럼 해도 되고,

cd <원고가 있는 폴더>
python3 proofread.py "Mastering_PyTorch_편집본_20211104.docx"

파이썬 스크립트가 자동 실행 가능한 환경에서는 다음과 같이 할 수 있습니다.

proofread "Mastering_PyTorch_편집본_20211104.docx"

파일이 열려 있으면 안 되므로 워드 파일을 닫거나 읽기 전용으로 바꾼 후 실행해야 합니다.

실행 결과는 다음과 비슷하게 나옵니다.

* 초보자가 전문가로 성장하기 위해 활용할 수 있는 자원은 무한히 많다.
                        ^
  => ~기 위해 활용할 → ~는 데 활용할    (rule204_-위해)


* 시그모이드와는 다르게 TanH 활성화 함수의 경우 출력값 는 -1과 1 사이의 값을 갖는다.
                                                                          ^
  => ~을 갖는다 → ~이 있다      (rule213_영어의 have에서 비롯된 '가지다')

(생략)

* 여기서도 필기체 숫자 분류기를 훈련시키는 비슷한 실습을 했다.
                                                      ^
  => ~을 했다    (rule105_불필요한 조사를 뺀다 : 실행을 한다 → 실행한다, 도입을 했다 → 도입했다, 컴파일이 되지만 → 컴파일되지만)


=== Summary ===
rule002_다운로드하다 ==> count: 1
rule101_간결하게 쓴다 ==> count: 1
rule102_되도록 수동태 표현이나 사역형 표현은 쓰지 않는다 ==> count: 9
rule103_가급적 쉬운 표현을 쓴다 ==> count: 51
...
rule222_각각의 ==> count: 4
rule224_생략해야 하는 표현 ==> count: 17

특정 규칙만 검사할 수 있습니다.

예: ‘그중’을 ‘그 중’으로 잘못 쓴 곳(규칙 109302b)을 검사

$ prf 알고리즘수학_1교_20221110.docx --rule 109302b

그리고 그 중에서 양의 정수인 것도 표시해주세요.
       ^
   => 그 중에서 →  그중에서	 (0109302b_그중 : https://wikidocs.net/109302#b)

1 이상 3 이하의 정수를 적는 방법은 모두 9가지이지만, 그 중에서 합계 4 이하가 되는 방법은 6가지이기 때문입니다.
                                                    ^
   => 그 중에서 →  그중에서	 (0109302b_그중 : https://wikidocs.net/109302#b)

=== Summary ===
0109302b_그중 ==> count: 2

표준 입력을 받아서 교정할 수 있습니다.

$ echo "프로그래밍이 뭐냐구요? 소프트웨어를 만드는 것이 프로그래밍입니다. 그리고, 컴퓨터가 알아듣는 말을 프로그래밍 언어라고 하지요." | correct.py
프로그래밍이 뭐냐구요?

             ^
   => 뭐냐구요? →  뭐냐고요?	 (spel2000_국어의 오용 사례 모음 - 어문 규범 준수 실태 조사(아동도서), 2001 : https://www.korean.go.kr/front/etcData/etcDataView.do?mn_id=46&etc_seq=52&pageIndex=50)

그리고, 컴퓨터가 알아듣는 말을 프로그래밍 언어라고 하지요.

^
   => 그리고, →  그리고	 (0079918_쉼표, 반점 : https://wikidocs.net/79918)

팁:

proof-gpt.py

입력한 텍스트가 규칙에 맞는지를 OpenAI API로 검사합니다.

준비

사용하려면 OpenAI API 키를 발급받고 .env 파일을 만듭니다.

$ cat > .env
OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
^D⏎

사용법

규칙 번호는 ⟪IT 글쓰기와 번역 노트⟫의 페이지 ID입니다.

사용 예:

$ python proof-gpt.py "그 책을 다 읽는데 이틀 걸렸다." -r 67215
{
  "input_text": "그 책을 다 읽는데 이틀 걸렸다.",
  "checked_rule": "https://wikidocs.net/67215",
  "corrections":
    [
      {"pos": "8", "bad": "는데", "good": "는 데", "description": "'데'가 의존 명사로 쓰일 때에는 앞말과 띄어서 씁니다."}
    ]
}
$ python proof-gpt.py "프로그램 오류시 업데이트하세요." -r 94354
{
  "input_text": "프로그램 오류시 업데이트하세요.",
  "checked_rule": "https://wikidocs.net/94354",
  "corrections":
    [
      {"pos": "7", "bad": "오류시", "good": "오류 시", "description": "'시(時)'는 앞말과 띄어 쓴다."}
    ]
}
$ python proof-gpt.py "결혼 유/무" -r 187342
{
  "input_text": "결혼 유/무",
  "checked_rule": "https://wikidocs.net/187342",
  "corrections":
    [
      {"pos": "0~7", "bad": "결혼 유/무", "good": "결혼 여부", "description": "'유/무'는 '있음과 없음'을 뜻하고, '여부'는 '그러함과 그러하지 아니함'을 뜻한다. '결혼'의 경우 '여부'를 사용하는 것이 적절하다."}
    ]
}

spellchk.py

원고의 맞춤법, 띄어쓰기, 외래어 표기법 등을 검사합니다.

사용 예:

$ spellchk.py sample.txt
Trying to import KoNLPy...
Loading rule file: ko_spelling_rules.json...
Loading rule file: ko_spacing_rules.json...
Loading rule file: ko_foreign_word.json...
다만 로고에는 뱀 두마리가 형상화 되어 있다.

                         ^
   => 형상화 되어 →  형상화되어	 (0067208a_-되다(접미사) : https://wikidocs.net/67208#a)

                 ^
   => 두마리가 →  두 마리가	 (0100750a2_단위를 나타내는 명사 : https://wikidocs.net/100750#a)

객체 지향 프로그래밍과 구조적 프로그래밍을 완벽하게 지원하며 함수형 프로그래밍, 관점 지향 프로그래밍 등도 주요 기능에서 지원 된다.

                                                                                                                        ^
   => 지원 된다 →  지원된다	 (0067208a_-되다(접미사) : https://wikidocs.net/67208#a)

파이썬의 이러한 엄격한 스타일 제한은 쓰는 사람에 관계 없이 통일성을 유지하게 하며, 그 결과 가독성이 향상될 수 있는 장점이 있지만, 다른 한편으로는 프로그램을 쓰는 스타일을 선택할 자유를 제약하는 것이란 의견도 있다.

                                          ^
   => 사람에 관계 없이 →  사람에 관계없이	 (0164399b_관계 없다 / 관계없다, 관계 있다 / 관계있다, 상관 없다 / 상관없다, 상관 있다 / 상관있다 : https://wikidocs.net/0164399#b)

다음과 같이 한줄로 작성하여 표현하는 것을 'pythonic 하다'라고 말할 수 있다.

            ^
   => 한줄로 →  한 줄로	 (0100750a2_단위를 나타내는 명사 : https://wikidocs.net/100750#a)

이뮤터블(immutable) 방식의 진리값.

                           ^
   => 진리값 →  진릿값	 (0080784d_값 : https://wikidocs.net/80784#d)

Visual Studio Code : 파이썬 뿐이 아니라 대부분의 언어를 지원한다.
                     ^
   => 파이썬 뿐이 →  파이썬뿐이	 (0079973a_-뿐(조사) : https://wikidocs.net/79973#a)

위키미디어 공용에 관련된미디어 분류가 있습니다.파이썬

                                     ^
   => 있습니다.파이썬 →  있습니다. 파이썬	 (0075024e_마침표의 띄어쓰기 : https://wikidocs.net/75024#e)

=== Summary ===
0067208a_-되다(접미사) ==> count: 2
0075024e_마침표의 띄어쓰기 ==> count: 1
0079973a_-뿐(조사) ==> count: 1
0080784d_값 ==> count: 1
0100750a2_단위를 나타내는 명사 ==> count: 2
0164399b_관계 없다 / 관계없다, 관계 있다 / 관계있다, 상관 없다 / 상관없다, 상관 있다 / 상관있다 ==> count: 1

stylechk.py

원고의 영한 번역투, 일한 번역투, 위키북스 글쓰기 지침 준수 여부를 검사합니다.

suggest.py

쉬운 말, 차별적이지 않은 표현을 제안합니다.

사용 예:

$ echo "프로세스의 실행이 감지되면 블랙 리스트와 비교하여" | suggest.py 
Trying to import KoNLPy...
Loading rule file: ko_norm_2002.json...
Loading rule file: ko_gov_terms_2012.json...
Loading rule file: ko_plain.json...
Loading rule file: ko_unbiased.json...
프로세스의 실행이 감지되면 블랙 리스트와 비교하여

^
   => 프로세스의 실행이 감지되면 블랙 리스트와 비교하여
   →  프로세스의 실행이 감지되면 거부 목록과 비교하여	 (0177252_인종차별적 용어 : https://wikidocs.net/177252)

=== Summary ===
0177252_인종차별적 용어 ==> count: 1