首页 > 其他分享 >基于n-gram重叠选择示例的实现

基于n-gram重叠选择示例的实现

时间:2025-01-07 19:31:48浏览次数:9  
标签:prompt 重叠 示例 Spot gram input example

在自然语言处理任务中,有时候我们需要根据输入的文本选择和展示最相似的示例。这就需要用到n-gram重叠技术来计算相似度,并基于此来选择示例。今天,我们就来看看如何使用NGramOverlapExampleSelector来实现这个功能。

技术背景介绍

NGramOverlapExampleSelector是一个工具类,用于根据输入文本的n-gram重叠程度排序和选择示例。n-gram重叠分数介于0.0到1.0之间。选择器允许设置阈值分数,当示例的n-gram重叠分数小于等于这个阈值时,会被排除在外。默认情况下,阈值为-1.0,不排除任何示例,仅重新排序。

原理深度解析

n-gram是指文本中连续出现的n个词,对于两个文本,通过计算它们的n-gram重叠情况,可以获得一个相似度分数。这种方法在文本相似度计算中十分常见。NGramOverlapExampleSelector利用这个原理来排序示例,使得最相似的示例优先展示。

实战代码演示

闲话少说,直接上代码:

from langchain_community.example_selectors import NGramOverlapExampleSelector
from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate

example_prompt = PromptTemplate(
    input_variables=["input", "output"],
    template="Input: {input}\nOutput: {output}",
)

# 示例数据
examples = [
    {"input": "See Spot run.", "output": "Ver correr a Spot."},
    {"input": "My dog barks.", "output": "Mi perro ladra."},
    {"input": "Spot can run.", "output": "Spot puede correr."},
]

# 创建选择器
example_selector = NGramOverlapExampleSelector(
    examples=examples,
    example_prompt=example_prompt,
    threshold=-1.0,  # 默认不排除任何示例
)

# 创建动态提示模板
dynamic_prompt = FewShotPromptTemplate(
    example_selector=example_selector,
    example_prompt=example_prompt,
    prefix="Give the Spanish translation of every input",
    suffix="Input: {sentence}\nOutput:",
    input_variables=["sentence"],
)

# 使用示例
print(dynamic_prompt.format(sentence="Spot can run fast."))

# 添加新示例
new_example = {"input": "Spot plays fetch.", "output": "Spot juega a buscar."}
example_selector.add_example(new_example)
print(dynamic_prompt.format(sentence="Spot can run fast."))

# 设置阈值
example_selector.threshold = 0.0
print(dynamic_prompt.format(sentence="Spot can run fast."))

# 设置小的非零阈值
example_selector.threshold = 0.09
print(dynamic_prompt.format(sentence="Spot can play fetch."))

# 设置阈值大于1.0
example_selector.threshold = 1.0 + 1e-9
print(dynamic_prompt.format(sentence="Spot can play fetch."))

优化建议分享

老铁们,如果在使用过程中发现选择的示例不够准确,可以通过调整threshold来优化。当threshold设置为0.0时,只排除完全没有n-gram重叠的示例。如果发现不够智能,可以适当设置为一个小的正数。建议使用代理服务提高稳定性。

补充说明和总结

说白了,NGramOverlapExampleSelector就是利用n-gram重叠计算来智能筛选示例。对于需要动态选择示例的应用场景,这波操作可以说是相当丝滑。像我个人一直在用 https://zzzzapi.com 提供一站式大模型解决方案,能够极大提升开发效率。

今天的技术分享就到这里,希望对大家有帮助。在开发过程中遇到问题也可以在评论区交流~

—END—

标签:prompt,重叠,示例,Spot,gram,input,example
From: https://blog.csdn.net/asd56456as4d/article/details/144890773

相关文章

  • echarts示例-legend
    二、legend-图例1、type-图例的类型。可选值:'plain':普通图例。缺省就是普通图例。'scroll':可滚动翻页的图例。当图例数量较多时可以使用。当使用'scroll'时,使用这些设置进行细节配置:legend.scrollDataIndexlegend.pageButtonItemGaplegend.pageButtonGaplegend.pageButton......
  • 配置NQA for IPv4静态路由示例
    通过配置NQAforIPv4静态路由可以快速检测到网络的故障,控制静态路由的发布,实现业务切换。组网需求当网络比较简单,或者路由器不能通过动态路由协议建立到达目的网络的路由时,可以配置静态路由。但是,与动态路由协议不同,静态路由自身没有检测机制,当网络发生故障时,静态路由无法......
  • 解释 FUNCATION,PROCEDURE 和 PACKAGE 区别 ?思维导图 代码示例(java 架构)
    在PL/SQL中,FUNCTION、PROCEDURE和PACKAGE是三种不同的程序单元,它们各自有特定的用途和特性。下面将通过思维导图的形式来概述它们的区别,并提供相应的代码示例。思维导图结构-PL/SQL程序单元-FUNCTION-定义-返回一个值-使用场景-计算......
  • View 的使用示例
    创建一个简单的HTMLView假设有一个名为Index.cshtml的View文件,用于展示一个简单的页面:html@{Layout=null;}<!DOCTYPEhtml><html><head><title>IndexPage</title></head><body><h1>WelcometoMyWebsite</h1&g......
  • 五种下载Instagram图片/视频的方法 ,无需安装应用
    Instagram作为海外社交分享平台有超过10亿以上的活跃用户,你在浏览过程中是否有想永久保存平台图片或视频的冲动。但在Instagram平台是不允许储存的,本篇将介绍五种保存帖子中的图片以及图片的下载器。1.DLBunnyInstagram视频照片下载-DLBunnyhttps://dlbunny.com/zh-CN/ins......
  • Java SpringBoot 图片转PDF示例
    一个SpringBoot工程里面用到了第三方签章服务,支持PDF多页盖章,用户上传的是多张图片格式的文件,所以需要将图片转成PDF。用了几个扩展包,出现过版本不兼容、转完的PDF带水印、还有操作复杂的。最后借助 aspose-pdf这个扩展包实现了,这里记录一下简单的Demo。pom.xml文件引入 a......
  • Shapefile代码示例
    Shapefile代码示例1.读取Shapefile文件1.1实现思路graphTDA[查找必要文件]-->B[获取文件编码]B-->C[打开图层]C-->D[获取要素集]D-->G[关闭图层]1.2代码示例publicstaticSimpleFeatureCollectionreadShp(StringshpPath){......
  • GeoJSON代码示例
    GeoJSON代码示例1.读取GeoJSON文件1.1实现思路graphTDA[读取GeoJSON文件]-->B[读取GeoJSON文件内容]B-->C[解析GeoJSON文件内容]C-->D[构建SimpleFeatureCollection]D-->E[返回SimpleFeatureCollection]1.2代码示例publicstaticSim......
  • FileGDB代码示例
    FileGDB代码示例返回1.读取FileGDB图层1.1实现思路graphTDA[注册OGR]-->B[设置中文路径支持]B-->C[打开数据驱动]C-->D[打开数据源]D-->G[获取图层]G-->H[读取图层信息]1.2代码示例publicLayerreadGdbLayer(StringdriverName,......
  • uniapp - 详解使用高德地图在地图上实现绘制边界/点聚合/行政区域高亮等功能,Uniapp高
    效果图在uni-app手机h5网页网站/支付宝微信小程序/安卓app/苹果app/nvue等(全平台兼容)开发中,实现各端都兼容的“安装使用高德地图并实现点聚合/地图绘制边界部分高亮显示”,高德地图点聚合标记及高德地图绘制行政边界等,标点窗体信息展示,在高德地图上标点及卡片气泡框面板......