transformer模型首次体验代码

立体风 / 2023-08-24 / 原文

首先是安装python,更新pip源到清华源。安装transformer

pip install transformer

安装jupyter lab,也简单一行

pip install jupyterlab

现在不想用anaconda了,因为国内没有源了,国外的又慢。直接用pip吧。

然后开始体验之旅吧:

打开终端,输入:

jupyter lab

会弹出一个web页面,代开后输入python代码:

from transformers import pipeline
cf = pipeline("sentiment-analysis")
cf(
    ["hello world.",
     "This place is too dirty.",
    ]
)

输出下面的内容:

No model was supplied, defaulted to distilbert-base-uncased-finetuned-sst-2-english and revision af0f99b (https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english).
Using a pipeline without specifying a model name and revision in production is not recommended.(这里是一个警告,没关系)
[{'label': 'POSITIVE', 'score': 0.9997791647911072}, 
 {'label': 'NEGATIVE', 'score': 0.999772846698761}]

输出包含了这两句话的正面还是负面情绪的判断。可以自己写两句看看哦。

 注意:代码最后一段的是调用cf,所以没有“=”号,要注意,我一开始就是多添加一个“=”,半天看不出哪里错了。

再来一段:

from transformers import AutoTokenizer
ck = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(ck)
a = [
    "hello world.",
     "This place is too dirty.",
]
inputs = tokenizer(a,padding=True,truncation=True,return_tensors="pt")
print(inputs)

输出:

{'input_ids': tensor([[ 101, 7592, 2088, 1012,  102,    0,    0,    0],
        [ 101, 2023, 2173, 2003, 2205, 6530, 1012,  102]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 0, 0, 0],
        [1, 1, 1, 1, 1, 1, 1, 1]])}

解释:

AutoTokenizer是自动分词工具。它的作用是根据你选择的模型,自动选择和该模型匹配的分词器(tokenizer),本例我选择 distilbert-base-uncased-finetuned-sst-2-english 模型,AutoTokenizer会自动选择和该模型匹配的分词器。

from_pretrained是加载预训练模型的方法,这里加载了 distilbert-base-uncased-finetuned-sst-2-english 模型。

tokenizer 作为一个函数别名指代了预训练模型。

该模型加载了要分析的句子 a ,以及一些参数的指定,最后输出。