当前位置:   article > 正文

Transformers入门:实战Ubuntu使用huggingface上的语句情感分类模型+配环境(2024.02.20)_huggingface transformer情感分析

huggingface transformer情感分析

因为要研究的相关内容有大量的transformer的东西(如下)所以我这边要先学一下transformer的使用。入门一下。

问一下gpt,第一步是创建环境,这里就跳过了。第二部,安装pytorch和transformer

我的cuda版本是11.3.58。如果你的不是cudatoolkit=11.3这个参数要修改

  1. # 安装 PyTorch,确保选择适合你 CUDA 版本的命令
  2. conda install pytorch torchvision torchaudio cudatoolkit=(你的cuda版本) -c pytorch
  3. # 安装 Hugging Face 的 Transformers 库
  4. pip install transformers

安装完成之后我运行代码

  1. from transformers import pipeline
  2. # 加载一个预训练的模型和它的 tokenizer,用于情感分析
  3. classifier = pipeline('sentiment-analysis')
  4. # 对一段文本进行情感分析
  5. result = classifier("I love using transformers. They're fantastic!")
  6. # 打印结果
  7. print(result)

结果import的时候报错了,我试了一下,import tchnsformer也不行

报错

AttributeError: module 'charset_normalizer' has no attribute 'md__mypyc'

我怀疑是版本问题,试着用conda重新安装一下transformer还是不行,我就想会不会charset_normalizer不是transformer的组件。

用pip更新了charset_normalizer后可以了。说明对于我的环境(CUDA 11.3)并不要求特定版本,最新版本即可。

pip install --upgrade charset-normalizer

然后又出现了新的问题,pipeline函数下载不了需要的模型。

经过查找发现这应该是因为huggingface.co连不上了。

 这里使用镜像站。hf-mirror.com - Huggingface 镜像站

我使用方法一,也就是用hugging cli命令行下载模型"distilbert-base-uncased-finetuned-sst-2-english"

这是镜像站上面的教程

贴在下面方便复制

pip install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com

 (下面是两个例子的代码,不用运行):

huggingface-cli download --resume-download bigscience/bloom-560m --local-dir bloom-560m
huggingface-cli download --token hf_*** --resume-download meta-llama/Llama-2-7b-hf --local-dir Llama-2-7b-hf

在镜像站找到"distilbert-base-uncased-finetuned-sst-2-english"

这个模型应该是pipeline函数在情感分析任务中默认使用的。

这个网站还可以通过API试,明明是english但是也支持其他语言。

比如我最讨厌的笑死:

但是在朋友S的提醒下,我又试了几个,发现不对,所有中文都是是negative0.8上下,positve0.2上下,浮动。

我还当模型也认为是负面的,模型所见略同。这个网页内容和报错中的网址打开的网页内容一致(包括评论),说明就相当于官网站,镜像站上面的Use in Transformers里也是官网的代码,复制过去是没用的。

继续回到我们的解决环境问题上。

可以点击旁边的files and versions下载后使用模型,可以看到有一个h5权重文件。

然后把模型放到下面的目录

/home/yourname/.cache/torch/transformers

这个目录也是pipeline自动下载模型到的位置

这边要提醒一下,如果你也是用ubuntu的linux系统小白,并且/home/yourname(你的用户名)/ 下没有.cache那是被隐藏了,按ctrl+h可以显示。

我这里把模型直接下载到了./ 下。可以看左边的目录结构

然后修改了代码,用了AutoModelForSequenceClassification方法读取本地模型。再把读取后的模型model用pipeline(方法)创建一个封装了模型和tokenizer的情感分析pipeline(实例),然后通过这个pipeline(实例)来处理文本。

这里要注意的是,我其实首先用了官网文档教学里的AutoModelForCausalLM方法来读取本地模型,结果报错了,问了gpt之后发现是对于不同类型的模型要用不同方法读取。

例如,对于文本分类,你可以使用AutoModelForSequenceClassification;对于问答,可以使用AutoModelForQuestionAnswering

最后这里把我的代码给一下,代码要求把模型distilbert/distilbert-base-uncased-finetuned-sst-2-english at main (hf-mirror.com)

下载到本地

  1. from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
  2. # 指定模型路径
  3. model_path = "./distilbert-base-uncased-finetuned-sst-2-english"
  4. # 加载模型和tokenizer
  5. model = AutoModelForSequenceClassification.from_pretrained(model_path)
  6. tokenizer = AutoTokenizer.from_pretrained(model_path)
  7. # 创建情感分析pipeline
  8. classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)
  9. # 对一段文本进行情感分析
  10. result = classifier("I love u")
  11. # 打印结果
  12. print(result)

结果:

i love u 积极 0.9998

i hate u 消极 0.9993

I am xiaoxiantong 积极 0.843  哈哈哈

我爱CSDN

p.s.

还有一个简单的办法是在最初的代码前加这个,修改下载源

  1. import os
  2. os.environ['HF_ENDPOINT'] = 'http://hf-mirror.com'

也就是这样

  1. from transformers import pipeline
  2. import os
  3. os.environ['HF_ENDPOINT'] = 'http://hf-mirror.com'
  4. pipe = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
  5. # 加载一个预训练的模型和它的 tokenizer,用于情感分析
  6. classifier = pipe
  7. # 对一段文本进行情感分析
  8. result = classifier("I love using transformers. They're fantastic!")
  9. # 打印结果
  10. print(result)

但是有一些环境可以换源,有一些不行,比如我的,如果有人知道为什么或者用这个换源成功了可以分享一下,感激。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/662419
推荐阅读
相关标签
  

闽ICP备14008679号