COVID19:使用BioSentVec嵌入的问题回答模型
介绍
正如我们看到的CO V ID19在全球影响150万人和10万人死亡一样,全球AI研究界正在尽一切可能帮助医疗界。许多医学问题都是导致研究论文寻求答案的原因。这些问题适用于文本挖掘,并开发文本挖掘工具以提供有关这些问题的见解。
在这个博客中,我想分享如何使用基于BERT的嵌入 预训练 模型来构建基于文本的问答工具,以从COVID19研究论文资料库中查找与冠状病毒相关的答案。
当我是在IBM,我参加 一个 类似的解决方案,IBM风险观察,其搜索的供应链,从风险 的 新闻 文章,微博,和天气数据。基于Risk Insights项目和Biology知识领域的基础思想,我开发了此模型。使用此模型, 用户 可以搜索研究 论文 以查找并输出相关 文章 以及哪 篇论文,用户可以在哪一部分下找到输入问题的答案 。另外,它还将相关 段落 显示为输出。它返回带有文章突出显示的答案句子的顶部文章。我的代码也已上传到我的 Github
数据
为了应对COVID-19大流行,白宫和主要研究小组的联盟已经准备好了COVID-19开放研究数据集(CORD-19)。CORD-19的资源超过52
句子嵌入
该解决方案主要用于医学领域,因此我使用了 BioSentVec 预训练 模型进行嵌入。BioSentVec使用PubMed 和MIMIC-III临床数据库中的临床注释 创建了生物医学单词和句子嵌入 。PubMed和MIMIC-III文本均使用NLTK进行了拆分和标记 。我们还将所有单词都小写。更多详细信息和 预训练 模型可以 在此处使用。
建筑
该解决方案是一种问答模型。它是使用嵌入的基于检索的质量检查模型。 该 解决方案的基本思想是将问题字符串与句子语料库进行比较,并得出得分最高的句子作为答案。我使用预先训练的BioSentVec嵌入模型和KNN创建每个句子的矢量表示,以找到答案句子。
预处理
下面是我所采取的步骤 来 预处理数据。同样,您可以在我的 GitHub中访问完整代码。
● 从数据集中读取 JSON 文件
● 解析 JSON 文件
● 删除超链接,参考
● 提取节的详细信息,并 使用NLTK的send_tokenize方法按句子拆分 文章。
● 生成模型的熊猫数据框
嵌入句子
加载BioSentVec预训练模型
model_path ='BioSentVec_PubMed_MIMICIII-bigram_d700.bin'
型号= sent2vec.Sent2vecModel()
尝试:
model.load_model(model_path)
例外,例如e:
打印(e)
打印('模型成功加载')
使用BioSentVec模型向量化句子语料库
embs = model.embed_sentences(convid_sent_df ['sentence'])
KNN和排名
k最近邻居算法(KNN)t是一种非常简单的技术。首先,我将整个矢量化句子加载到模型中作为训练。当我需要找到答案时,我们需要将向量化的问题字符串作为输入发送到模型,并且 knn 模型从训练句子语料库中输出最相似的分数作为分数。从这些邻居那里总结出一个答案。 记录之间的相似性 可以用许多不同的方法来衡量。我在这里使用默认值。
从sklearn.neighbors导入NearestNeighbors
nbrs = NearestNeighbors(n_neighbors = 2,algorithm ='ball_tree')。fit(embs)
测试模型
使用经过训练的邻居模型传递问题。如“ 冠状病毒的物理科学是什么”
emb = model.embed_sentence('冠状病毒的物理科学')
距离,索引= nbrs.kneighbors(emb)
输出量
结论
使用BioSentVec嵌入和KNN算法不是唯一的 解决方案,这里有几种替代方法。
● 我们可以基于预定义关键字(模糊关键字)域词典开发自定义模型,并使用正则表达式重新定义规则以构建 基于规则的 语义搜索工具。这种模型在狭窄的知识集中非常有效,并且可以快速实施。
● 我们可以使用基于BERT的预训练Sentence Transformer 模型来开发快速问答模型。
● 还有更多选择
我打算尝试 一个 与Twitter流数据相似答疑系统的模型。
最后说明:我不是一个石楠专业人士,对模型提供的输出进行评论,而本文旨在说明可能的解决方案。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!