개인 LanguageTool 서버 설정

일반적인



올해 저는 처음으로 영어를 사용하는 회사에서 새로운 일을 시작했습니다. 수석 소프트웨어 엔지니어로서 저는 많은 이메일, 복잡한 작업 및 버그 설명을 작성하고 다양한 주제에 대한 프레젠테이션을 작성해야 합니다. 그러므로 내 문법과 철자를 향상시켜줄 조수가 있는 것이 좋습니다.

몇 가지 훌륭한 응용 프로그램을 살펴보다가 오픈 소스 문법, 스타일 및 맞춤법 검사기인 LanguageTool을 우연히 발견했습니다. 개인정보 보호를 강화하고 데이터의 소유자가 되기 위해 자체 인스턴스를 호스팅할 수 있습니다.

이 블로그 게시물은 설정 및 구성을 안내합니다.

LanguageTool 및 Grammarly



때때로 나는 민감한 정보가 포함된 이메일을 작성하고 이러한 도구가 이 중요한 정보를 얼마나 자주 처리하는지에 대한 인식을 발전시켰습니다. 이 데이터가 내가 원하지 않는 방식으로 가로채거나 사용될 수 있다는 불편한 느낌을 받고 있었습니다.

비공개 소스 소프트웨어를 사용하는 경우 회사를 신뢰해야 하며 회사가 데이터를 서버에 저장하는 즉시 데이터를 사용할 수 없습니다. LanguageTool에 대한 블로그 게시물을 작성할 때 저는 공정하고 Grammarly를 언급해야 합니다. 제 개인적인 경험으로는 훨씬 더 강력하고 프리미엄 기능인 "가독성"과 "유창성"이 정말 좋습니다. Grammarly의 Privacy Policy은 내 "정보"를 판매하지 않는다고 말합니다.

LanguageTool은 텍스트를 자체 LanguageTool 인스턴스로 보낼 수 있도록 자체 내장 HTTP 서버와 함께 제공됩니다. 자신의 응용 프로그램을 작성하고 HTTP API을 사용할 수도 있습니다.

설치



도커 작성



전용 docker-compose 파일 내에서 모든 애플리케이션을 호스팅하는 것을 좋아합니다. 그렇게 할 때 HTTP 리버스 프록시traefik는 docker와 매우 잘 통합되며 동적 구성을 가능하게 합니다. 살펴볼 가치가 있습니다!

전제 조건


  • docker, docker-compose 및 traefik이 포함된 인프라
  • 약 20GB의 무료 저장 공간
  • n-gram 데이터 세트 준비

  • Download n-gram 데이터 세트를 서버에 - 총 18GB를 소비하는 일상 업무에 deen 데이터 세트를 사용하고 있습니다! "n-gram"데이터 세트는 단어로 오류를 감지하는 데 사용됩니다. 자세한 내용은 herehere을 참조하십시오.


  • 다음 폴더 구조가 있는지 확인하십시오.

    ├── languagetool # base folder
    │   ├── docker-compose.yml # configuration file
    │   └── ngrams
    │       ├── de # downloaded n-gram data for de
    │       │   ├── 1grams
    │       │   ├── 2grams
    │       │   └── 3grams
    │       └── en
    │           ├── 1grams
    │           ├── 2grams
    │           └── 3grams
    


    docker-compose.yml



    다음으로 참조로 사용할 수 있는 내 개인docker-compose.yml을 볼 수 있습니다. 자세한 설명은 이미지 설명erikvl87/languagetool을 참조하세요.

    version: "3"
    services:
      languagetool:
        container_name: languagetool
        image: erikvl87/languagetool
        restart: unless-stopped
        environment:
          - langtool_languageModel=/ngrams  # OPTIONAL: Using ngrams data
          - Java_Xms=512m  # OPTIONAL: Setting a minimal Java heap size of 512 mib
          - Java_Xmx=1g  # OPTIONAL: Setting a maximum Java heap size of 1 Gib
        volumes:
          - ./ngrams:/ngrams
        ports:
          - 8010
        labels:
          - traefik.enable=true
          - traefik.http.services.languagetool.loadbalancer.server.port=8010
          - traefik.http.routers.languagetool-http.rule=Host(`languagetool.example.com`)
          - traefik.http.routers.languagetool-http.entrypoints=web
          - traefik.http.routers.languagetool-http.middlewares=resecure@file
          - traefik.http.routers.languagetool-https.rule=Host(`languagetool.example.com`)
          - traefik.http.routers.languagetool-https.entrypoints=websecure
          - traefik.http.routers.languagetool-https.tls=true
          - traefik.http.routers.languagetool-https.tls.certresolver=le
          - traefik.docker.network=web
        networks:
          - web
    
    networks:
      web:
        external: true
    


    모든 것이 실행되면 컨테이너 로그를 확인하거나 다음과 같은 테스트 요청을 쿼리할 수 있습니다.

    curl --data "language=en-US&text=a simple test" https://languagetool.example.com/v2/check
    


    자체 언어 도구 서버 사용



    LanguageTool은 널리 사용되는 브라우저 및 다양한 도구에 잘 통합되어 있습니다. 마크다운 파일을 편집할 때 주로 기본 브라우저 Google Chrome과 소스 코드 편집기 vscode에서 사용합니다.

    브라우저 플러그인



    LanguageTool 브라우저 플러그인을 사용하는 경우 옵션 메뉴로 이동하여 다음과 같이 고유한 LanguageTool 서버를 설정해야 합니다.



    비주얼 스튜디오 코드 확장



    vscode 내에서 마크다운 파일에 대한 언어 도구 지원을 원하는 경우 LTEX Extension을 사용할 수 있습니다.

    문제 강조 표시를 제공하고 많은 프로그래밍 언어(옵트인)에 대한 주석 확인을 지원하며 다음과 같은 빠른 수정 대화 상자를 통해 대체 제안을 사용할 수 있습니다.



    고유한 LanguageTool 서버를 사용하려면 ltex.languageToolHttpServerUri 설정 내에서 루트 URL을 구성해야 합니다.

    좋은 웹페이지 즐겨찾기