| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Python bm25短文本分类,相似度识别,BM25算法相似度匹配,疾病相似度匹配gensim实现,bm25算法原理和实现实例 -> 正文阅读 |
|
[人工智能]Python bm25短文本分类,相似度识别,BM25算法相似度匹配,疾病相似度匹配gensim实现,bm25算法原理和实现实例 |
一、bm25的应用和基础 参考:BM25算法 原理简介_小白的进阶的博客-CSDN博客_bm25 医学领域,BM25算法的应用,文档分类,相似度识别以及疾病、手术等实体的相似度匹配。文档的处理相对简单,可以直接调用相关算法包,实体单词的相似度匹配需要对文本做相关的处理。对比研究,在文档中,表示特征的主要是单词,而在实体名词(疾病、手术、药品名称)中,表示特征的是字或者由n-gram切分的元素,当用字表示特征时,文本的语义会丢失,所以我建议用字和n-gram(n>=2)分词元素作为特征。 BM25算法相关性分数的构成: 分为两个类别,一个是计算文档与文档的相似度,另一个是计算词与词的相似度,如果计算的是词(或称为短文本)与词之间的相似度,那么就要用n-gram切词,进而以每个元素为单位进行计算。 以文档相似度为例: 相关性分数公式如下: 里面包含三部分计算: (1)元素的权重,计算tf-idf,文档的元素就是词,短文本的元素为字或n-gram元素: 其中N表示索引中全部文档数,为包含了的文档的个数。依据IDF的作用,对于某个,包含的文档数越多,说明重要性越小,或者区分度越低,IDF越小,因此IDF可以用来刻画与文档的相似性。 ?(2)单词和文档的相关性: ?其中,是单词t在文档d中的词频,是文档d的长度,是所有文档的平均长度,变量是一个正的参数,用来标准化文章词频的范围,当=0,就是一个二元模型(binary model)(没有词频),一个更大的值对应使用更原始的词频信息。b是另一个可调参数(0<b<1),他是用决定使用文档长度来表示信息量的范围:当b为1,是完全使用文档长度来权衡词的权重,当b为0表示不使用文档长度。 (3)单词和查询的相关性:? ? ?这里表示单词t在query中的词频,是一个可调正参数,来矫正query中的词频范围。 最终相似度公式: 二、相似度分类实例(疾病相似度分类) 现在bm25实现的开源包有很多,在这里我是用gensim实现。 gensim包的下载配置:清华镜像源
基本使用方法,以短文本分类为实例: corpus为标准的单词分类集合,主要包含了每类疾病的标准分类特征,corpus_dic为每个特征集合对应的分类标签,key为分类标签,value为特征。test_word为测试文本。 处理过程:用测试集的特征和标准特征计算相关性,对测试样本的每个元素的相关性分数求和,即为总的相关性分数:
?测试:高血压1级
分类结果打印: ?高血压类的相关性分数为1.31,远高于其他分类,故分类结果为:高血压。 二、文本分类 需要jieba分词和stopword停用词设置,非常简单。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:20:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |