[NLP] 中文文本相似度实战
原文: https://blog.csdn.net/github_36326955/article/details/54891204
1. 计算文本相似度的常用算法
(1) 基于词向量: 余弦相似度, 曼哈顿距离, 欧几里得距离, 明式距离(是前两种距离测度的推广)
(2) 基于字符: 编辑距离, simhash(适用于海量数据), 共有字符数(有点类似 onehot 编码, 直接统计两个文本的共有字符数, 最naive)
(3) 基于概率统计: 杰卡德相似系数
(4) 基于词嵌入模型: word2vec/doc2vec
2. TF-IDF简介
TF-IDF = term frequency–inverse document frequency = 词频-逆文本频率指数
思想: 如果某个词或短语在一篇文章中出现的频率TF高, 并且在其他文章中很少出现, 则认为此词或者短语具有很好的类别区分能力, 适合用来分类.
具体原理描述:
TF: 某个词在该文件中出现的次数(往往会被归一化).
IDF: 度量词语的普遍性, 某一词语的IDF=log包含该词语的文件数目总文件数目IDF=log包含该词语的文件数目总文件数目IDF=\log { \frac {包含该词语的文件数目}{总文件数目} }
如果一个词语的TF很高而IDF很低, 则它的TF-IDF权重就会很高, 即该词语有很好的分类能力.
3. sklearn库
sklearn是基于numpy和scipy的一个机器学习算法库.
3.1 该库共包括三大模块:
监督学习: neighbors, svm, kernel-ridge, discriminant_analysis 等
无监督学习: cluster, manifold, mixture, neural_network 等
数据变换: feature_extraction, feature_selection, preprocess 等
4. 数据集和训练任务
tmt.txt, eng.txt, food.txt: 这三个txt文件是训练数据, 每一行都是一个物品的介绍, 文件名指的是产品的类别(训练集共包含三个类别的产品).
test.txt: 这个txt文件是测试数据, 和训练数据一样每一行都是一个物品的介绍, 要训练一个模型来判断每一行说的是那种物品.
在训练之前, 我把这些txt文件都按行拆分为了很多小txt, 如tmt_1.txt中的内容是tmt.txt第一行的内容. txt文件的按行拆分可以使用”txt杀手”这个小工具.
5. 整个训练步骤
(1) 用jieba分词(corpus_segment.py).
主要使用了jieba这个工具库.
(2) 把分好的词转换为sklearn库中的Bunch格式(corpus2Bunch.py).
分词后的结果依然是一系列的txt文件, 这一步是把它们变成变量, 采用的是sklearn库中的Bunch数据结构. Bunch结构可以理解为字典, 它的每一行都包含了四个信息: 类别(target_name, 包括tmt, eng, food, test), 文件名(filenames), 文本标签(label, 包括tmt, eng, food), 文本内容(contents).
bunch = Bunch(target_name=[], label=[], filenames=[], contents=[])
(3) 用TF-IDF构建有权词向量空间(TFIDF_space.py).
这部分的任务是构建词向量空间W.
每一个词都是W的一个维度(好比是三维空间中的x, y, z), 该维度上的值是该词的权重(由TF-IDF算出). 为了减少W的维度, 要把没用的词(如”的”, “了”等)去掉, 为实现这个功能可以使用一个停用词表, 把没用的词剔除.
注意测试集和训练集要用同一个词向量空间W. 因此测试集出现但是训练集中没有出现的词将不再设为W的一个维度.
该部分最后的运行结果有两个: (1) 词典(单词及其对应的序号), (2) 权重矩阵tdm(该矩阵是二维的, 即tdm[i][j]表示第i个词在第j个类别中的权值).
(4) 用朴素贝叶斯算法对test数据进行分类(NBayes_Predict.py).
所有源码: https://github.com/YasinQiu/Chinese-Text-Classification-NBayes
[NLP] 中文文本相似度实战相关推荐
- 百度千言-中文文本相似度实战
文章目录 百度千言-中文文本相似度实战 任务1:报名比赛,下载比赛数据集并完成读取 任务2:对句子对提取TFIDF以及统计特征,训练和预测 任务3:加载中文词向量,自己训练中文词向量 任务4:使用中文 ...
- [原创]python计算中文文本相似度神器
介绍 最近因为工作需要,需要使用一个功能,就是中文文本相似度的计算.属于nlp领域的一个应用吧,这里找到一个非常好的包和大家分享.这个包叫sentence-transformers. 这里给大家介绍, ...
- 使用BERT做中文文本相似度计算与文本分类
转载请注明出处,原文地址: https://terrifyzhao.github.io/2018/11/29/使用BERT做中文文本相似度计算.html 简介 最近Google推出了NLP大杀器BER ...
- 结巴分词关键词相似度_中文文本相似度计算工具集
[磐创AI导读]:前两篇文章中我们介绍了一些机器学习不错的项目合集和深度学习入门资源合集,本篇文章将对中文文本相似度计算工具做一次汇总.喜欢我们文章的小伙伴,欢迎大家点击上方蓝字关注我们的公众号:磐创 ...
- 最准的中文文本相似度计算工具
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx text2vec, chinese text to vetor.(文本向量化表示工具,包括词向 ...
- 中文文本相似度计算工具集
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 一.基本工具集 1.分词工具 a.jieba 结巴中文分词 htt ...
- word2vec词向量训练及中文文本类似度计算
本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...
- NLP基本功-文本相似度 | AI产品经理需要了解的AI技术通识
转自:https://zhuanlan.zhihu.com/p/33567268 前言:本文作者Insight ,是我们"AI产品经理大本营"成员,下面是他分享的第3篇文章,欢迎更 ...
- NLP——计算文本相似度的常用算法
文章目录 一.绪论 二.余弦相似度 2.1 余弦相似度定义 2.2 计算相似度步骤 2.3 举例 2.4 改进方式 2.5 代码 三.TF-IDF计算 3.1 TF.IDE.TF-IDF的计算方法 3 ...
- 自然语言处理的中文文本相似度
前言 人与计算机的交互过程中,如果能提供人类的自然语言形式来进行交流,那么人与计算机就能更加亲密友好.而要实现这一机制就需要自然语言处理来处理,一般来说自然语言处理会涉及几个学科:计算机科学.语言学. ...
最新文章
- html文字随机变色效果,html肿么让字体得到随机颜色
- 【Flask项目】sqlalchemy原生sql查询,返回字典形式数据
- 【转载】不要一辈子靠技术生存
- JS 根据子网掩码,网关计算出所有的IP范围
- 论文阅读课5-DocRED: A Large-Scale Document-Level Relation Extraction Dataset(大规模文档集关系提取数据集
- 一篇关于《1984》读后感
- 在delphi中嵌入腳本語言--(譯)RemObjects Pascal Script使用說明(1)(譯)
- 计划任务执行 php代码,php实现Windows任务计划定时执行的代码以及扩展(图)
- c语言作业统计字符,C语言统计字符数(示例代码)
- Android图片完整性检验,Android安全测试之应用完整性校验检测
- 增加特征对预测准确率的影响
- 人民币大写转换 java_java人民币转大写中文
- Excel各种条件求和的公式汇总
- python获取命令行输出_python获取命令行输出结果
- 电脑硬盘分区不见了怎么恢复数据?参考方法在这
- 昌平区有什么可以玩的地
- 盘点!网络安全厂商都有哪些?
- c++输出Hello world
- 【毅力挑战】PCIe 每日一问一答(2022.11 已归档)
- 奇葩之想让我帮写代码还要白嫖