大家好,哈士奇又回来了,今天哈士奇在这里给大家分享一下昨天的提到的Hugging Face的一些模型的使用实例,旨在让大家了解认识一些有趣的模型。
首先,在开始之前,大家需要安装上之前和大家聊到的的transformers的库
diff
!pip install transformers
使用OpenAI进行自然语言处理:从生成商品标题到情感分析
这里探讨的是transformers库的商品生成和情感分析功能
-
生成商品标题: 代码的前半部分展示了如何使用OpenAI的文本生成功能,通过给定的提示生成商品标题。在这个例子中,我们以淘宝网的3C数码产品为例,使用OpenAI的Completion模型生成50条商品标题。这些标题往往包含品类信息和促销类信息,具有一定的创造性和多样性。
pythonimport openai openai.api_key = "你的key" def generate_data_by_prompt(prompt): response = openai.Completion.create( engine="text-davinci-003", prompt=prompt, temperature=0.5, max_tokens=2048, top_p=1 ) return response.choices[0].text prompt = """ #请你生成50条淘宝网里的商品的标题,每条在30个字左右,品类是3C数码产品,标题里往往 #也会有一些促销类的信息,每行一条。 """ data = generate_data_by_prompt(prompt) print(data) import pandas as pd product_names = data.strip().split('\n') df = pd.DataFrame({'product_name': product_names}) df.head() df.product_name = df.product_name.apply(lambda x: x.split('.')[1].strip()) df.head()
-
情感分析: 后半部分的代码展示了如何使用OpenAI进行情感分析。通过使用嵌入式向量模型,我们能够对文本进行向量表达,然后通过余弦相似度计算两个文本之间的相似度。在这个例子中,我们以一个正面评价和一个负面评价作为例子,计算一个样本文本与正面评价的相似度减去与负面评价的相似度,从而得到一个情感分数。
pythonfrom openai.embeddings_utils import get_embedding, cosine_similarity EMBEDDING_MODEL = "text-embedding-ada-002" positive_review = get_embedding("好评", EMBEDDING_MODEL) negative_review = get_embedding("差评", EMBEDDING_MODEL) positive_example = get_embedding("进哥哥拍照水平一流,财大第一") def get_score(sample_embedding): return cosine_similarity(sample_embedding, positive_review) - cosine_similarity(sample_embedding, negative_review) positive_score = get_score(positive_example) print("好评例子的评分: %f" % (positive_score))
这里介绍了如何使用OpenAI进行文本生成和情感分析。通过OpenAI的强大功能,我们可以在各种应用场景中实现创造性和智能的自然语言处理任务。这不仅拓展了自然语言处理的应用范围,同时也为研究者和开发者提供了强大的工具,以便更好地理解和处理文本数据。
利用Transformers和Autogen进行高效数据分析与文件管理
-
使用Transformers进行表格问答: 代码的初始部分展示了使用Transformers库进行表格问答的方法。具体使用的模型是'google/tapas-large-finetuned-wtq'。任务涉及从包含GitHub存储库详细信息的表格中查询信息,包括存储库名称、星数、贡献者和编程语言。这种方法展示了Transformers在处理结构化数据方面的多才多艺。
pythonquestion = "How many repository are there?" context = pd.DataFrame.from_dict({ "Repository": ["Transforms", "Datasets", "Tokenizers"], "Stars": ["23258", "4512", "3934"], "Contributors": ["2205", "77", "34"], "Programming Language": ["Python,JS", "Python", "Python,Rust,NodeJS"] }) res = pipeline("table-question-answering", model="google/tapas-large-finetuned-wtq") print(res(query=question, table=context))
-
使用Autogen进行文件管理: 随后的部分介绍了Autogen,这是一个促进用户和助手之间无缝沟通的库。代码片段展示了如何利用Autogen列出特定目录(在这种情况下是'sample_data'文件夹)中的所有文件。
pythonimport os def list_files(directory): return os.listdir(directory) print(list_files('sample_data'))
-
配置多个大型模型: 为了增强Autogen的功能,代码使用GPT-3.5 Turbo模型配置了多个大型模型。配置包括指定API密钥以及设置超时和温度等参数。
pythonconfig_list = [{ 'model': 'gpt-3.5-turbo', 'api_key': '你的key' }] llm_config = { "timeout": 600, "config_list": config_list, "temperature": 0 }
-
用户代理和助手代理: 代码的最后部分通过Autogen建立了用户和助手之间的通信设置。用户代理作为中介发起与助手代理的聊天。助手代理由配置的大型模型驱动,准备根据用户查询执行任务。
pythonuser_proxy = autogen.UserProxyAgent( name="user_proxy", human_input_mode="TERMINATE", max_consecutive_auto_reply=10, code_execution_config={"work_dir": "."}, system_message="如果任务已经完全满意,请回复 TERMINATE。否则,请回复 CONTINUE,或说明任务尚未解决的原因。" ) assistant = autogen.AssistantAgent( name="assistant", llm_config=llm_config ) user_proxy.initiate_chat( assistant, message=""" 列出'sample_data'文件夹中的所有文件 """ )
总的来说,Transformers和Autogen的结合为数据分析师和开发人员提供了强大的工具包。Transformers在结构化数据分析方面表现出色,如表格问答所示,而Autogen简化了用户和助手之间的交互,提高了诸如文件管理之类任务的效率。随着这些库的不断发展,它们在推动自然语言处理和人工智能驱动应用的发展方面发挥了重要作用。
Transformers库的任务支持到图像识别的全方位探索
探讨Transformers库的任务支持以及如何利用其中的模型进行零样本目标检测,以实现图像识别的功能。
-
支持的任务: 代码的开头展示了Transformers库支持的多个任务,通过
SUPPORTED_TASKS
字典提供了详细的任务列表。这些任务包括文本分类、命名实体识别、问答等多种自然语言处理任务。通过Transformers库,研究者和开发者可以方便地访问这些任务,并利用库中的模型进行相应的处理。pythonfrom transformers.pipelines import SUPPORTED_TASKS for k, v in SUPPORTED_TASKS.items(): print(k)
-
零样本目标检测: 代码的后半部分展示了如何使用Transformers库中的模型进行零样本目标检测。选择了图片识别模型
google/owlvit-base-patch32
,通过构建zero-shot-object-detection
任务的pipeline,实现了对图像中目标的检测。pythonfrom transformers import pipeline from PIL import Image, ImageDraw import requests checkpoint = "google/owlvit-base-patch32" detector = pipeline('zero-shot-object-detection', model=checkpoint) url = "https://unsplash.com/photos/oj0zeY2Ltk4/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MTR8fHBpY25pY3xlbnwwfHx8fDE2Nzc0OTE1NDk&force=true&w=640" img = Image.open(requests.get(url, stream=True).raw) predictions = detector( img, candidate_labels=["hat", "sunglasses", "book"] )
-
结果可视化: 最后,通过使用PIL库的ImageDraw模块,对目标检测的结果进行可视化。将检测到的目标用红色方框标注在原图上,并显示出标签和置信度。
pythonfrom PIL import ImageDraw draw = ImageDraw.Draw(img) for prediction in predictions: box = prediction["box"] label = prediction["label"] score = prediction["score"] xmin, ymin, xmax, ymax = box.values() draw.rectangle((xmin, ymin, xmax, ymax), outline="red", width=1) draw.text((xmin, ymin), f"{label}: {round(score, 2)}", fill="red") img.show()
结论: Transformers库不仅支持多种自然语言处理任务,还提供了强大的图像识别模型。通过使用Transformers的零样本目标检测功能,我们可以轻松地实现对图像中目标的检测和识别。这一全方位的功能使得Transformers库在各种应用场景中都能发挥重要作用,推动了自然语言处理和图像识别领域的不断创新。
以上哈士奇为大家介绍了多种不同的transformers库的用法,以及其中不同模型的使用方法,如果大家感兴趣的话可以和哈士奇一起探讨transformers。