当前位置:   article > 正文

transformers包介绍——nlp界最顶级的包——可以不用 但不能不知道——python包推荐系列

transformers包

背景1

  1. 现在在AI行业,什么最火?计算机视觉还是自然语言处理?其实不得不说,现在nlp很火。
  2. 还有人记得上个月很多科技爱好者都在玩的chatgpt么?那个就是nlp技术的一大应用。
  3. 现在都在觉得AI赚钱,工资高,然后很多人都想做一些事情、很多企业都想做一些事情,和AI挂钩的。
  4. 现在AI里面算是比较有活力的,就是nlp领域。

背景2

经常能看到一些读者在群里问:

  1. “现在nlp方面的包,应该用什么?”
  2. “现在想做一个文本分类的代码,而且我还要求是中文的,我应该怎么实现呢?”
  3. “现在想做中文的文本搜索,想做问答机器人,我怎么实现呢?”
  4. “现在想做一些更加高级的东西,比如文本纠错、文本摘要等,应该怎么实现呢?“
  5. ”我想学习pytorch,想要了解python关于AI方面的应用,我应该看什么源码呢?“
  6. “我现在想做文本搜图,我现在想做让文本写唐诗,我应该怎么研究呢?”
  7. …还有更多

so?

  1. 如果我告诉你,你的大部分任务,可能就几行代码就搞定了,你会相信吗?
  2. 如果我告诉你,就算是你想训练符合你自己数据的模型,也就是简单的导入数据即可。无需调整什么参数。训练完,即可直接发布,你会相信吗?
  3. 当然,如果你像我一样,希望可以自己定义模型,自己开发模型,想要二次创作,但是苦于找不到学习案例,苦于不知道怎么改,那你可真得看看我接下来要推荐的东西了。

总而言之,如果你对python、pytorch、机器学习、nlp技术(文本挖掘、文本分类、文本生成、文本搜索、问答机器人、搜索等)、计算机视觉、语音识别等领域感兴趣,或者想做一些类似的工具。

这里需要说明一下:

  1. 如果是python小白、nlp小白的话,还是建议看看这个包,起码是一个非常重要的包。在未来,遇到这个方向的时候,起码有解决方案。
  2. 如果是python、nlp高级开发者,可以看看这两个包的源码。他的代码设计还是非常优秀的。可以学到不少知识点。

ok

那么,接下来,我将分享一个在GitHub上拥有7.8万个star的明星python包————transformers

这个包将会打包你的所有困惑和焦虑,带你走上nlp不归路。

正文

多说无益,直接秀肌肉

1. 文本分类

大部分人在nlp中遇到的第一个任务,就是文本分类。

下面是实用3行代码,就调用了一个开源模型,并且做到了情感分析(本质上就是文本分类,只不过是从情感维度,分析这句话是消极还是积极)

from transformers import pipeline

classifier = pipeline('sentiment-analysis')
classifier('We are very love chinese')

#>>> [{'label': 'POSITIVE', 'score': 0.9997429251670837}]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可以看出,就几行代码:

  1. 第一行代码导入一个类,也就相当于一个管道。
  2. 第二行代码是将pipeline设置为情感分析模式。
  3. 把需要分析的文本,传递给这个分类器classifier,然后就输出结论了。

给人的感觉就是即开即用,就是这么简单。

可是这个时候,就有人问了:

  1. 可以对中文做情感分类么(或者叫文本分类)?
  2. 这个准确率怎么样?效果好么?
  3. 我可以做一个自己的分类器么?用自己的数据?

当然可以,而且也是比较简单的。鉴于篇幅问题,这里只是把大纲分享出来,并且附上简单的代码:

1.1.加载数据

from datasets import load_dataset
imdb = load_dataset("imdb")
  • 1
  • 2

1.2.预处理

#load tokenizer
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")

def preprocess_function(examples):
    return tokenizer(examples["text"], truncation=True)

# process data
tokenized_imdb = imdb.map(preprocess_function, batched=True)


# padding
from transformers import DataCollatorWithPadding
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

1.3.评估器

import evaluate
accuracy = evaluate.load("accuracy")


import numpy as np
def compute_metrics(eval_pred):
    predictions, labels = eval_pred
    predictions = np.argmax(predictions, axis=1)
    return accuracy.compute(predictions=predictions, references=labels)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.4.开始训练

from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer

model = AutoModelForSequenceClassification.from_pretrained(
    "distilbert-base-uncased", num_labels=2, id2label=id2label, label2id=label2id
)

training_args = TrainingArguments(
    output_dir="my_awesome_model",
    learning_rate=2e-5,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=16,
    num_train_epochs=2,
    weight_decay=0.01,
    evaluation_strategy="epoch",
    save_strategy="epoch",
    load_best_model_at_end=True,
    push_to_hub=True,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_imdb["train"],
    eval_dataset=tokenized_imdb["test"],
    tokenizer=tokenizer,
    data_collator=data_collator,
    compute_metrics=compute_metrics,
)

trainer.train()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

1.5.总结

  1. 可以看出来,整体上非常简单:加载数据、设置预处理、处理数据、训练即可。但是这么简单的东西,还有人不知道,因此我觉得还是很有必要分享出来的。
  2. (当然,我也不是无脑的就是说这个包非常好,这个包就一定上手简单,那是不可能的。只是说这个包相对于别的包来说,更好用。)上面的代码虽然简单,但是如果你不了解其中的原理和细节,很难搞懂,也就很难用起来。也就是说,我们要用巧劲,才能以柔克刚,驱动这个大家伙。不然你会感觉这玩意怎么这么难用。
  3. 因此,我会在后面会分享一些详细的、完整的教程,可以期待一下,关注公众号「统计学人」

2.文本纠错

  1. 如果你之前见过文本分类,那你可能感觉上面的案例没什么意思,别急往下看。
  2. 如果你之前连文本分类都不清楚,那你可能会对这个案例感觉更有意思。

给你看个文本

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