[关闭]
@EVA001 2024-05-11T04:50:11.000000Z 字数 6291 阅读 189

AI助力科研数据处理——以Excel为例

在过去的一年中,以ChatGPT为代表的生成式语言模型(LLM)在技术层面取得了显著的进展,并逐渐被应用于生产和日常生活场景中。探讨如何将此类模型有效整合到科研领域,以促进科研工作的效率,降低科研人员的劳动强度,甚至激发创新思维,是一个亟待解决的难题。

目前,AI深度融合领域知识已成为科研发展的一大趋势,从预测蛋白质结构的AlphaFold3到将GPT4应用于RNA测序分析,无不展现着AI的强大能力。与此同时,科研人员对于基础的AI工具的使用却仍然大多局限在文献及文章的处理。比如使用通用对话式AI工具(如ChatGPT、ClaudAI、Kimi等)来完成翻译/纠错/润色改写等需求,亦或使用针对性工具(如ChatPDF、ChatPaper、Txyz等)对单一或多个文献进行理解和总结综述等。但是,除此之外的对基础数据的处理往往作为科研工作的“劳动密集”部分,仍然需要我们手动完成。

本文内容即借助实例来展示非功能性的对话式AI工具(以Kimi为例)如何在基础的科研数据处理过程(Excel处理)中提高我们的工作效率。

1. 对话式场景的问题转换

问答式AI工具的文本交互的特性使得其几乎可以适应所有可以抽象为文本的现实应用场景,也就是说,其核心就将要解决的问题改写、转化或抽象为文本。即,我们需要格外注意输入和输出的设计,前者决定着工具是否能准确识别并理解我们的数据部分,后者则决定了我们是否可以方便的使用其输出结果。

在问题的转化过程中,应注意以下几点

接下来,我们用三个实例(单一数据清洗实例、单一数据计算实例、多数据整合实例)来具体说明如何借助AI来处理Excel数据。

2. 数据清洗实例

假设我们有一个Excel数据表,但其中的数据存在一些不规范问题,比如文本大小写不统一、首尾多余的空格、数值数据保留小数不一致、留空处理不一致等等,下面我们就借助AI来完成数据的清洗。。

Object V_a V_b V_c V_d
item_A 0.12 1 text
item B 1.5 Y 1 text
itemC 10 Y null
Item-D 0.01 1 img
Item-e 1.83 null

现在我们将使用AI工具来帮助我们快速规范数据,以达到以下的规范化格式。

Object V_a V_b V_c V_d
item_a 0.1 N 1 text
item_b 1.5 Y 1 text
item_c 10.0 N 0 null
item_d 0.0 N 1 img
item_e 1.8 N 0 null

下面即整个问答的全文未改动记录:

  1. User: 给你以下列表,命名为表A,其中每一列都并不规范,请指出问题
  2. Object,V_a,V_b,V_c,V_d
  3. item_A,0.12,,1,text
  4. item B,1.5,Y,,1,text
  5. itemC,10,Y,null,
  6. Item-D,0.01,,1,img
  7. Item-e,1.83,,,null
  8. Kimi: A中存在几个问题,这些问题可能会影响数据的准确性和一致性:
  9. 1. 列标题不一致:第一行的列标题使用了不同的格式,如`V_a``V_b``V_c``V_d`,这可能表示不同的数据类型或属性,但应保持格式一致。
  10. 2. 空值表示不一致:空值在表中用到了几种不同的表示方法,如空字符串`""`、逗号`,``null`和缺失值(即没有任何表示)。应该统一空值的表示方式,以便于处理。
  11. 3. 数据类型不一致:在`V_a``V_b``V_c``V_d`列中,有些数据明显是数字(如`0.12``1.5``10``0.01``1.83`),而有些是字符或特殊标记(如`Y``text``img`)。如果这些列代表不同的数据类型,应该分开存放,或者明确区分。
  12. 4. 文本数据未加引号:对于非数值数据(如`text``img`),在某些数据库系统中,文本数据应该用引号包围,以区分数值和其他数据类型。
  13. 5. 大小写不一致:在`item`的表示中,有的使用了大写字母(如`Item-D`),有的使用了小写字母(如`item_A`),还有的混合使用(如`item B`)。为了保持一致性,应该统一大小写。
  14. 6. 分隔符可能不一致:虽然在提供的示例中使用了逗号作为字段分隔符,但在实际的CSV或其他表格格式中,分隔符的使用需要保持一致。
  15. 7. 特殊字符使用:在`item B``Item-e`中,使用了空格和破折号,这可能在某些数据处理系统中造成问题,尤其是当使用空格作为字段分隔符时。
  16. 8. 缺少表头描述:表头没有提供对每一列数据内容的具体描述,这使得理解每一列的数据类型和含义变得困难。
  17. 为了提高数据的规范性和可用性,应该对表A进行清理和格式化,以确保所有列都有一致的格式、数据类型和空值表示。
  18. User: 请输出表A内容
  19. Kimi: A的内容如下:
  20. Object,V_a,V_b,V_c,V_d
  21. item_A,0.12,,1,text
  22. item B,1.5,Y,,1,text
  23. itemC,10,Y,null,
  24. Item-D,0.01,,1,img
  25. Item-e,1.83,,,null
  26. 这个表格包含了5行数据,每行数据有5个字段,分别是:
  27. 1. `Object`:对象名称,但存在大小写不一致和空格使用的问题。
  28. 2. `V_a`:第一列数值,表示某种数值属性,但存在空值。
  29. 3. `V_b`:第二列可能表示布尔值或某种分类,使用了`Y`和空值表示。
  30. 4. `V_c`:第三列也是数值属性,但有空值和`null`表示。
  31. 5. `V_d`:第四列包含文本和图像类型的标记,如`text``img`
  32. 请注意,这个表格的格式并不规范,如前所述,存在多个问题,包括列标题不一致、空值表示不一致、数据类型不一致等。在实际应用中,需要对这样的数据进行清洗和格式化,以确保数据的准确性和一致性。
  33. User: 现在,以我的描述对每一列进行规范化:对于object列,按照"item_A"的格式进行规范,首字母小写且尾字母大写并用下划线连接;对于V_a列,请保留一位小数;对于V_b列,请将空值用"N"填充;对于V_c列,请将空值和"null""0"填充;对于V_d列,请将空值用null填充。请按上述要求修改,并以原格式csv输出。
  34. Kimi: 根据您的要求,表A规范化后的内容如下:
  35. Object,V_a,V_b,V_c,V_d
  36. item_a,0.1,N,1,text
  37. item_b,1.5,Y,1,text
  38. item_c,10.0,N,0,null
  39. item_d,0.0,N,1,img
  40. item_e,1.8,N,0,null
  41. 在规范化过程中,我做了以下修改:
  42. 1. Object列:将所有项改为首字母小写,尾字母大写,并用下划线连接的格式(例如,`item B`变为`item_b`)。
  43. 2. V_a列:保留了每一位数值的一位小数(例如,`0.12`变为`0.1``1.83`变为`1.8`)。
  44. 3. V_b列:将空值和`null`替换为`N`(例如,`,`变为`N``null`变为`N`)。
  45. 4. V_c列:将空值和`null`替换为`0`(例如,`,``null`都变为`0`)。
  46. 5. V_d列:将空值替换为`null`,保持`text``img`不变。
  47. 请注意,由于您要求保留一位小数,所以`V_a`列中的数值已经四舍五入到一位小数。此外,对于`V_d`列,我保留了原始的非空文本值,并用`null`替换了空值。这样,您就可以得到一个格式统一且规范的CSV表格。
  48. User: 将上述新输出的表命名为表B,理解回复ok
  49. Kimi: OK,已理解您的要求。现在,将规范化后的表格命名为表B。如果需要,我可以为您提供表BCSV格式输出。

回顾前文提到的注意事项,这里作简要对应说明

3. 数据计算实例

假设现在需要继续处理上述经过清洗的表,且要求为:计算V_a列的均值和其与均值的差值,并且作为独立的两列添加到原表上,最后删除掉原表中的非数值列。与上述示例类似,下面我们就通过AI来完成这一计算过程。

  1. User: 给你如下csv结构的表,命名为表B,请计算V_a列所有单元格值的均值,并作为新的一列,附加到该表的右侧,称之为AVG列;同时,追加新的一列“GAP”列,该列单元格的值为所在记录的V_a值和AVG值的差值的绝对值。最后,删除表BV_bV_d列,完成修改的表命名为表C,使用csv格式输出,分隔符为逗号。
  2. Object,V_a,V_b,V_c,V_d
  3. item_a,0.1,N,1,text
  4. item_b,1.5,Y,1,text
  5. item_c,10.0,N,0,null
  6. item_d,0.0,N,1,img
  7. item_e,1.8,N,0,null
  8. Kimi: 首先,我们计算V_a列的均值。根据您提供的数据,V_a列的数值为:0.1, 1.5, 10.0, 0.0, 1.8
  9. 均值(AVG)计算如下:
  10. \( AVG = \frac{0.1 + 1.5 + 10.0 + 0.0 + 1.8}{5} \)
  11. \( AVG = \frac{13.4}{5} \)
  12. \( AVG = 2.68 \)
  13. 接下来,我们将计算每行的GAP值,即每行V_a值与均值的差值的绝对值。
  14. 最后,根据您的要求,我们将删除V_b列和V_d列。完成修改后,我们得到表C
  15. CCSV格式输出如下:
  16. Object,V_a,V_c,AVG,GAP
  17. item_a,0.1,1,2.68,2.58
  18. item_b,1.5,1,2.68,1.18
  19. item_c,10.0,0,2.68,7.32
  20. item_d,0.0,1,2.68,2.68
  21. item_e,1.8,0,2.68,0.88
  22. 请注意,GAP列的值是V_a值与均值2.68的差值的绝对值。例如,对于item_aGAP = |0.1 - 2.68| = 2.58。同时,我已经删除了V_d列,并添加了AVGGAP列。

通过以上过程,我们通过一轮描述即完成了需要的操作,得到了表C:

Object V_a V_c AVG GAP
item_a 0.1 1 2.68 2.58
item_b 1.5 1 2.68 1.18
item_c 10.0 0 2.68 7.32
item_d 0.0 1 2.68 2.68
item_e 1.8 0 2.68 0.88

回顾构造要求,此例子表现为:

给你如下csv结构的表,命名为表B,请计算V_a列所有单元格值的均值,并作为新的一列,附加到该表的右侧,称之为AVG列;同时,追加新的一列“GAP”列,该列单元格的值为所在记录的V_a值和AVG值的差值的绝对值。最后,删除表B的V_b和V_d列,完成修改的表命名为表C,使用csv格式输出,分隔符为逗号。

4. 增量标注实例

假设我们手中有一个包含名词列表的Excel文件,其第一列为搜列的名词,第二列是我们对其的分类标注。假设我们需要增量标注,即在已标注完成的基础上,继续对新的名词列表进行标注,且使用先前的标注类别。由于此过程和机器学习过程几乎一直,所以可以让AI工具首先来学习我们的已标注列表(约束生成空间),然后在给AI工具提供待标注列表让其逐一标注并输出。现今完成这一过程不再需要复杂的编程,只需要通过自然语言来准确描述即可。

  1. User: 给你如下列表,理解第一列的名称,和第二列的标注类别之间的关系,总结每个类别内元素的相似性和不同类别元素的差异性,新的标注列表如下,稍后我会给你一个名称列,请添加标注列,并按逗号分隔的csv格式输出。明白回复ok
  2. 名称,类别
  3. 苹果,A
  4. 香蕉,A
  5. 橘子,A
  6. 酸菜,C
  7. 大蒜,B
  8. 土豆,B
  9. 地瓜,B
  10. 西瓜,A
  11. 泡菜,C
  12. 咸菜,C
  13. Kimi: OK,我已经理解了您提供的新标注列表以及每个类别中元素的相似性和不同类别元素的差异性。现在,我将等待您提供的新名称列,然后根据您提供的类别标注关系,添加相应的标注列,并以逗号分隔的CSV格式输出结果。
  14. User: 如果已有标注均不符合,则标为X,明白回复ok
  15. Kimi: OK,明白了。如果新提供的名词与已有的标注类别均不匹配,我将使用"X"作为标注。稍后您给出名词列后,我会根据新的标注列表进行分类,并以CSV格式输出,其中不匹配的类别将被标注为"X"
  16. User: 蚂蚁
  17. 黄瓜
  18. 灯泡
  19. 芹菜
  20. 茄子
  21. 榨菜
  22. 辣白菜
  23. 书包
  24. 柠檬
  25. 火龙果
  26. 芒果
  27. Kimi: 根据您提供的标注列表,我将对您给出的名词进行分类,并以CSV格式输出。如果名词与已有的标注类别不匹配,我将使用"X"作为标注。以下是分类结果:
  28. 新名词,新标注
  29. 蚂蚁,X
  30. 黄瓜,B
  31. 灯泡,X
  32. 芹菜,B
  33. 茄子,B
  34. 榨菜,C
  35. 辣白菜,C
  36. 书包,X
  37. 柠檬,A
  38. 火龙果,A
  39. 芒果,A
  40. 在这个分类中,我使用了您提供的类别关系:
  41. - "A" 类别包括苹果、香蕉、橘子、西瓜、柠檬、火龙果和芒果,这些都是水果。
  42. - "B" 类别包括大蒜、土豆、地瓜、芹菜和茄子,这些通常被认为有皮的蔬菜。
  43. - "C" 类别包括酸菜、泡菜、咸菜、榨菜和辣白菜,这些都是腌制食品。
  44. 名词"蚂蚁""灯泡""书包"与提供类别不匹配,因此被归类为"X"

同样,按照前文的注意事项来看提示词的构造过程

5. 总结

本文从几个简单例子出发,展现了AI工具的数据处理能力,其中的问答设计都较为初级,但已涉及链式推理(CoT)等提示词技术。在之后的实际使用中,通过对[提示词工程][1][2]的进一步学习,我们可以设计更为复杂的处理逻辑,实现更加强大的处理功能,从而使AI工具真正融入到科研的每个环节,为科研工作提供最强助力。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注