返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

LLM表格RAG中的日期数据格式处理

[复制链接]
链载Ai 显示全部楼层 发表于 6 天前 |阅读模式 打印 上一主题 下一主题

随想杂谈:

昨天母亲节,很多人都有发了母亲节感想,有的表达对母亲的感恩,有的表达对母亲的思念,其中,我看到一个网友发的母亲节感想不禁潸然泪下,这个朋友发的感想是这样的:

大几十岁的人了,看到这样的肺腑之言真情流露,依然难以内心平静,泪水不禁流出,好在是哄娃睡觉已经关灯,没人看得到一个大男人此时的丑样。遗憾于网友所经历的境遇,而我自己的境遇也好不到哪里去,我也差点失去了至亲,太多痛苦在脑海中回荡不去,想说的很多,但又说不出口,唯有与大家一起珍惜眼前人共勉。

在csv、tsv、xlsx等表格文档处理中,如果存在日期数据,比如某一列值是“1/1/2002”时,使用pandas读取进来之后,pandas是默认转换为具体的数字的,如“1/1/2002”则被转换为数字37257,这就导致我们所看到的表格数值与实际读取到的数值存在形式上前后不一致的问题,这对于要将表格转换到database数据库中再基于LLM功能进行RAG检索带来了很大的影响,因为我们在提问题时一般是按照日期格式来进行提问的而不是具体的数值。

这就需要对表格日期数据进行前后一致处理以保证LLM表格RAG中的准确性。

问题的解决办法挺多,实践中,我是按照如下方法进行处理的,该方法可以保证日期数据的前后一致性。

  • 首先,需要确认哪一列日期数据需要特殊处理。这个可以通过编写功能函数来自动识别,但是有点复杂,实践中也可以直接设定两个参数来具体指定,一个是列名数列,另一个是格式数列;

  • 然后,根据获取得到的列名与格式,使用pandas的Timedelta和to_datetime进行数值转换,再之后根据格式要求使用dt.strftime来转换格式。

很多时候,我们直接使用to_datetime直接转换日期的话,数值会直接变成类似“1970-01-01 00:00:00.000037257”这样的时间戳,但这个与实际日期不相符,因而会需要用到Timedelta和to_datetime共同作用如下date函数所示以便获取到准确的时间,再之后再将日期转换到特定格式也就不是什么难事了。

def date(para):    if type(para) == int:        delta = pd.Timedelta(str(int(para)) + 'days')        time = pd.to_datetime('1899-12-30') + delta        return time    else:        return para

通过这样的简单方法,就可以达成表格日期数据的前后处理一致性,从而提高了LLM的RAG准确性。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ