利用AI做科研的实践

一直以来都是听别人说,AI怎么怎么厉害,尤其在做科研方面,从实验到论文。虽然也在一些常见任务上经常使用AI,但是系统完整的体验,尤其面向一个具体的较大规模科研任务,AI是否可以提供足够的支撑,我还从未有过经验。今年暑假,我得空尝试了下。一开始,先不说结论,先开始。

这是一个比较大的任务。有大约50多万篇文献数据,每篇论文都给出了标题、摘要等基本信息,我想通过一些可视化手段全面展示这些文献相关研究内容的主题变迁。

首先需要处理数据。原始数据过于庞杂,而且都是自然语句,不便于分析和展示,我想对其进行关键词抽取。第一个提示词:

你是一名研究图书情报学科的专家,掌握较好的深度学习和自然语言处理技能,现在有一份几十万条的论文数据,具体各个字段为:
doi,title,authors,organizations,abstract,keywords,english_title,english_abstract,english_keywords,classification_number,publish_date,online_publish_date,pages,journal_title,issn,year_issue,column_name,detail_url,crawled_at

比如这是一条对应的记录:
10.11925/infotech.2096-3467.2024.0259,融合古籍信息的中医药知识图谱推理研究,韩青; 周晓英,浙江中医药大学医学技术与信息工程学院 杭州 310053; 中国人民大学信息资源管理学院 北京 100872,"[目的]针对中医药知识图谱存在结构稀疏、语义信息利用不足等问题,将中医古籍文本作为实体描述信息引入表示学习模型,以提升知识图谱推理性能.[方法]以《伤寒论》398条条文为语料,通过人工标注与自动抽取相结合的方式构建经方知识图谱,并将《伤寒论》及《金匮要略》中与实体相关的条文作为实体描述语料输入预训练语言模型.在TransE、DistMult、ComplEx、SimplE等基线模型上分别融合静态BERT表示(BERT-Static)和端到端微调BERT表示(BERT-Dynamic)进行知识图谱推理实验.[结果]在经方知识图谱上,融合古籍信息后的推理模型在MRR、Hits@1、Hits@3、Hits@10等指标上的性能均明显优于对应的基线模型.从绝对数值看,MRR 由 0.062~0.089提升至0.257~0.270,Hits@10 由 0.148~0.181 提升至 0.513~0.547.文本长度消融实验表明:当BERT输入长度由16增加至96个中文字符时,模型性能持续提升;但超过96个中文字符后性能提升不再显著,而训练时间近似线性增长.[局限]本研究实验数据主要来源于《伤寒论》及《金匮要略》相关条文,知识图谱规模相对有限;方法上仅考虑实体描述信息与结构三元组的联合表示,未纳入关系路径与规则推理等结构增强信息.[结论]将中医古籍文本作为实体描述信息并与预训练语言模型结合,能够有效增强中医药知识表示能力,显著提升中医药知识图谱推理性能.",中医药; 中医古籍; 知识图谱推理; 预训练语言模型; 经方知识图谱; 表示学习,Knowledge Graph Reasoning for Traditional Chinese Medicine Enhanced by Classical Texts,"[Objective]This study introduces classical traditional Chinese medicine(TCM)texts as entity descriptions into representation learning models to improve knowledge graph reasoning performance,addressing the problems of structural sparsity and insufficient utilization of semantic information in TCM knowledge graphs.[Methods]A classical formula knowledge graph was constructed using 398 clauses from Shanghan Lun as the primary corpus,combining manual annotation and automatic extraction in a hybrid process.Relevant passages from Shanghan Lun and Jinkui Yaolue,associated with the graph's entities,were used as textual descriptions and were encoded using a pre-trained language model.Knowledge graph reasoning experiments were conducted by integrating static BERT representations(BERT-Static)and fine-tuned BERT representations(BERT-Dynamic)with several baseline models,including TransE,DistMult,ComplEx,and SimplE.[Results]On the Jingfang knowledge graph,the reasoning models enhanced with classical text information consistently outperformed their corresponding baseline models in MRR,Hits@1,Hits@3,and Hits@10.In absolute terms,MRR increased from 0.062~0.089 to 0.257~0.270,and Hits@10 increased from 0.148~0.181 to 0.513~0.547.Ablation experiments on input length further indicated that model performance improved as the BERT input length increasing from 16 to 96 Chinese characters,but improvements became marginal beyond this point while training time increased approximately linearly.[Limitations]The experimental data mainly derive from passages in Shanghan Lun and Jinkui Yaolue,and the scale of the knowledge graph remains relatively limited.Moreover,the proposed method only considers the joint representation of entity descriptions and structural triples,while additional structural enhancement mechanisms such as relation paths and rule-based reasoning are not yet incorporated.[Conclusions]Incorporating classical TCM texts as entity descriptions and integrating them with pre-trained language models can effectively enhance knowledge representation and significantly improve reasoning performance in TCM knowledge graphs.",Traditional Chinese Medicine; Classical Texts; Knowledge Graph Reasoning; Pre-Trained Language Models; Jingfang Knowledge Graph; Representation Learning,G255; TP391.1; R2-03,2026-03-25,2026-05-25,12 (25-36),数据分析与知识发现,2096-3467,"2026,10(3)",研究论文,https://d.wanfangdata.com.cn/periodical/xdtsqbjs202603003,2026-07-19T15:42:21+08:00

传统词语共现方法可以只能得到词语之间纯粹的共现关系,从而导致诸如“研究”“性能”等无关词语也具有较高的共现频次,我想利用人工智能方法,通过调用本地Ollama大语言模型,调用 Ollama + 固化 JSON Schema 抽取的Python代码,将每条记录都抽取成几个方面:
比如抽取成ID(行号),research_object,core_tech,research_task,app_scenario,publish_date,online_publish_date,year_issue,publish_year等

请完成一个Python代码版本,逐条抽取几十万条的论文数据文件(articles_merged.csv)中每条记录,并解析成各个成分字段,存储到papers_extracted.csv,其中考虑到中途可能崩溃,抽取代码可以首先判断papers_extracted.csv最后一条记录的行号,并接着下一条记录继续抽取

主要感受:

1)这个提示词其实并非一下子写出来,也是将问题抛给大语言模型后结合自己的专业认知,形成了一个初步的思路。其中大语言模型给我的主要建议就是具体给出了可以抽取的几个主要部分,如研究对象、核心技术、研究任务和应用领域。我觉得比较合理。但是我自己也从实际运行中调整补充了两点:一是要求使用本地Ollama,当然为了节省大量的Token费用;二是抽取非常漫长,中间可能会意外中断,我希望能接着继续抽取而不是从头再来。

2)目前的大语言模型代码质量出乎我的意料,非常高,大部分情况下都可以直接运行,即使对于这里非常复杂的需求,仍然可以满足。但是需要在提示词中尽可能详细的描述清楚,比如字段名称和内容等,需求也需要先期通过大语言模型和自己运行调整,并非一蹴而就就可以写成。比如后期仍然还是继续调整了要求,要求提高运行速度,并且增加中间处理过程的输出,能看到目前的进展。在维持上下文会话状态时,可以直接继续提问,如果不放心,可以将上一次生成的代码作为附件,继续要求在此基础上修改。

3)具体的大语言模型可以使用自己觉得不错的任何模型,我使用的是Gemini和阿里的Qoder,前者比较适合整体输出,后者非常适合对于具体问题实时调整。


接着需要对抽取的每个论文成分继续关键词抽取,这是提示词:

下面是papers_extracted.csv文件,基本字段列结构为:

ID,doi,research_object,core_tech,research_task,app_scenario,publish_date,online_publish_date,year_issue,publish_year

请编写Python代码,可以将ID和research_object列信息单独抽取出来,其中research_object列内容再次使用分词方法拆解为一个或者多个关键词,去除常见的无用词语,比如“科学论文的颠覆性与其技术影响的关系”应该得到“科学论文”“颠覆性”技术影响”,最终形成ID和research_object拆解关键词列,每个关键词使用逗号分隔

主要感受:

1)因为我们在进行这些工作之前,往往并不可能意识到全部的具体技术路线,因此不可能一下子就能写出完整的需求。同时,从理论上看,也不建议这样做,还是小步试错、逐渐求精更为合理。

2)这个版本的提示词结合刚才生成的论文抽取成分文件,只对其中一个成分进行关键词抽取。默认情况下,大语言模型会使用诸如jieba等分词工具,效果有限。通过观察,我再次要求改为使用Ollama调用大语言模型来分词。

3)为了和原始数据能对应上,我还继续要求在编写Python代码时,在从第二行开始的每条记录前增加一个从1开始的计数列,并在第一行标注列名为ID,以便和原始数据行号对应便于我核实。显然这些要求都是在实际运行时才能知道需要增加的。还是老方法,要么维持在当前会话状态下,要么把已经可以运行并且需要修改的代码附件上去,以确保在原先内容上进行修改。

4)年份信息非常重要,考虑到原始数据年份信息可能有误或者部分缺失,因此要求从publish_year抽取,如果该列原始内容为空,则考虑从publish_date、online_publish_date、year_issue等更多列中按照最常出现的年份来获取年份填充进去。


利用词语共现是一种常见的分析方法。因此接下来,我准备对刚才拆分好的论文各个成分,先取出研究对象,进行双词共现分析。提示词为:

下面有papers_keywords_split.csv文件,其中有research_object_keywords列,该列内容为可能为空,大部分情况下都有值,内容为使用逗号分隔的多个关键词或者一个关键词,如:
中医知识问答系统
科学论文,颠覆性,技术影响
...

请编写Python代码,遍历全部该列各行,首先抽取所有的关键词,统计每个关键词出现的行数,并存储到文件中。
然后再次所有共现关键词,即同时出现在一行中任意两个关键词,统计所有共现关键词对及其出现的行数,也存储到文件中。

在这个地方,即使AI可以帮助我们快速完成代码,但是在思路上还需要自己进行把控。比如我的想法是获得每个关键词的频次和每两个关键词的共现频次,以备后续分析使用。

但是做到这一步,问题就逐渐产生了。生成的双词首先会形成冗余互对,即A和B共现必然还有一个B和A共现。另一个关键问题是对于”研究“”问题“等词语常常都是高居大部分词语共现榜首的高频共现词语。

科研做到这一步,将会产生明显的分化。既可以通过AI询问,更应该结合自己的专业知识做出合理选择。


我的初步想法是,在存储共现关键词对时,保证第一个关键词出现的行数要大于等于第二个关键词。因为我认为上位概念对应的关键词出现频次应该高于下位的概念词语。这显然是一个假设。

提示词为:

请修改上述代码,确保在存储共现关键词对时,保证第一个关键词出现的行数要大于等于第二个关键词

为了进一步观察这种划分的效果,我再次发出提示词:

现在有文件keyword_cooccurrences.csv,内容如:

source,target,weight

图书馆,服务,1052

图书馆,网络环境,512

高校图书馆,信息服务,485

高校图书馆,服务,453

图书馆,建设,441

服务,参考咨询,392

图书馆学,情报学,380

档案管理,事业单位,377

公共图书馆,服务,324

图书馆,管理,311

图书馆,读者,296

图书馆,阅读推广,280

...

请根据用户在运行时输入的一个词语,抽取该所有以该词语作为source的行,取weight值最大的前10行,以对应的target关键词作为下级节点,再对每一个下级节点,再次使用同样的方法抽取下一层各自的节点,只需三级即可,最后绘制下树状图。生成的树状图可以拖拽,默认关闭所有节点下级节点,点击某个节点才展示下一级节点,并且可以拖拽调整显示位置。


以上是这个科研工作刚起步的感受和过程,我在大约十几年前也做过类似的工作。当时不论是数据处理还是可视化展示都花了很多时间,当然还包含这次做法的一些经验形成。然而,有了AI,对于大部分代码工作都已经不用我来完成,我只需提供思路,引导生成所需的内容。前前后后也就一二个小时,效果惊人。我觉得就像OPC一人公司一样,未来一人科研团队也极有可能。

相关新闻

KafkaProducer 源码深度剖析:RecordAccumulator 封装消息流程

KafkaProducer 源码深度剖析:RecordAccumulator 封装消息流程

为什么需要 RecordAccumulator 前面几篇讲了 send() 怎么序列化、怎么选分区。但选完分区后,消息不是直接发出去的——那样每条消息一次网络请求,吞吐会惨不忍睹。 Kafka Producer 的核心优化就是攒批:同一分区的消息先在内存里攒成一个批次&…

2026/11/15 13:30:24 阅读更多 →
HTML5视频播放实战:从video标签到编码兼容与性能优化

HTML5视频播放实战:从video标签到编码兼容与性能优化

1. 先搞清楚:为什么视频不能直接塞进网页1.1 从GIF到HTML5视频的演进前几年还经常能看到有人用GIF做演示动效,一个十几秒的录屏转成GIF之后动辄几十MB,加载起来页面卡得不行。GIF本质上是图像格式,不是为连续画面临时设计的&#…

2026/11/13 15:50:05 阅读更多 →
朴素贝叶斯与SVM同场竞技:垃圾邮件识别Python工程全解析

朴素贝叶斯与SVM同场竞技:垃圾邮件识别Python工程全解析

简介:这是一个基于朴素贝叶斯与支持向量机(SVM)的垃圾邮件识别系统,适合机器学习入门者、毕业设计及分类项目实战人群。项目通过对正常邮件和垃圾邮件进行语料训练,完成词频统计与模型对比,实现邮件自动分类…

2026/11/14 10:56:39 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/15 5:13:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/15 5:13:35 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/15 5:13:35 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/15 3:37:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/15 4:18:38 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/15 5:13:35 阅读更多 →

日新闻

周新闻

月新闻