在当今的数据驱动世界中,自然语言处理(NLP)成为了一个不可或缺的领域。本文将探讨一个令人惊叹的工具包,它允许仅用几行代码就能执行所有的NLP操作。即使是初学者,也能轻松地执行各种NLP操作,并根据任务进行微调。
从头开始应用NLP操作
从头开始进行NLP操作的推理变得繁琐,因为它需要执行多个步骤。这些步骤包括使用分词器处理原始文本数据、将数据转换为模型的输入格式、使用预训练层或自定义层设计模型、训练和验证以及推理。而Transformers工具包基本上通过提供预训练模型和简单的实现方式,帮助实现NLP任务。
Transformers工具包
Transformers工具包由huggingface.io提供。它试图解决在NLP领域面临的各种挑战;它提供了预训练模型、分词器、配置、各种API、现成的管道等。Transformers工具包的优势在于,它允许使用预训练的语言模型以及它们的数据处理工具。大多数模型都是直接提供给,并在PyTorch和TensorFlow库中提供。
使用Pipeline开始
使用预训练模型进行给定NLP任务的预测的最简单方法是使用Transformers工具包中的pipeline()。管道是使用预训练模型进行推理的绝佳方式。这些管道抽象了大部分复杂的代码,用于数据处理和推理步骤。使用Transformers创建NLP任务的管道非常简单。
!pip install transformers
from transformers import pipeline
在Transformers工具包中,pipeline是一个包装类,用于命名实体识别、掩码语言建模、情感分析、特征提取、问答等其他管道。
情感分析
这个管道可以根据情感对文本进行分类,包括正面和负面以及置信度。这个管道仅针对二元类别分类进行训练,因此它不适用于多类别分类。
pipe = pipeline("text-classification")
pipe = pipeline("sentiment-analysis")
pipe(["这家餐厅很棒", "这家餐厅很糟糕"])
文本摘要
通过创建新句子来摘要给定的文本。它使用基于深度学习的生成性文本摘要。目前,T5和BART仅支持文本摘要管道。
summarizer = pipeline(“summarization”, model=”t5-base”, tokenizer=”t5-base”, framework=”tf”)
summary=summarizer(context, max_length=130, min_length=60)
print(summary)
问答
nlp = pipeline(“question-answering”)
result = nlp(question="火星任务何时发射?", context=context)
print(result['answer'])
语言翻译
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, Pipeline
tokenizer = AutoTokenizer.from_pretrained(“Helsinki-NLP/opus-mt-en-ru”)
model = AutoModelForSeq2SeqLM.from_pretrained(“Helsinki-NLP/opus-mt-en-ru”)
translator = pipeline('translation', model=model, tokenizer=tokenizer)
translated = translator('这是,名字。非常了解。')[0].get('translation_text')
print(translated)
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained(“Helsinki-NLP/opus-mt-en-hi”)
model = AutoModelForSeq2SeqLM.from_pretrained(“Helsinki-NLP/opus-mt-en-hi”)
model.save_pretrained(‘文件路径’)
model = AutoModelForSeq2SeqLM.from_pretrained(‘./model/clf’)
tokenizer = AutoTokenizer.from_pretrained(“./model/clf”)