spencermountain/compromise
modest natural-language processing
compromise – 가벼운 JavaScript NLP 라이브러리
무엇인가요 – compromise (이전 이름: nlp-compromise)는 순수 자바스크립트로 작성된 작고 빠른 라이브러리로, 원시 영어 텍스트를 조작 가능한 데이터 구조로 변환합니다. 딥러닝이 아닌 실용적인 규칙 기반 처리에 초점을 맞추며, 토큰화, 품사 태깅, 어간 추출, 그리고 몇 가지 고급 헬퍼(숫자, 날짜, 축약어 등)를 제공합니다.
왜 중요한가요 – 많은 웹 기반 프로젝트에서는 수백 메가바이트에 달하는 모델을 불러오지 않고도 빠르고 즉각적인 언어 처리가 필요합니다. compromise는 이 분야에 완벽하게 부합합니다: 최소화된 번들 크기는 약 250KB이며, 브라우저나 Node.js에서 실행 가능하며, 초당 약 1MB의 텍스트를 처리할 수 있습니다.
주요 기능 (README에 기술됨)
- 세 단계 API –
compromise/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에서 직접 인용되었으며, 외부 주장은 추가되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트