spencermountain/compromise

modest natural-language processing

compromise – 가벼운 JavaScript NLP 라이브러리

무엇인가요compromise (이전 이름: nlp-compromise)는 순수 자바스크립트로 작성된 작고 빠른 라이브러리로, 원시 영어 텍스트를 조작 가능한 데이터 구조로 변환합니다. 딥러닝이 아닌 실용적인 규칙 기반 처리에 초점을 맞추며, 토큰화, 품사 태깅, 어간 추출, 그리고 몇 가지 고급 헬퍼(숫자, 날짜, 축약어 등)를 제공합니다.

왜 중요한가요 – 많은 웹 기반 프로젝트에서는 수백 메가바이트에 달하는 모델을 불러오지 않고도 빠르고 즉각적인 언어 처리가 필요합니다. compromise는 이 분야에 완벽하게 부합합니다: 최소화된 번들 크기는 약 250KB이며, 브라우저나 Node.js에서 실행 가능하며, 초당 약 1MB의 텍스트를 처리할 수 있습니다.

주요 기능 (README에 기술됨)

  • 세 단계 APIcompromise/one (토크나이저), compromise/two (품사 태거 및 문법 해석기), compromise/three (구문 수준 유틸리티). 필요에 따라 필요한 단계만 로드할 수 있습니다.
  • 태그 세트 – 83개의 내장 태그(예: #Verb, #Noun, #FirstName)를 제공합니다. 태그는 계층적이며, debug() 또는 verbose('tagger')로 확인할 수 있습니다.
  • 매칭 구문 – 미니 언어(doc.match('#Adjective of times'))를 통해 정규 표현식과 유사한 패턴으로 문서를 쿼리할 수 있지만, 태그를 인식합니다.
  • 편리한 변환 – 시제 변경(doc.verbs().toPastTense()), 명사 복수형 변환, 축약어 전개/축약, 숫자 더하기/빼기 등.
  • 데이터 추출doc.json()은 구조화된 표현(어휘, 정규화된 형태, 계산된 메타데이터(음절 수, 금액, 분수 등))을 반환합니다.
  • 확장성compromise-speech와 같은 추가 모듈을 플러그인할 수 있습니다.
  • 클라이언트 사이드 준비 – CDN에서 <script> 태그로 로드 가능하여 정적 페이지에 쉽게 추가할 수 있습니다.

일반적인 사용 사례

  • 대규모 AI 파이프라인에 데이터를 전송하기 전의 간단한 텍스트 정제 또는 정규화.
  • 무거운 모델 없이도 빠른 의도 탐지가 필요한 챗봇 또는 음성 보조기기 구축.
  • 실시간으로 콘텐츠 생성 또는 편집(예: 명사 자동 복수형, 동사 과거형 변환).
  • 웹 앱에서 사용자 생성 텍스트에서 구조화된 정보(숫자, 날짜, 장소) 추출.

강점

  • 크기 및 속도 – 매우 작고, 키 입력마다 실행 가능.
  • 의존성 없음, 순수 JS – 자바스크립트를 실행할 수 있는 환경이라면 어디서든 작동.
  • 결정론적 – 규칙 기반 출력은 예측 가능하며, 템플릿 및 규칙 기반 에이전트에 유용.
  • 모듈화 – 필요한 단계만 로드해 최소한의 크기 유지 가능.

제한 사항

  • 정확도의 트레이드오프 – README는 "예상보다 똑똑하지 않다"고 인정하며, 모호하거나 도메인 특화된 텍스트에서는 현대의 트랜스포머 기반 파서의 성능에 미치지 못합니다.
  • 영어 중심 – 핵심 라이브러리는 영어를 대상으로 하며, 다른 언어는 별도의 포크(French, German, Italian, Spanish)로 제공되며, 뒤처질 수 있습니다.
  • 규칙 기반 – 렉시콘을 수동으로 확장하지 않으면 새로운 패턴을 학습할 수 있는 능력이 제한적입니다.

시작하기

npm install compromise   # 또는 CDN 스크립트 태그 사용
import nlp from 'compromise'

let doc = nlp('she sells seashells by the seashore.')
console.log(doc.verbs().toPastTense().text()) // "she sold seashells by the seashore."

추가 리소스 – 리포지토리는 풍부한 마크다운 문서(docs/api.md, docs/match-syntax.md 등)와 성능, 내부 구조, 태그 그래프를 보여주는 Observable 노트북 컬렉션을 제공합니다.


모든 진술은 리포지토리의 README에서 직접 인용되었으며, 외부 주장은 추가되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트