JohnSnowLabs/spark-nlp

State of the Art Natural Language Processing

Spark NLP (JohnSnowLabs/spark-nlp)

是什么 – 这是一个开源库,将最先进的自然语言处理 (NLP) 和大型语言模型 (LLM) 能力引入 Apache Spark。它让您能在 Spark 集群上大规模运行现代 NLP 流水线(分词、NER、情感分析、翻译、摘要、问答、图像转文本、语音转文本等),并可选择使用 GPU 或 Apple-silicon 加速。

README 重点摘要

  • 规模优先设计 – 基于 Spark 构建,因此相同的代码可在单台笔记本或大型分布式集群上运行。
  • 庞大的模型库 – 超过 100,000 个预训练流水线和模型,涵盖 200 多种语言,包括 BERT、RoBERTa、Llama-2、Whisper、Vision Transformers 等。
  • 多框架导入 – 可从 TensorFlow、ONNX、OpenVINO 和 Llama.cpp (GGUF) 导入模型。
  • 跨语言支持 – 可在 Python、R、Java、Scala、Kotlin 中使用;包发布于 PyPI、Conda、Maven Central。
  • 硬件灵活性 – 针对 CPU、GPU、AArch64 和 Apple-silicon 提供独立的 Maven/pip 工件;通过 sparknlp.start(gpu=True) 或 apple_silicon=True 切换运行环境。
  • 广泛的生态系统兼容性 – 可与 Databricks、Amazon EMR (含 Serverless)、Google Dataproc、Zeppelin、Jupyter、Colab、Kaggle 等搭配使用。
  • 离线能力 – 模型和流水线可缓存至本地或存储于 S3,以进行完全离线的推理。
  • 开源许可 – Apache 2.0。

典型工作流程 (Python 示例)

import sparknlp
from sparknlp.base import *
from sparknlp.annotator import *
from sparknlp.pretrained import PretrainedPipeline

spark = sparknlp.start(gpu=True)          # 启动具备 GPU 支持的 Spark 会话
pipeline = PretrainedPipeline('explain_document_dl', lang='en')
result = pipeline.annotate("The Mona Lisa is a 16th-century painting …")
print(result['entities'])   # → ['Mona Lisa', 'Leonardo', 'Louvre', 'Paris']

此示例展示了如何通过单行代码加载现成的流水线,并返回实体、词性标注、嵌入等 Token 级别的注释。

安装

  • 选择符合您 Spark 版本的工件(例如:针对 Spark 3.x 使用 pip install spark-nlp==7.0.0 pyspark==3.5.1,或针对 Spark 4.0 使用 spark-nlp-spark400)。
  • 对于 Scala/Java 项目,请添加对应的 Maven 坐标 (spark-nlp_2.12, spark-nlp-spark400_2.13 等)。
  • GPU、AArch64 和 Apple-silicon 版本发布于不同的包名称下 (spark-nlp-gpu, spark-nlp-aarch64, spark-nlp-silicon)。

适用对象

  • 需要在 Spark 流水线内进行 PB 级规模 NLP 处理的数据工程师。
  • 希望在不离开 Spark 生态系统的情况下微调或运行预训练 LLM 的机器学习从业者。
  • 在 Databricks、EMR 或其他托管 Spark 服务上运行,且需要多语言、多模态(文本 + 图像 + 音频)处理的企业。
  • 需要统一 API 来处理传统 NLP 任务(词性标注、NER)和现代 Transformer 模型的研究人员。

深入了解


以上所有信息均直接取自该仓库的 README;未添加任何外部假设。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目