Spark NLP: 最先进的自然语言处理和LLM库
1. 什么是Spark NLP
https://sparknlp.org/
github 源码
Spark NLP 是由 JohnSnowLabs 开发的一款基于 Apache Spark 的自然语言处理库。它支持分布式计算,能够高效处理大规模文本数据,适用于各种 NLP 任务。Spark NLP 提供了丰富的预训练模型,涵盖分词、词性标注、命名实体识别(NER)、文本分类、情感分析等任务,尤其在医疗和金融领域有广泛应用。
Experience the power of Large Language Models like never before! Unleash the full potential of Natural Language Processing with Spark NLP, the open-source library that delivers scalable LLMs
主要功能:
- 分词、词性标注、依存句法分析
- 命名实体识别(NER)、关系抽取
- 文本分类、情感分析
- 拼写纠错、关键词提取
- 多语言支持,包括中文
2. 安装 Spark NLP
要使用 Spark NLP,首先需要安装 Apache Spark 和 Spark NLP 库。推荐在 Python 环境下使用,下面以 PySpark 为例:
安装步骤
- 安装 Spark NLP
$ java -version# should be Java 8 (Oracle or OpenJDK)$ conda create -n sparknlp python=3.8 -y$ conda activate sparknlp$ pip install spark-nlp==6.1.3 pyspark==3.5.3
3. Spark NLP 使用示例:中文 NER
下面演示如何用 Spark NLP 进行中文命名实体识别(NER)。
示例代码
import sparknlp
from sparknlp.base import *
from sparknlp.annotator import *
from pyspark.sql import SparkSession# 启动Spark NLP
spark = sparknlp.start()# 输入数据
data = spark.createDataFrame([["李雷在北京上大学。"]]).toDF("text")# 构建处理管道
document = DocumentAssembler().setInputCol("text").setOutputCol("document")
tokenizer = Tokenizer().setInputCols(["document"]).setOutputCol("token")
ner_model = NerDLModel.pretrained("bert_xomlac_ner_pipeline", "zh").setInputCols(["document", "token"]).setOutputCol("ner")pipeline = Pipeline(stages=[document, tokenizer, ner_model])
result = pipeline.fit(data).transform(data)# 查看NER结果
result.selectExpr("explode(ner.result) as entity").show()
说明
- 本示例使用了
bert_xomlac_ner_pipeline
中文 NER 预训练模型。 - 支持多种中文分词和NER模型,详细模型名称可参考 JohnSnowLabs 的模型库。
4. 支持的模型及任务类型
Spark NLP 支持多种预训练模型,涵盖以下任务:
- 分词/Tokenization:多语言支持
- 词性标注/POS Tagging:英文、中文等
- 命名实体识别/NER:支持英文、中文、德文等
- 依存句法分析/Dependency Parsing
- 情感分析/Sentiment Analysis
- 文本分类/Text Classification
- 拼写纠正/Spell Checking
- 医疗文本处理/Clinical NLP:如药物、疾病识别
获取模型方法:
from sparknlp.pretrained import PretrainedPipeline
pipeline = PretrainedPipeline('explain_document_dl', lang='en')
更多可用模型和任务类型请访问 JohnSnowLabs Spark NLP Models 页面。