AIGC:Hugging Face模型使用实例

大家好,哈士奇又回来了,今天哈士奇在这里给大家分享一下昨天的提到的Hugging Face的一些模型的使用实例,旨在让大家了解认识一些有趣的模型。

首先,在开始之前,大家需要安装上之前和大家聊到的的transformers的库

diff 复制代码
!pip install transformers

使用OpenAI进行自然语言处理:从生成商品标题到情感分析

这里探讨的是transformers库的商品生成和情感分析功能

  1. 生成商品标题: 代码的前半部分展示了如何使用OpenAI的文本生成功能,通过给定的提示生成商品标题。在这个例子中,我们以淘宝网的3C数码产品为例,使用OpenAI的Completion模型生成50条商品标题。这些标题往往包含品类信息和促销类信息,具有一定的创造性和多样性。

    python 复制代码
    import 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()
  2. 情感分析: 后半部分的代码展示了如何使用OpenAI进行情感分析。通过使用嵌入式向量模型,我们能够对文本进行向量表达,然后通过余弦相似度计算两个文本之间的相似度。在这个例子中,我们以一个正面评价和一个负面评价作为例子,计算一个样本文本与正面评价的相似度减去与负面评价的相似度,从而得到一个情感分数。

    python 复制代码
    from 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进行高效数据分析与文件管理

  1. 使用Transformers进行表格问答: 代码的初始部分展示了使用Transformers库进行表格问答的方法。具体使用的模型是'google/tapas-large-finetuned-wtq'。任务涉及从包含GitHub存储库详细信息的表格中查询信息,包括存储库名称、星数、贡献者和编程语言。这种方法展示了Transformers在处理结构化数据方面的多才多艺。

    python 复制代码
    question = "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))
  2. 使用Autogen进行文件管理: 随后的部分介绍了Autogen,这是一个促进用户和助手之间无缝沟通的库。代码片段展示了如何利用Autogen列出特定目录(在这种情况下是'sample_data'文件夹)中的所有文件。

    python 复制代码
    import os
    
    def list_files(directory):
        return os.listdir(directory)
    
    print(list_files('sample_data'))
  3. 配置多个大型模型: 为了增强Autogen的功能,代码使用GPT-3.5 Turbo模型配置了多个大型模型。配置包括指定API密钥以及设置超时和温度等参数。

    python 复制代码
    config_list = [{
        'model': 'gpt-3.5-turbo',
        'api_key': '你的key'
    }]
    llm_config = {
        "timeout": 600,
        "config_list": config_list,
        "temperature": 0
    }
  4. 用户代理和助手代理: 代码的最后部分通过Autogen建立了用户和助手之间的通信设置。用户代理作为中介发起与助手代理的聊天。助手代理由配置的大型模型驱动,准备根据用户查询执行任务。

    python 复制代码
    user_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库的任务支持以及如何利用其中的模型进行零样本目标检测,以实现图像识别的功能。

  1. 支持的任务: 代码的开头展示了Transformers库支持的多个任务,通过SUPPORTED_TASKS字典提供了详细的任务列表。这些任务包括文本分类、命名实体识别、问答等多种自然语言处理任务。通过Transformers库,研究者和开发者可以方便地访问这些任务,并利用库中的模型进行相应的处理。

    python 复制代码
    from transformers.pipelines import SUPPORTED_TASKS
    
    for k, v in SUPPORTED_TASKS.items():
        print(k)
  2. 零样本目标检测: 代码的后半部分展示了如何使用Transformers库中的模型进行零样本目标检测。选择了图片识别模型google/owlvit-base-patch32,通过构建zero-shot-object-detection任务的pipeline,实现了对图像中目标的检测。

    python 复制代码
    from 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"]
    )
  3. 结果可视化: 最后,通过使用PIL库的ImageDraw模块,对目标检测的结果进行可视化。将检测到的目标用红色方框标注在原图上,并显示出标签和置信度。

    python 复制代码
    from 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。

相关推荐
爱睡觉的咋4 分钟前
GNN入门案例——KarateClub结点分类
人工智能·分类·数据挖掘·图神经网络
goomind4 分钟前
YOLOv11实战宠物狗分类
人工智能·yolo·机器学习·计算机视觉·分类·聚类
正在走向自律13 分钟前
AI写作(二)NLP:开启自然语言处理的奇妙之旅(2/10)
人工智能·自然语言处理·ai写作
郝同学的测开笔记14 分钟前
云原生探索系列(十二):Go 语言接口详解
后端·云原生·go
Jurio.25 分钟前
【SPIE出版,EI稳定检索】2024年信号处理与神经网络应用国际学术会议(SPNNA 2024,12月13-15日)
图像处理·人工智能·深度学习·神经网络·机器学习·计算机视觉·信号处理
zy01010129 分钟前
使用 IDEA 创建 Java 项目(二)
java·人工智能·intellij-idea
wclass-zhengge32 分钟前
SpringCloud篇(注册中心 - Nacos)
后端·spring·spring cloud
液态不合群34 分钟前
Spring AI 再更新:如何借助全局参数实现智能数据库操作与个性化待办管理
数据库·人工智能·spring
2401_8574396936 分钟前
Spring Boot编程训练系统:深入设计与实现
java·spring boot·后端
2401_8576363938 分钟前
电商系统设计与实现:Spring Boot框架
数据库·spring boot·后端