利用文本相似度进行英文文本分类(C++实现)。仅用于应付课程小作业。

代码在链接:利用文本相似度进行英文文本分类(C++实现)-C++文档类资源-CSDN下载

文本分类是自然语言处理中比较常见且重要的任务类型。本文主要利用TF_IDF算法实现关键词的提取和文本相似度的计算,通过与原始数据集进行相似度计算从而实现文本分类。

其中阅读文本并存放单词信息的核心思想是利用链表结点来保存单词的信息,包括字符数组、单词的出现次数、单词的TF值、单词的TF_IDF值。而原始数据集则是由三个大类:sports, education, economic组成,每个大类里存放二十篇新闻文本。链表和原始数据集的设计还存在许多可以改进的地方,在本学期后会逐步进行完善。

先来介绍一下核心算法和思想。

struct word   // 结点用于存放每个单词及其出现次数,TF,TF_IDF值
void read(const char* filename, word*& head);  // 阅读文本,将单词信息存放于结点中
void TF(word* head);                            // 计算每个单词出现的次数
void TF_IDF(word* head, word* h[]);             // 计算每个单词的TF_IDF值
double Similar(word* h1, word* h2);             // 计算文本相似度

首先定义结构体word用于存放单词信息,read()函数实现阅读文本并存放单词信息到结点上,这一步是提取文本信息的最重要的一步,只要把单词提取出来并实现词频统计,那么后续的操作只需围绕链表结点信息进行即可。

TF()函数用于计算每个单词的TF值。TF_IDF()函数用于计算每个单词的TF_IDF值(具体算法在这里就不具体说明了,各个地方都有许多很好的算法介绍),这里需要传入原始数据集(文本库)的链表头。此处所使用的原始数据集为三个已经分好类的文档,为了使结果更加明显,采用的分类为economic, sport, education。

最后的Similar()函数则是用与计算两文本的相似度(计算关键词向量余弦值),将所需分类的文本(用news.txt文档保存)分别与三个大类原始数据集进行相似度计算(调用三次Similar函数),取其中相似度最大的作为分类结果。

实现目标的基本思路为:首先依次调用read函数获得各个文档词集的链表头,然后都调用TF、TF_IDF和SortTF函数计算每个单词的TF、TF_IDF值并排序,最后调用三次Similar函数,将需要进行分类的文本与其余三个原始文本进行相似度计算,取值最大的输出其类名。

下面进行实例分析。

Economic, sport, education三个大类的原始数据集已事先准备好(为了提高效率,在准备文本库时将所有同类的文本放在同一个文档下),输入一个新闻文档news(改变文档中的内容)进行文本分类。

图表 2‑1 文档信息

例1.News: The top two universities are ranked in terms of satisfaction, and the second is a surprise.内容为双一流大学满意度的调查。

新闻内容:

图表 2‑2 例1新闻内容

测试结果1:

图表 2‑3测试结果1

例2.News: EDG wins the title! Behind the boss is the 71 billion real estate family of the second generation, each member of the team to send suites.内容为:EDG夺冠刷屏!背后老板是710亿地产家族二代,队员每人送套房。

测试结果2:

图表 2‑6 测试结果2

分析结果可以看到,虽然新闻中出现了EDG这个体育类的战队名,但整篇文章在谈论其老板的资产,使文本更偏向于经济类型,所以最终文本归类为economic。通过这个测试结果可以体会到,有一些文本可以涉及多种类型,本项目只负责输出相似度最高的那种类型,但实际生活中它却会出现在另外一个类型中,例如本例是在体育类新闻中搜集的而不是经济类。所以现实生活中的文本分类只计算相似度是远远不够的,还要考虑到多种相关联的因素,例如观看该文本的人群、文本标题中出现的可判断类型的词语等等。

代码在链接:利用文本相似度进行英文文本分类(C++实现)-C++文档类资源-CSDN下载

利用文本相似度进行英文文本分类(C++实现)相关推荐

  1. 利用python对一段英文文本进行分词,分句

    这两天一直在学习用python进行自然语言处理这本书,当然开始的开始就是要学习python这门脚本语言,遇到了利用自己的语言对一段英文文本进行分词这个问题,找了好多资料都没有找到具体的解答,自己修修改 ...

  2. 使用BERT做中文文本相似度计算与文本分类

    转载请注明出处,原文地址: https://terrifyzhao.github.io/2018/11/29/使用BERT做中文文本相似度计算.html 简介 最近Google推出了NLP大杀器BER ...

  3. 利用Python统计中文或英文文本词频(适合初学者)

    一篇文章出现了那些词语?那些词出现的次数最多? 中文文本?英文文本? 英文文本测试资源:哈默雷特:https://python123.io/resources/pye/hamlet.txt 中文文本测 ...

  4. python文本相似度分析_文本相似度分析(基于jieba和gensim)

    ##基础概念 本文在进行文本相似度分析过程分为以下几个部分进行, 文本分词 语料库制作 算法训练 结果预测 分析过程主要用两个包来实现jieba,gensim jieba:主要实现分词过程 gensi ...

  5. NLP点滴——文本相似度,计算文本间的距离

    前言 在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性.而有了文本之间相似性的度量方式,我们 ...

  6. python 文本相似度现状_python文本相似度分析

    如何用python计算文本的相似度 同学欢迎来到CSS布局HTML~文本的相似度计算是NLP(自然语言处理)方向的范畴,感兴趣可以找相关的书籍详细学习研究.同学问的这个问题,可以搜索:python文本 ...

  7. matlab英文文本信息量,实验一英文文本信息量的计算-Read.doc

    实验一英文文本信息量的计算-Read 实验一 英文文本信息量的计算 一 实验目的 1 通过本实验熟悉Matlab软件编程环境 2 编写M文件实现对英文文本信息量的计算,掌握信源熵的计算方法 二 实验要 ...

  8. python用余弦相似度计算英文文本相似度

    reference:https://blog.csdn.net/u012160689/article/details/15341303 # -*- coding:utf-8 -*- # 余弦计算相似度 ...

  9. java 知网 语义 相似度,基于知网语义相似度的中文文本分类研究 论文笔记

    基于知网语义相似度的中文文本分类研究 1.传统的文本处理大部分是根据词频和逆向文档频率将文本表示成向量空间模型,实践证明这种模型确实简单高效并且得到了广泛应用,但这种模型表示缺乏对语义的理解,忽略了词 ...

最新文章

  1. 2018-3-22论文一种新型的智能算法--狼群算法(笔记三)算法的步骤+收敛性分析
  2. Imagenet VGG-19网络加载和特征可视化
  3. 我的世界java版移除猪灵了吗_我的世界:激怒僵尸猪灵有奖励,用菌光体堆肥,修复126个漏洞!...
  4. 什么是U-Boot以及如何下载U-Boot源码
  5. Mac os下android studio模拟器无法联网解决方法
  6. c++面向对象高级编程 学习八 non-explicit-one-argement-ctor
  7. ThinkPHP链接 PgSQL
  8. 蓝桥杯 ALGO-83 算法训练 阶乘
  9. 挖一挖那些让公司网站瘫痪的SQL“终结者”
  10. 关于数据库字段模糊查询
  11. 老毛子固件二级路由实现ipv6上网
  12. 剑指 Offer II 009. 乘积小于 K 的子数组
  13. 程序员加油站 -- 懂电脑更要懂人脑!继“书呆子”后又一呆子现世!
  14. App进行内测麻烦吗?如何进行App内测?
  15. x86_64 gnu/linux,linux版本信息以及x86与x86_64的差别
  16. windows下安装使用Nide
  17. 如何在python上安装安装包(python 3.9 环境 PyCharm pillow安装包为例)
  18. 2021高考成绩省排名查询,【重磅整理】2021全国各地高考预测分数线出炉,这样估分可以估算全省排名...
  19. Beetl2.7.13 中文文档
  20. 程序人生--2003年(21)

热门文章

  1. 58同城秋招笔试题解答 --map模式按value进行排序
  2. Python输入三角形的三条边求面积,输入圆的半径输出面积周长的两个程序的代码
  3. (知乎)我想问一下PHP的学习路线图
  4. 微信小程序包体积过大解决方法
  5. 计算机网络课程设计小区组网,计算机网络课程设计-组建智能化小区局域网参考.doc...
  6. C++编写网页游戏辅助工具~~~~~~~
  7. 【英语阅读】纽约时报 | 紧急状态下的东京:夜生活仍在继续
  8. 2023年一月份图形化四级打卡试题
  9. Centos 6.9中修复文件系统
  10. Linux 批量杀掉进程 kill -9