目录
什么是Huggingface
Hugging Face 是一个专注于自然语言处理(NLP)和人工智能(AI)技术的平台与社区。它提供了许多强大的工具和资源,主要功能如下:
-
Transformers 库:这是 Hugging Face 的核心库之一,包含了多种预训练的深度学习模型,特别是在自然语言处理任务中非常流行,如文本分类、问答系统、机器翻译和文本生成。这些模型基于 Transformer 架构,例如 BERT、GPT、T5 等。
-
模型库(Model Hub):Hugging Face 提供了一个开放的平台,用户可以上传、共享和使用预训练的模型。这个模型库支持超过数千个模型,涵盖不同的任务和语言。
-
Datasets 库:该库包含各种开源数据集,允许研究人员和开发者轻松加载、处理和共享大型数据集,用于训练和评估模型。
-
API 和服务:Hugging Face 还提供了各种 API 和云服务,帮助用户部署和使用 AI 模型,而不需要从零开始训练模型。用户可以直接通过 API 调用模型进行推理或微调(Fine-tuning)。
-
社区和开源:Hugging Face 是一个非常活跃的开源社区,致力于推动 AI 和 NLP 的前沿技术,用户可以共享模型、教程、代码和项目。
Hugging Face 的愿景是让 AI 和 NLP 技术更加易于使用和普及,使开发者和研究人员能够快速构建和部署复杂的语言模型应用。
NLP要解决的任务
情感分析
基本流程分析
这张图展示了情感分析模型的基本流程,主要包括三个阶段:Tokenizer(分词器)、Model(模型)和Post Processing(后处理)。
-
Tokenizer(分词器):
- 输入的原始文本为:“This course is amazing”。
- 分词器将原始文本转换为词汇的索引 ID,即输入 ID:[101, 2023, 2607, 2003, 6429, 999, 102]。这些数字代表模型词汇表中每个词对应的编号。
-
Model(模型):
- 输入的 ID 被输入到模型中,模型处理这些数据并输出一个叫做 logits 的值。
- Logits 是未归一化的预测结果,可以认为是模型对每个类别的“置信度”,输出的 logits 为:[-4.3630, 4.6859]。
-
Post Processing(后处理):
- Logits 经过后处理后,得出分类的最终预测结果。
- 在这个例子中,情感分析任务的两个类别是正面情感和负面情感。模型预测结果显示:
- 正面情感的概率为 99.89%。
- 负面情感的概率为 0.11%。
总结来看,这个流程展示了一个情感分析模型从原始文本输入到预测输出的全过程。文本被分词成 ID,经过模型生成 logits,再通过后处理转化为最终的情感分类结果。
demo
打开pycharm,在终端执行命令,它会下载并安装 Hugging Face 的 transformers
库。
pip install transfomers
如果出现下面的报错
可以改成使用清华的镜像源进行下载
pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
方式1-手动下载模型
下载好后,创建一个demo文件,输入以下代码
from transformers import pipeline
# 指定模型所在路径
model_path = "D:\model"
# 加载模型
pipe = pipeline("text-classification", model=model_path)
# 使用该 pipeline 进行情感分析
result = pipe(
[
"this course is amazing",
"sun of beach"
]
)
# 输出结果
print(result)
代码分析:这段代码的主要功能是使用 Hugging Face 的 transformers
库加载一个预训练的情感分析模型,并对给定的两个文本进行情感分析。
使用 pipeline
创建一个情感分析(sentiment analysis)模型。这个模型是预训练的,因此可以直接用于情感分类任务,通常分为正面(positive)和负面(negative)情感。
- model_path:定义了模型文件所在的本地路径。在Windows系统上,使用双反斜杠
\\
来表示路径分隔符(因为反斜杠\\
是转义字符)。这里路径指向模型存放的位置,包含了必要的文件如pytorch_model.bin
、config.json
、和vocab.txt
等。 - pipeline("text-classification"):加载一个用于文本分类的pipeline。
text-classification
是一种预定义任务,通常用于情感分析、主题分类等任务。 - model=model_path:指定了加载模型的路径,而不是自动从Hugging Face服务器下载。如果模型文件位于本地路径
D:\\model
,则会从此路径加载模型和配置文件。 - pipe([...]):对一组输入文本进行情感分析。这里输入了两个句子:"you are good" 和 "sun of beach"。
- result:保存了分析的结果,通常包括每个文本的标签(如
positive
或negative
)和置信度分数。
首先,在D盘中,创建model文件夹
在huggingface中下载所需要的文件,网址:Avichr/heBERT_sentiment_analysis 在 Main (huggingface.co)
注意,这里要科学上网才能访问
将下载好的三个文件放到model文件夹中
- pytorch_model.bin:模型权重文件。
- config.json:模型配置文件。
- vocab.txt:如果你的模型需要词汇表(通常是 BERT 模型),这个文件用于加载词汇表。
然后就可以运行程序,程序可对输入的语句进行情感分析
方式2-修改环境变量,访问镜像网址加载模型
因为直接加载模型,即使翻墙,也连不上。所以这里选择访问镜像网站来加载模型
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
import warnings
warnings.filterwarnings("ignore")
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
result = classifier(
[
"this course is amazing",
"son of the beach",
]
)
print(result)
注意:
- 运行时,不要翻墙,因为这里本来就是访问的国内镜像网站
- 修改环境变量一定要放到最上方,放到 import transformers前修改
代码分析
-
设置 Hugging Face 的镜像地址:
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
通过设置
HF_ENDPOINT
环境变量,将 Hugging Face 的默认 API 端点更改为指定的镜像地址(https://hf-mirror.com
)。这用于解决网络连接或访问 Hugging Face 官方服务器的问题。 -
忽略警告:
import warnings warnings.filterwarnings("ignore")
这行代码通过
warnings.filterwarnings("ignore")
禁用了所有警告信息的显示。这样可以避免不必要的警告干扰输出,但同时也可能忽略一些有用的调试信息。 -
导入
pipeline
并创建情感分析器:from transformers import pipeline classifier = pipeline("sentiment-analysis")
这里使用了
transformers
库的pipeline
函数,并将其配置为情感分析任务("sentiment-analysis"
)。pipeline
函数会自动选择 Hugging Face 上的预训练模型,如果没有手动指定模型,它会默认使用distilbert-base-uncased-finetuned-sst-2-english
模型来进行情感分类。 -
进行情感分析:
result = classifier( [ "this course is amazing", "son of the beach", ] )
这里将两条句子输入给情感分析模型:
"you are good"
应该被识别为正面情感。"son of the beach"
由于语境可能会被误认为是一种负面的情感表达(通常这句话是个俚语,可能带有冒犯性,尽管拼写上没有错)。
classifier
将返回每个输入句子的情感预测结果,包括情感标签(如POSITIVE
或NEGATIVE
)以及置信度分数。
pipeline只是指定了任务为sentiment-analysis,没有明确指定要使用的模型,因此 pipeline
默认选择了 distilbert/distilbert-base-uncased-finetuned-sst-2-english
模型