首页 > 其他分享 >大模型-提示词工程-句子对语义匹配-03

大模型-提示词工程-句子对语义匹配-03

时间:2024-09-19 19:24:18浏览次数:7  
标签:03 pairs sentence 语义 print 句子 history

目录

1. 提示工程

[
    ('现在你需要帮助我完成文本匹配任务,当我给你两个句子时,你需要回答我这两句话语义是否相似。只需要回答是否相似,不要做多余的回答。', '好的,我将只回答”是“或”不是“。'),
    ('句子一:公司ABC发布了季度财报,显示盈利增长。\n句子二:财报披露,公司ABC利润上升。\n上面两句话是相似的语义吗?', '是'),
    ('句子一:黄金价格下跌,投资者抛售。\n句子二:外汇市场交易额创下新高。\n上面两句话是相似的语义吗?', '不是'),
    ('句子一:央行降息,刺激经济增长。\n句子二:新能源技术的创新。\n上面两句话是相似的语义吗?', '不是')
]

>>> sentence: ('股票市场今日大涨,投资者乐观。', '持续上涨的市场让投资者感到满意。')
>>> inference answer: 是
>>> sentence: ('油价大幅下跌,能源公司面临挑战。', '未来智能城市的建设趋势愈发明显。')
>>> inference answer: 不是
>>> sentence: ('利率上升,影响房地产市场。', '高利率对房地产有一定冲击。')
>>> inference answer: 是

2. 代码

from rich import print
# from transformers import AutoTokenizer, AutoModel

from bigdl.llm.transformers import AutoModel
from transformers import AutoTokenizer


# 提供相似,不相似的语义匹配例子
examples = {
    '是': [
        ('公司ABC发布了季度财报,显示盈利增长。', '财报披露,公司ABC利润上升。'),
    ],
    '不是': [
        ('黄金价格下跌,投资者抛售。', '外汇市场交易额创下新高。'),
        ('央行降息,刺激经济增长。', '新能源技术的创新。')
    ]
}

def init_prompts():
    """
    初始化前置prompt,便于模型做 incontext learning。
    """
    pre_history = [
        (
            '现在你需要帮助我完成文本匹配任务,当我给你两个句子时,你需要回答我这两句话语义是否相似。只需要回答是否相似,不要做多余的回答。',
            '好的,我将只回答”是“或”不是“。'
        )
    ]
    for key, sentence_pairs in examples.items():
        # print(f'key-->{key}')
        # print(f'sentence_pairs-->{sentence_pairs}')
        for sentence_pair in sentence_pairs:
            sentence1, sentence2 = sentence_pair
            # print(f'sentence1-->{sentence1}')
            # print(f'sentence2-->{sentence2}')
            pre_history.append((f'句子一:{sentence1}\n句子二:{sentence2}\n上面两句话是相似的语义吗?',
                                key))
    print("history:")
    print(pre_history)
    return {"pre_history": pre_history}

def inference(
        sentence_pairs: list,
        custom_settings: dict
    ):
    """
    推理函数。

    Args:
        model (transformers.AutoModel): Language Model 模型。
        sentence_pairs (List[str]): 待推理的句子对。
        custom_settings (dict): 初始设定,包含人为给定的 few-shot example。
    """
    for sentence_pair in sentence_pairs:
        sentence1, sentence2 = sentence_pair
        sentence_with_prompt = f'句子一: {sentence1}\n句子二: {sentence2}\n上面两句话是相似的语义吗?'
        response, history = model.chat(tokenizer, sentence_with_prompt, history=custom_settings['pre_history'])
        print(f'>>> [bold bright_red]sentence: {sentence_pair}')
        print(f'>>> [bold bright_green]inference answer: {response}')
        # print(history)

if __name__ == '__main__':

    tokenizer = AutoTokenizer.from_pretrained(r"chatglm2-6b-int4", trust_remote_code=True)
    model = AutoModel.from_pretrained(r"chatglm2-6b-int4", trust_remote_code=True).float()
    # model = AutoModel.from_pretrained(r"D:\02-weights\chatglm2-6b-int4", trust_remote_code=True).half().cuda()
    model = model.eval()
    # device = 'cpu'
    # model = AutoModel.from_pretrained(r"D:\02-weights\chatglm2-6b-int4",
    #                                   trust_remote_code=True).float()
    # model.to(device)

    sentence_pairs = [
        ('股票市场今日大涨,投资者乐观。', '持续上涨的市场让投资者感到满意。'),
        ('油价大幅下跌,能源公司面临挑战。', '未来智能城市的建设趋势愈发明显。'),
        ('利率上升,影响房地产市场。', '高利率对房地产有一定冲击。'),
    ]

    custom_settings = init_prompts()
    inference(
        sentence_pairs,
        custom_settings
    )

标签:03,pairs,sentence,语义,print,句子,history
From: https://www.cnblogs.com/cavalier-chen/p/18421200

相关文章

  • flutter开发将项目从flutter版本3.19.6升级到3.24.3过程遇到问题记录Type 'Unmodifiab
    1.androidstudio修改当个项目的flutter版本,不影响其他项目工程的flutter编译版本1.1项目右上角点击‘设置’图标,选择Settings...进去到项目的设置页面,选择fluttersdk路径1.2项目右上角点击‘设置’图标,选择Settings...进去到项目的设置页面,选择dartsdk路径2.点开打开......
  • GL-03CGJ -48W LED平板灯
    适用范围生物制药、医疗卫生、食品保健、电子IT业、实验室等。性能特点灯框采用铝合金边框、喷塑成型。灯体厚度10MM,,灯体表面静电喷涂处理,使用30000小时不变色、不褪色;边框采用优质铝框,喷白色,配合紧凑,与各种天花完美结合。反射面采用光学原理设计,反射率高,合理利用有效光,光......
  • SQLSTATE[42S02]: Base table or view not found: 1146 Table '***.ey_citysite' does
    根据提供的错误信息 SQLSTATE[42S02]:Basetableorviewnotfound:1146Table'***.ey_citysite'doesn'texist,这个错误表明数据库中不存在名为 ey_citysite 的表或视图。以下是一些可能的解决步骤:1.确认表是否存在首先确认表是否真的存在。使用SQL命令检查表可以......
  • 易优eyoucms网站Fatal error: Class '\think\cache\driver\File' not found
     根据提供的错误信息 Class'\think\cache\driver\File'notfound,这个错误表明PHP无法找到类 \think\cache\driver\File。这通常是因为类文件未被正确加载或命名空间配置不正确导致的。以下是一些可能的解决步骤:1.确认类文件路径确保类文件 File.php 的路径正确并且......
  • 易优eyoucms网站php5.4版本,报错:Can't use method return value in write context
    当你在使用PHP5.4版本时遇到“Can'tusemethodreturnvalueinwritecontext”的错误,这通常是因为你在代码中错误地使用了方法返回值。这种错误通常发生在试图将方法返回值直接赋值给变量或用于其他上下文时。解决方案以下是一些常见的原因和解决方法:1.检查代码中的赋......
  • 易优eyoucms网站请检查数据库连接信息,Access denied for user 'root'@'localhost' (us
    当你遇到“Accessdeniedforuser'root'@'localhost'(usingpassword:YES)”这样的错误时,这意味着数据库系统拒绝了你的连接请求,通常是由于提供的凭据不正确。你可以按照以下步骤来检查和修改数据库连接信息:检查数据库连接信息:确认数据库用户名(通常是root)、密码、以及数......
  • [ERROR] Error log throttle: 'Can't create thread to handle new connection' erro
    日常巡查中发现mysql日志中有大量报错:2024-09-1202:51:0219177[ERROR]Errorlogthrottle:3'Can'tcreatethreadtohandlenewconnection'error(s)suppressed2024-09-1202:51:0219177[ERROR]Can'tcreatethreadtohandlerequest(errno=......
  • 易优cms网站安装报错Parse error: syntax error, unexpected '[' in /data/home/xyu80
    当您在安装易优CMS时遇到“Parseerror:syntaxerror,unexpected'['”的错误,这通常是由于PHP版本过高导致的。易优CMS可能不支持某些较新版本的PHP语法特性。您可以尝试将PHP版本设置为5.5来解决这个问题。解决步骤确认当前PHP版本降级PHP版本至5.5重新安装易优CMS详细......
  • DLA:动态层级注意力架构,实现特征图的持续动态刷新与交互 | IJCAI'24
    论文深入探讨了层级注意力与一般注意力机制之间的区别,并指出现有的层级注意力方法是在静态特征图上实现层间交互的。这些静态层级注意力方法限制了层间上下文特征提取的能力。为了恢复注意力机制的动态上下文表示能力,提出了一种动态层级注意力(DLA)架构。DLA包括双路径,其中前向路径......
  • Can't connect to local MySQL server through socket
    mysql-urootERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/tmp/mysql.sock'(2)这是mysql登录时找不到套接字的问题。首先需要明白的是,Linux端的mysqlserver启动时会开启一个socket,Linux上的MySQL的客户端在不使用IP连接时mysqlserver时,默认......