# text_classification **Repository Path**: flameboyence/text_classification ## Basic Information - **Project Name**: text_classification - **Description**: 文本分类模型:根据已有的文本数据进行分析,建立文本分类模型,根据模型判断输入的文本型。 该模型比较简陋,效果不是非常好,思路来源于吴军老师的《数学之美》,在这本书中看到书中介绍的基本原理之后对此感到非常震惊,如此巧妙的方法将一个看似与数学毫不相干的问题转化成了一个简单的数学问题。看完吴军老师的这本《数学之美》对数学有了新的认识,强烈推荐。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # text_classification #### 介绍 文本分类模型:根据已有的文本数据进行分析,建立文本分类模型,根据模型判断输入的文本型。 该模型比较简陋,效果不是非常好,思路来源于吴军老师的《数学之美》,在这本书中看到书中介绍的基本原理之后对此感到非常震惊,如此巧妙的方法将一个看似与数学毫不相干的问题转化成了一个简单的数学问题。看完吴军老师的这本《数学之美》对数学有了新的认识,强烈推荐。 #### 数据准备 THUCNew数据集: 来源:[https://www.jianshu.com/p/687ecdd3f840](https://www.jianshu.com/p/687ecdd3f840) THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档(2.19 GB),均为UTF-8纯文本格式。在原始新浪新闻分类体系的基础上,重新整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。 #### 分类原理: 文本分类表面上是一个语言学问题,实际上是这个问题可以通过一个简单的数学方法来解决。在某个类型的文章中某些词的出现概率较大,而在另外的类型的文章中该词出现的概率则较小,将这些出现概率较高的词的概率组合在一起则可以构建出一个n维向量,将每种类型的文章进行词频统计,取出每个类型的高频词,将每个词对应一个维度,然后根据统计出的词频为每个类型的文章构造出一个特征向量,将输入的文章进行词频统计,构建出该文章的特征向量,依次与每种类型进行比较(向量夹角),夹角越小则该文章与相对应的类型的文章越相似,则可以判断夹角最小的特征向量所对应的类型则为该文章的类型。 #### 模型构建过程: (大量)文本 ————>> 词频 ————>> 截取高频词 ————>> 构造n维向量 ————>> 根据词频构造特征向量(类型) ————>> 得到分类模型 输入:文本 ————>>特征向量————>求与每个类型的特征向量的夹角的余弦值 ————>> 取最大值(夹角最小) ————>> 输出:类型 #### 功能模块简介: word_frequency_statistics.py : 统计词频,结果存储在word_frequency_statistics_results文件夹下,以文本类型命名 construct_classification_vector_dimension.py : 构造分类向量的维度(每个类型的特征向量维度) 结果存储在classification_vector_dimension 以文本类型+"vector_dimension"命名 construct_sum_vector.py : 将所有的维度组合(去重),输出特征向量的总维度,结果存储在sun_vector/sum_vector.txt中 construct_text_feature_vector.py : 给定文件(路径),输出文件的特征向量 cosine_of_vector.py : n维向量夹角余弦计算 main.py : 主模块,调用其他模块,以及其他模块所生成的文件 def text_classification(file_path) 函数: '''文本分类函数:参数file_path:文件路径,输出:文本类型''' ####运行环境: IDE:PyCharm Anaconda3 win10 第三方库:jieba,numpy #### 模型准确度: 整体错误率:28%左右 单个类型最低错误率:2%左右