프로젝트 소개

Spark NLP는 Apache Spark 위에 구축된 자연어 처리 라이브러리로, 분산 환경에서 확장 가능한 머신러닝 파이프라인을 위한 NLP 주석(annotation)을 제공하도록 설계되었습니다. John Snow Labs가 개발했으며 Apache 2.0 라이선스로 배포됩니다. 핵심 기능 이 라이브러리는 토큰화, 단어 분할, 품사 태깅, 단어 및 문장 임베딩, 개체명 인식, 의존 구문 분석, 맞춤법 검사, 텍스트 분류, 감정 분석, 토큰 분류, 기계 번역(180개 이상 언어), 요약, 질의응답, 테이블 질의응답, 텍스트 생성, 이미지 분류, 이미지-텍스트 캡셔닝, 자동 음성 인식, 제로샷 학습 등 광범위한 NLP 작업을 다룹니다. BERT, CamemBERT, ALBERT, ELECTRA, XLNet, DistilBERT, RoBERTa, DeBERTa, XLM-RoBERTa, Longformer, ELMo, Universal Sentence Encoder, Llama-2, M2M100, BART, Instructor, E5, Google T5, MarianMT, OpenAI GPT2, Vision Transformers, OpenAI Whisper, Llama, Mistral, Phi, Qwen2와 같은 트랜스포머 아키텍처를 지원합니다. 이러한 모델은 Python과 R뿐만 아니라 Apache Spark를 네이티브로 확장하여 JVM 생태계(Java, Scala, Kotlin)에도 노출됩니다. 모델 및 파이프라인 프로젝트는 200개 이상의 언어에서 10만 개 이상의 사전 훈련된 파이프라인과 모델을 제공하며, 이를 탐색할 수 있는 Models Hub를 포함합니다. 모델 가져오기는 TensorFlow, ONNX, OpenVINO, Llama.cpp(GGUF)를 지원하여 다른 프레임워크의 모델을 통합할 수 있습니다. 플랫폼 지원 Spark NLP 7.0.0은 Apache Spark 3.x(Scala 2.12)와 검증된 Apache Spark 4 버전(Scala 2.13)을 지원합니다. Apache Spark 4.0.0이 바이너리 비호환 Param 변경을 도입했기 때문에 별도의 아티팩트가 있습니다: Spark 3.0.x-3.5.x용 spark-nlp_2.12, Spark 4.0.0용 spark-nlp-spark400_2.13, Spark 4.0.1 이상 및 검증된 Spark 4 버전용 spark-nlp_2.13. CPU, GPU, AArch64(Linux), Apple Silicon 변형이 있으며 M1/M2 및 AArch64는 실험적(experimental)으로 설명됩니다. Python 지원은 Spark 3.x 경로에서 3.7부터 3.10까지, Spark 4.x 경로에서 3.9부터 3.12까지입니다. README에는 Databricks 런타임(14.x~16.4, CPU 및 GPU), Amazon EMR 6.13~7.8, 그리고 Spark 4.0.2, Scala 2.13, Java 17을 사용하는 emr-spark-8.0.0의 EMR Serverless 경로와의 호환성도 나열되어 있습니다. 설치 및 사용 설치는 pip, conda, Maven Central을 통해 가능하며, sparknlp.start(), explain_document_dl과 같은 PretrainedPipeline 로드, 텍스트 주석 처리를 통해 개체, 표제어, 품사 태그, 토큰 및 기타 주석을 얻는 빠른 시작 예제가 포함됩니다. 라이브러리는 완전히 오프라인으로 실행할 수 있으며 Spark 속성을 통해 구성을 조정할 수 있습니다. S3 통합은 훈련 로그 내보내기와 NerDLApproach에서 사용하는 TensorFlow 그래프 저장을 위해 제공됩니다. 문서 및 커뮤니티 공식 문서, 예제, 데모, 모델 허브는 sparknlp.org에서 호스팅됩니다. 커뮤니티 채널에는 Slack, GitHub 이슈 및 토론, Medium, YouTube가 있습니다. 이 프로젝트는 Software Impacts에 논문을 게재했으며 아이디어, 피드백, 문서, 버그 보고, 말뭉치, 테스트와 같은 기여를 환영합니다.