精华内容
下载资源
问答
  • 基于改进TF-IDF特征的中文文本分类系统[J].计算机与数字工程,2020,48(03):556-560.    ???? 最近看了许多有关机器学习的文本分类改进,有一部分论文写的非常差劲,文不知所以,论文中的公式站不住脚,根本无法...

    摘要:改进TFIDF,提出相似度因子,提高了文本分类准确率。
    参考文献:[1]但唐朋,许天成,张姝涵.基于改进TF-IDF特征的中文文本分类系统[J].计算机与数字工程,2020,48(03):556-560.

       😮 最近看了许多有关机器学习的文本分类改进,有一部分论文写的非常差劲,文不知所以,论文中的公式站不住脚,根本无法代码实现,一度使我怀疑是不是自己出了问题。现在已经往基于深度学习的文本分类上转了。

    一、引言

      采用 one-hot模型进行文本向量化操作,并利用TF-IDF策略进行向量维度的权重计算。其后对传统TF-IDF策略进行改进并联合基于SVM模型机器学习算法完成自动化文本分类系统的设计。

    二、基础算法

    2.1、TF-IDF算法【词频-逆文档频】

      可以参考上一篇博客【文本分类】基于类信息的TF-IDF权重分析与改进

    2.2、改进算法

      传统的TF-IDF算法忽略了相似词对文本分类的影响。[例如,经过训练得到特征词"自然语言处理"对标签"文本分类"有很大贡献度,那么"NLP"作为与"自然语言处理"在某种关系R下的相似词,也应该对标签"文本分类"有很大贡献度]。

      论文提出了对于两个特征词x、y,计算它们的相似度的方法:
    在这里插入图片描述

    其中x、y的shape为(1,n),n为数据集中文本数量。x[i]的含义是特征词x在第i篇文档的频数。

      得到每个特征之间的相似度关系之后,计算相似度因子:
    在这里插入图片描述

    其中,P表示特征词t在某一个文本d中的频数,Q表示在文本d中与特征词t相似的各个特征的频数和,U是文本d中所有特征的频数和。

      最终,改进的TFIDF的公式为:
    在这里插入图片描述

    三、代码实验

    3.1、实验思路

      改进TFIDF算法中存在的参数为:【特征维数相似度大小

      通过调整实验参数,来观察改进TFIDF算法与普通TFIDF算法文本分类准确率之差

    3.2、数据集

      数据来源于 https://github.com/cystanford/text_classification 。数据集共包含四个类别,分别为“女性”,“体育”,“文学”,“校园”,原始数据集已经划分了测试集和训练集,并给出了停用词文档。

    3.3、实验结果

      5折交叉检验:

    请添加图片描述
    请添加图片描述

    请添加图片描述
    请添加图片描述

    获取本项目的源代码

    如果需要本项目的源代码,请扫描关注我的公众号,回复“论文源码”即可。
    在这里插入图片描述

    展开全文
  • java实现中文文本分类

    2021-03-17 10:22:39
    基于libsvm 的中文文本分类原型支持向量机(Support Vector M...基于SSPP-KELM多标签文本分类算法的实现_电子/电路_工程科技_专业资料。文本数据分类后,根据类标签的个数可以分为单标签文本分类和多标签文本分类。若...

    基于libsvm 的中文文本分类原型支持向量机(Support Vector M...

    基于SSPP-KELM多标签文本分类算法的实现_电子/电路_工程科技_专业资料。文本数据分类后,根据类标签的个数可以分为单标签文本分类和多标签文本分类。若标签个数只有......

    应用提出一种实时文本分类方法,弱化分词处理过程,降低特征空间维数,以提高分类速度.通过优化特征项选取维持分类效果,基于贝叶斯理论实现实时文本分类系统.实验结果表明,......

    Technology First 科技创新 摘要:采用jieba分词库的tf-idf标准进行分词、数据清理、停用词过滤,并利用向量空间模型实现了基 于朴素贝叶斯的文本分类模型。 关键词:......

    南京理工大学经济管理学院 课程作业 课程名称: 作业题目: 姓学成名: 号: 绩: 本文信息处理 基于朴素贝叶斯实现文本分类 赵华 114107000778 任课教师评语: 签名: ......

    南京理工大学经济管理学院课程作业 课程名称: 作业题目: 姓名:学号: 成绩: 本文信息处理 基于朴素贝叶斯实现文本分类赵华 114107000778 任课教师评语: 签名: 年月日......

    提出了一种基于投影寻踪改进KNN中文文本分类方法,与现有的中文文本分类算法相比,该方法具有较高的计算效率。给出了具体实现过程并将其用于文本分类中,实验证明了该......

    根据朴素贝叶斯分类器算法使用 Java 为开发语言, Tomcat 为服务器,采用 B/S 模型进行实现。以下是得到待分 类文本向量后验概率的主要实现代码。 Public class ......

    基于卷积神经网络的文本分类器的设计与实现_计算机软件及应用_IT/计算机_专业资料 人阅读|次下载 基于卷积神经网络的文本分类器的设计与实现_计算机软件及应用_IT/......

    分享-文本分类实验报告_计算机软件及应用_IT/计算机_专业资料。数据挖掘 文本分类 北京邮电大学 2013-2014 学年第 1 学期实验报告 (代码就不分享了,都是文本格式......

    【期刊名称】机器人产业 【年(卷),期】2017(000)005 【总页数】8 【关键词】文本分类 NLP 学习 方法库 基准模型 标签 文档 这个库的目的是探索用深度学习......

    概略的说明了利用 Microsoft Visual C++ 6.0 创建文本 分类系统的过程,介绍了重要的类和关键处理函数的实现和优化,以及如何利用 动态链接库来实现 C++到 Java 的......

    2017 文章编号 1 0 0 1 — 9383(2017)03 — 0001 — 06 基于特征词匹配的 政策文本分类算法研究与实现 王丽鹏, 张鹏云, 和志强 (河北经贸大学信息技术......

    采用层次约束法完成文本自动抓取功能,文本频度与词条频度相结合的文本特征 选择算法实现特征提取,并采用特征加权技术进一步提高文本分类性能.该算法不 仅实现中文文本的......

    文中设计并实现了一种舆情分析中的文本分类方法.使用改进的隐马尔可夫分词方法对文本分词,结合Boosting算法生成动态停用词词库的贝叶斯文本分类方法对测试数据集分类.......

    一种神经网络文本分类器的设计与实现 李斗;李弼程 【期刊名称】《计算机工程与应用...

    【年(卷),期】2008(032)002 【摘要】自动文本分类是信息处理的主要研究内容.分析中文文本分类的基本过 程和主要技术 , 并用支持向量机 (SVM) 实现文本分类 .......

    基于词库匹配的网络文本分类及预测 杨雨诗,何博侠,周鑫,刘慧丽,葛方丽 【摘要】摘要:为实现中文文本的准确分类,提出一种基于词库匹配的分类方 法。在测试集中采用......

    的网页分类方法 [J], 刘祥涛; 刘书良 3.一种无需语句分割的中文文档自动分类方法研究及实现 [J], 何涛; 黄国兴 4.一种面向中文敏感网页识别的文本分类方法 [......

    文本分类入门(五)训练Part 2_理学_高等教育_教育专区。出处:嘉士伯的java小屋博客,引用请说明出处,尊重原作者 将样本数据成功转化为向量表示之后, 计算机才算开始......

    展开全文
  • 最近在做微信公众号采集开发,将要对公众号文章数据(mysql里),进行文本分类,查了很多资料,找到一篇适合新手的一篇博文:...一、中文文本分类流程1、预处理2、中文分词3、结构化表示...

    最近在做微信公众号采集开发,将要对公众号文章数据(mysql里),进行文本分类,查了很多资料,找到一篇适合新手的一篇博文:https://blog.csdn.net/github_36326955/article/details/54891204,本人提供了人工分好类的文章训练集语料库(1000多篇)和测试集语料库(11篇),和大家一起学习。

    一、中文文本分类流程

    1、预处理

    2、中文分词

    3、结构化表示--构建词向量空间

    4、权重策略--TF-IDF

    5、分类器选择

    6、评价

    二,具体细节

    1,预处理

    # 公众号文章类别

    d_category = {'1': '人工智能', '2': '人文社科', '3': '信息系统', '4': '先进防御', '5': '兵器', '6': '农业', '7': '前沿交叉', '8': '反恐安全',

    '9': '基础科学', '10': '教育', '11': '核生化', '12': '模拟仿真', '13': '海战装备', '14': '生物医学', '15': '电子元器件',

    '16': '空战装备', '17': '管理与政策', '18': '经济', '19': '综合保障', '20': '网络空间', '21': '能原材料', '22': '航天',

    '23': '试验鉴定', '24': '防务策略', '25': '其他', '26': '太空探索', '27': '招标采购', '28': '区块链', '29': '地理科学'

    }

    1.1,得到训练集语料库

    即已经分好类的文本资料(例如:语料库里是一系列已经分词的txt文章,这些文章按照实际内容归入到不同分类的目录中,为了方便演示,如上所有分类都用数字代表,如 .\1\21.txt),下载链接:https://pan.baidu.com/s/1NgkcztR0d-QPRn9toM1wCA 提取码: dw8h ,将下载的语料库解压后,请自己修改文件名和路径,例如路径可以设为 ./train_corpus/,其下则是各个类别目录如:./train_corpus/1,……,\train_corpus\2

    1.2,得到测试语料库

    也是已经分好类的文本资料,与1.1类型相同,只是里面的文档不同,用于检测算法的实际效果。下载链接: https://pan.baidu.com/s/18P8hkOEvughxJ9B8M3fbHg 提取码: wqjj ,测试预料可以从1.1中的训练预料中随机抽取,也可以下载独立的测试语料库路径修改参考1.1,上面提供的是独立的测试语料,例如可以设置为 ./test_corpus/

    2,中文分词

    本文使用的分词工具是jieba,最近新出来的一个分词工具pkuseg。两者区别参考:流程是从mysql读取数据——结巴分词——按分类文件夹存入txt。截止目前,我们已经得到了分词后的训练集语料库和测试集语料库,下面我们要把这两个数据集表示为变量,从而为下面程序调用提供服务。我们采用的是Scikit-Learn库中的Bunch数据结构来表示这两个数据集。

    首先来看看Bunch:

    Bunch这玩意儿,其实就相当于python中的字典。你往里面传什么,它就存什么。

    好了,解释完了。

    是不是很简单?

    接下来,让我们看看的我们的数据集(训练集)有哪些信息:

    04e522e1f1e4

    image.png

    那么,用Bunch表示,就是:

    from sklearn.datasets.base import Bunch

    bunch = Bunch(target_name=[],label=[],filenames=[],contents=[])

    我们在Bunch对象里面创建了有4个成员:

    target_name:是一个list,存放的是整个数据集的类别集合。

    label:是一个list,存放的是所有文本的标签。

    filenames:是一个list,存放的是所有文本文件的名字。

    contents:是一个list,分词后文本文件(一个文本文件只有一行)

    下面,我们将文本文件转为Bunch类形:

    # -*- coding: UTF-8 -*-

    import os

    import pickle

    from sklearn.datasets.base import Bunch

    def _readfile(path):

    '''读取文件'''

    # 函数名前面带一个_,是标识私有函数

    # 仅仅用于标明而已,不起什么作用,

    # 外面想调用还是可以调用,

    # 只是增强了程序的可读性

    with open(path, "rb") as fp: # with as句法前面的代码已经多次介绍过,今后不再注释

    content = fp.read()

    return content

    def corpus2Bunch(wordbag_path, seg_path):

    catelist = os.listdir(seg_path) # 获取seg_path下的所有子目录,也就是分类信息

    # 创建一个Bunch实例

    bunch = Bunch(target_name=[], label=[], filenames=[], contents=[])

    bunch.target_name.extend(catelist)

    # 获取每个目录下所有的文件

    for mydir in catelist:

    class_path = seg_path + mydir + "/" # 拼出分类子目录的路径

    file_list = os.listdir(class_path) # 获取class_path下的所有文件

    for file_path in file_list: # 遍历类别目录下文件

    fullname = class_path + file_path # 拼出文件名全路径

    bunch.label.append(mydir)

    bunch.filenames.append(fullname)

    bunch.contents.append(_readfile(fullname)) # 读取文件内容

    '''append(element)是python list中的函数,意思是向原来的list中添加element,注意与extend()函数的区别'''

    # 将bunch存储到wordbag_path路径中

    with open(wordbag_path, "wb") as file_obj:

    pickle.dump(bunch, file_obj)

    if __name__ == "__main__": # 这个语句前面的代码已经介绍过,今后不再注释

    # 对训练集进行Bunch化操作:

    wordbag_path = "train_word_bag/train_set.dat" # Bunch存储路径

    seg_path = "train_corpus/" # 分词后分类语料库路径

    corpus2Bunch(wordbag_path, seg_path)

    # 对测试集进行Bunch化操作:

    wordbag_path = "test_word_bag/test_set.dat" # Bunch存储路径

    seg_path = "test_corpus/" # 分词后分类语料库路径

    corpus2Bunch(wordbag_path, seg_path)

    3,结构化表示--向量空间模型

    在第2节中,我们对原始数据集进行了分词处理,并且通过绑定为Bunch数据类型,实现了数据集的变量表示。

    4,权重策略--TF-IDF

    我们把训练集文本转换成了一个TF-IDF词向量空间,姑且叫它为A空间吧。那么我们还有测试集数据,我们以后实际运用时,还会有新的数据,这些数据显然也要转到词向量空间,那么应该和A空间为同一个空间吗?

    是的。

    即使测试集出现了新的词汇(不是停用词),即使新的文本数据有新的词汇,只要它不是训练集生成的TF-IDF词向量空间中的词,我们就都不予考虑。这就实现了所有文本词向量空间“大一统”,也只有这样,大家才在同一个世界里。才能进行下一步的研究。

    下面的程序就是要将训练集所有文本文件(词向量)统一到同一个TF-IDF词向量空间中(或者叫做用TF-IDF算法计算权重的有权词向量空间)。这个词向量空间最终存放在train_word_bag/tfdifspace.dat中。

    把训练集数据成功的构建了一个TF-IDF词向量空间,空间的各个词都是出自这个训练集(去掉了停用词)中,各个词的权值也都一并保存了下来,叫做权重矩阵。

    需要注意的是,权重矩阵是一个二维矩阵,a[i][j]表示,第j个词在第i个类别中的IF-IDF值

    # 引入Bunch类

    from sklearn.datasets.base import Bunch

    import pickle

    from sklearn.feature_extraction.text import TfidfVectorizer

    def _readfile(path):

    with open(path, "rb") as fp:

    content = fp.read()

    return content

    def _readbunchobj(path):

    with open(path, "rb") as file_obj:

    bunch = pickle.load(file_obj)

    return bunch

    def _writebunchobj(path, bunchobj):

    with open(path, "wb") as file_obj:

    pickle.dump(bunchobj, file_obj)

    def vector_space(stopword_path, bunch_path, space_path, train_tfidf_path=None):

    stpwrdlst = _readfile(stopword_path).splitlines()

    bunch = _readbunchobj(bunch_path)

    tfidfspace = Bunch(target_name=bunch.target_name, label=bunch.label, filenames=bunch.filenames, tdm=[],

    vocabulary={})

    if train_tfidf_path is not None:

    trainbunch = _readbunchobj(train_tfidf_path)

    tfidfspace.vocabulary = trainbunch.vocabulary

    vectorizer = TfidfVectorizer(stop_words=stpwrdlst, sublinear_tf=True, max_df=0.5,

    vocabulary=trainbunch.vocabulary)

    tfidfspace.tdm = vectorizer.fit_transform(bunch.contents)

    else:

    vectorizer = TfidfVectorizer(stop_words=stpwrdlst, sublinear_tf=True, max_df=0.5)

    tfidfspace.tdm = vectorizer.fit_transform(bunch.contents)

    tfidfspace.vocabulary = vectorizer.vocabulary_

    _writebunchobj(space_path, tfidfspace)

    print("if-idf词向量空间实例创建成功!!!")

    if __name__ == '__main__':

    stopword_path = "train_word_bag/hlt_stop_words.txt"

    bunch_path = "train_word_bag/train_set.dat"

    space_path = "train_word_bag/tfdifspace.dat"

    vector_space(stopword_path, bunch_path, space_path)

    bunch_path = "test_word_bag/test_set.dat"

    space_path = "test_word_bag/testspace.dat"

    train_tfidf_path = "train_word_bag/tfdifspace.dat"

    vector_space(stopword_path, bunch_path, space_path, train_tfidf_path)

    上面的代码运行之后,会将训练集数据转换为TF-IDF词向量空间中的实例,保存在train_word_bag/tfdifspace.dat中,具体来说,这个文件里面有两个我们感兴趣的东西,一个是vocabulary,即词向量空间坐标,一个是tdm,即训练集的TF-IDF权重矩阵。

    接下来,我们要开始第5步的操作,设计分类器,用训练集训练,用测试集测试。在做这些工作之前,你一定要记住,首先要把测试数据也映射到上面这个TF-IDF词向量空间中,也就是说,测试集和训练集处在同一个词向量空间(vocabulary相同),只不过测试集有自己的tdm,与训练集(train_word_bag/tfdifspace.dat)中的tdm不同而已。

    5,分类器

    这里我们采用的是朴素贝叶斯分类器,今后我们会详细讲解它。

    现在,你即便不知道这是个啥玩意儿,也一点不会影响你,这个分类器我们有封装好了的函数,MultinomialNB,这玩意儿获取训练集的权重矩阵和标签,进行训练,然后获取测试集的权重矩阵,进行预测(给出预测标签)。

    下面我们开始动手实践吧!

    首先,我们要把测试数据也映射到第4节中的那个TF-IDF词向量空间上:

    import pickle

    from sklearn.naive_bayes import MultinomialNB # 导入多项式贝叶斯算法

    # 读取bunch对象

    def _readbunchobj(path):

    with open(path, "rb") as file_obj:

    bunch = pickle.load(file_obj)

    return bunch

    # 导入训练集

    trainpath = "train_word_bag/tfdifspace.dat"

    train_set = _readbunchobj(trainpath)

    # 导入测试集

    testpath = "test_word_bag/testspace.dat"

    test_set = _readbunchobj(testpath)

    # 训练分类器:输入词袋向量和分类标签,alpha:0.001 alpha越小,迭代次数越多,精度越高

    clf = MultinomialNB(alpha=0.001).fit(train_set.tdm, train_set.label)

    # 预测分类结果

    predicted = clf.predict(test_set.tdm)

    for file_name, expct_cate in zip(test_set.filenames, predicted):

    # if flabel != expct_cate:

    print(file_name, " -->预测类别:", expct_cate)

    print("预测完毕!!!")

    结果:

    04e522e1f1e4

    image.png

    6,评价与小结

    评价部分的实际操作我们已经在上一节的代码中给出了。这里主要是要解释一下代码的含义,以及相关的一些概念。

    截止目前,我们已经完成了全部的实践工作。接下来,你或许希望做的是:

    1,分词工具和分词算法的研究

    2,文本分类算法的研究

    展开全文
  • 23 24 //所有文本数 25 private AtomicInteger actCount = new AtomicInteger(0);26 27 28 29 //每个类别对应的词典和频数 30 private Map> classWordMap = new ConcurrentHashMap>();31 32 //分词器 33 private ...

    1 /**

    2 * 训练器3 *4 * @author duyf5 *6 */

    7 class Train implementsSerializable {8

    9 /**

    10 *11 */

    12 private static final long serialVersionUID = 1L;13

    14 public final static String SERIALIZABLE_PATH = "D:\\workspace\\Test\\SogouC.mini\\Sample\\Train.ser";15 //训练集的位置

    16 private String trainPath = "D:\\workspace\\Test\\SogouC.mini\\Sample";17

    18 //类别序号对应的实际名称

    19 private Map classMap = new HashMap();20

    21 //类别对应的txt文本数

    22 private Map classP = new ConcurrentHashMap();23

    24 //所有文本数

    25 private AtomicInteger actCount = new AtomicInteger(0);26

    27

    28

    29 //每个类别对应的词典和频数

    30 private Map> classWordMap = new ConcurrentHashMap>();31

    32 //分词器

    33 private transientParticiple participle;34

    35 private static Train trainInstance = newTrain();36

    37 public staticTrain getInstance() {38 trainInstance = newTrain();39

    40 //读取序列化在硬盘的本类对象

    41 FileInputStream fis;42 try{43 File f = newFile(SERIALIZABLE_PATH);44 if (f.length() != 0) {45 fis = newFileInputStream(SERIALIZABLE_PATH);46 ObjectInputStream oos = newObjectInputStream(fis);47 trainInstance =(Train) oos.readObject();48 trainInstance.participle = newIkParticiple();49 } else{50 trainInstance = newTrain();51 }52 } catch(Exception e) {53 e.printStackTrace();54 }55

    56 returntrainInstance;57 }58

    59 privateTrain() {60 this.participle = newIkParticiple();61 }62

    63 publicString readtxt(String path) {64 BufferedReader br = null;65 StringBuilder str = null;66 try{67 br = new BufferedReader(newFileReader(path));68

    69 str = newStringBuilder();70

    71 String r =br.readLine();72

    73 while (r != null) {74 str.append(r);75 r =br.readLine();76

    77 }78

    79 returnstr.toString();80 } catch(IOException ex) {81 ex.printStackTrace();82 } finally{83 if (br != null) {84 try{85 br.close();86 } catch(IOException e) {87 e.printStackTrace();88 }89 }90 str = null;91 br = null;92 }93

    94 return "";95 }96

    97 /**

    98 * 训练数据99 */

    100 public voidrealTrain() {101 //初始化

    102 classMap = new HashMap();103 classP = new HashMap();104 actCount.set(0);105 classWordMap = new HashMap>();106

    107 //classMap.put("C000007", "汽车");

    108 classMap.put("C000008", "财经");109 classMap.put("C000010", "IT");110 classMap.put("C000013", "健康");111 classMap.put("C000014", "体育");112 classMap.put("C000016", "旅游");113 classMap.put("C000020", "教育");114 classMap.put("C000022", "招聘");115 classMap.put("C000023", "文化");116 classMap.put("C000024", "军事");117

    118 //计算各个类别的样本数

    119 Set keySet =classMap.keySet();120

    121 //所有词汇的集合,是为了计算每个单词在多少篇文章中出现,用于后面计算df

    122 final Set allWords = new HashSet();123

    124 //存放每个类别的文件词汇内容

    125 final Map> classContentMap = new ConcurrentHashMap>();126

    127 for(String classKey : keySet) {128

    129 Participle participle = newIkParticiple();130 Map wordMap = new HashMap();131 File f = new File(trainPath + File.separator +classKey);132 File[] files = f.listFiles(newFileFilter() {133

    134 @Override135 public booleanaccept(File pathname) {136 if (pathname.getName().endsWith(".txt")) {137 return true;138 }139 return false;140 }141

    142 });143

    144 //存储每个类别的文件词汇向量

    145 List fileContent = new ArrayList();146 if (files != null) {147 for(File txt : files) {148 String content =readtxt(txt.getAbsolutePath());149 //分词

    150 String[] word_arr = participle.participle(content, false);151 fileContent.add(word_arr);152 //统计每个词出现的个数

    153 for(String word : word_arr) {154 if(wordMap.containsKey(word)) {155 Double wordCount =wordMap.get(word);156 wordMap.put(word, wordCount + 1);157 } else{158 wordMap.put(word, 1.0);159 }160

    161 }162 }163 }164

    165 //每个类别对应的词典和频数

    166 classWordMap.put(classKey, wordMap);167

    168 //每个类别的文章数目

    169 classP.put(classKey, files.length);170 actCount.addAndGet(files.length);171 classContentMap.put(classKey, fileContent);172

    173 }174

    175

    176

    177

    178

    179 //把训练好的训练器对象序列化到本地 (空间换时间)

    180 FileOutputStream fos;181 try{182 fos = newFileOutputStream(SERIALIZABLE_PATH);183 ObjectOutputStream oos = newObjectOutputStream(fos);184 oos.writeObject(this);185 } catch(Exception e) {186 e.printStackTrace();187 }188

    189 }190

    191 /**

    192 * 分类193 *194 *@paramtext195 * @return 返回各个类别的概率大小196 */

    197 public Mapclassify(String text) {198 //分词,并且去重

    199 String[] text_words = participle.participle(text, false);200

    201 Map frequencyOfType = new HashMap();202 Set keySet =classMap.keySet();203 for(String classKey : keySet) {204 double typeOfThis = 1.0;205 Map wordMap =classWordMap.get(classKey);206 for(String word : text_words) {207 Double wordCount =wordMap.get(word);208 int articleCount =classP.get(classKey);209

    210 /*

    211 * Double wordidf = idfMap.get(word); if(wordidf==null){212 * wordidf=0.001; }else{ wordidf = Math.log(actCount / wordidf); }213 */

    214

    215 //假如这个词在类别下的所有文章中木有,那么给定个极小的值 不影响计算

    216 double term_frequency = (wordCount == null) ? ((double) 1 / (articleCount + 1))217 : (wordCount /articleCount);218

    219 //文本在类别的概率 在这里按照特征向量独立统计,即概率=词汇1/文章数 * 词汇2/文章数 。。。220 //当double无限小的时候会归为0,为了避免 *10

    221

    222 typeOfThis = typeOfThis * term_frequency * 10;223 typeOfThis = ((typeOfThis == 0.0) ?Double.MIN_VALUE224 : typeOfThis);225 //System.out.println(typeOfThis+" : "+term_frequency+" :226 //"+actCount);

    227 }228

    229 typeOfThis = ((typeOfThis == 1.0) ? 0.0: typeOfThis);230

    231 //此类别文章出现的概率

    232 double classOfAll = classP.get(classKey) /actCount.doubleValue();233

    234 //根据贝叶斯公式 $(A|B)=S(B|A)*S(A)/S(B),由于$(B)是常数,在这里不做计算,不影响分类结果

    235 frequencyOfType.put(classKey, typeOfThis *classOfAll);236 }237

    238 returnfrequencyOfType;239 }240

    241 public voidpringAll() {242 Set>> classWordEntry =classWordMap243 .entrySet();244 for (Entry>ent : classWordEntry) {245 System.out.println("类别: " +ent.getKey());246 Map wordMap =ent.getValue();247 Set> wordMapSet =wordMap.entrySet();248 for (EntrywordEnt : wordMapSet) {249 System.out.println(wordEnt.getKey() + ":" +wordEnt.getValue());250 }251 }252 }253

    254 public MapgetClassMap() {255 returnclassMap;256 }257

    258 public void setClassMap(MapclassMap) {259 this.classMap =classMap;260 }261

    262 }

    展开全文
  • 文本分类系统的处理流程来看,无论待分类的文本是中文还是英文,在训练阶段之前都要经过一个预处理的步骤,去除无用的信息,减少后续步骤的复杂度和计算负担。对中文文本来说,首先要经历一个分词的过程,就是把...
  • 目录引言1 textCNN or Bert1.1 简介1.2 textcnn...赛题参考【NLP-新闻文本分类】1 数据分析和探索 1 textCNN or Bert 1.1 简介 (1)环境 tensorflow 1.x pytorch (2)作者博客和github 天池博客分享 Github源码 1.
  • 凡将地理位置不同,并具有独立功能的多个计算机系统通过通信设备和线路而连接起来,且以功能完善的网络软件(网络协议、信息交换方式及网络操作系统等)实现网络资源共享的系统,可称为计算机网络。网络的迅速发展,使...
  • 最近在学习文本分类,读了很多博主的文章,要么已经严重过时(还在一个劲介绍SVM、贝叶斯),要么就是机器翻译的别人的英文论文,几乎看遍全文,竟然没有一篇能看的综述,花了一个月时间,参考了很多文献,特此写下此...
  • 文本分类的基本原理

    2021-02-18 16:44:14
    文本分类的基本原理 文本分类的概念 文本分类用电脑对文本集(或其他实体或物件)按照一定的分类体系或标准进行自动分类标记。 它根据一个已经被标注的训练文档集合, 找到文档特征和文档...文本分类系统的总体功能模块为
  • 中文文本分类的步骤: 1.预处理:去除文本的噪声信息,例如HTML标签、文本格式转换、检测句子边界等。 2.中文分词:使用中文分词器为文本分词,并去除停用词。 3.构建词向量空间:统计文本词频,生成文本的词向量...
  • 文本预处理的方法很多,类似于词性分析,句法分析,命名实体识别等,在进行文本分类之前,需要将文本进行结构化,常见的方法有one-hot,n_gram,word2vec等,与英文不同(可以简单用空格和符号进行分词),中文是...
  • 为了完成课程要求,做了一个中文文本分类的简易系统,再此纪录。 使用到的算法: 机器学习:朴素贝叶斯 逻辑斯蒂回归 lightgbm 深度学习:CNN LSTM BERT 深度学习大部分内容使用...
  • 其中的一个常见应用是文本分类文本分类是将文本按照其所属类别进行分类的一项工作。在机器学习成为一种趋势之前,这项工作大多是由几个注释者手工完成的。这在将来会成为一个问题,因为数据会变得更大,而且仅仅...
  • 语料库本文语料库特指文本分类语料库,对应IDataSet接口。而文本分类语料库包含两个概念:文档和类目。一个文档只属于一个类目,一个类目可能含有多个文档。比如搜狗文本分类语料库迷你版.zip,下载前请先阅读搜狗...
  • 人工智能-自然语言处理(NLP)-应用场景:智能文本分类系统
  • 本文从达观数据中文文本分类的实践出发,总结了从数据预处理到特征工程、算法选择再到后处理和评价指标等流程中的10项关键内容,希望能对读者有所帮助。1、数据清洗与预处理在实际的中文文本分类问题中,我们面对的...
  • 文本分类是自然语言处理的应用领域之一,文本分类是很多其他任务的基本型。本项目是一个最简单的二分类问题。 本项目会介绍如何将文本数据转化为数值型的特征数据(提取文本特质)。然后,使用机器学习当中的支持...
  • 基于PaddlePaddle实现文本分类0.前言1.实现一个AI的步骤1.1 确定需要做啥1.2 选取框架1.3 实操-数据预处理1.4 实操-生成训练数据集1.5 实操-其余部分1.6 介绍一下本次文章2.文件介绍3.核心算法3.1 cnn算法4.操作步骤...
  • 很碰巧的是,两个比赛中,都有一题主要涉及到中文情感分类工作。在做“亮剑杯”的时候,由于我还是初涉,水平有限,仅仅是基于传统的思路实现了一个简单的文本情感分类模型。而在后续的“泰迪杯”中,由于学习的深入...
  • 可谓是大大推动了NLP的进步,关于transformer和BERT的文章网上已经有很多大佬写了,对于transformer不熟悉的同学可以先自学一波,本文主要用BERT结合微调实现一个包含十五个类别的新闻文本分类任务,菜鸟一枚,各位...
  • 1 文本分类文本分类是自然语言处理领域最活跃的研究方向之一,目前文本分类在工业界的应用场景非常普遍,从新闻的分类、商品评论信息的情感分类到微博信息打标签辅助推荐系统,了解文本分类技术是NLP初学者比较好的...
  • 自动分类程序把一个未见过的文档分成已知类别中的一个或多个。分成一个类别叫做单类分类,分成多个类别叫做多类分类。...Classifier4J 项目的文本分类://定义存储向量的变量TermVectorStoragestorage=newHash...
  • 基于改进TF-IDF特征的中文文本分类系统[J].计算机与数字工程,2020,48(03):556-560.   [2]任姚鹏,陈立潮,张英俊,袁英.结合语义的特征权重计算方法研究[J].计算机工程与设计,2010,31(10):2381-2383+2387.DOI:10....
  • 文本分类的一些例子如下:分析社交媒体中的大众情感鉴别垃圾邮件和非垃圾邮件自动标注客户问询将新闻文章按主题分类目录本文将详细介绍文本分类问题并用Python实现这个过程:文本分类是有监督学习的一个例子,它使用...
  • 小说文本分类任务 代码链接 https://github.com/a1097304791/fiction-classification 数据集 数据集有从起点中文网上爬取的13个分类,每个分类20本,每本10章,共260部小说,3600章。 所用算法 采用支持向量机(SVM...
  • 文本分类:Keras+RNN vs传统机器学习

    万次阅读 2021-11-30 11:30:35
    摘要:本文通过Keras实现了一个RNN文本分类学习的案例,并详细介绍了循环神经网络原理知识及与机器学习对比。
  • 作者:finallyliuyu(转载请注明原作者和出处)(代码暂不发布源码下载版,以后会发布)KNN文本分类算法又称为(k nearest neighhor)。它是一种基于事例的学习方法,也称懒惰式学习方法。它的大概思路是:对于某个待分类的...
  • Datawhale干货作者:太子长琴,算法工程师,Datawhale成员文本分类是自然语言处理(NLP)最基础核心的任务,或者换句话说,几乎所有NLP任务都是「分类」任务,或者涉及到「...
  • 基于 word2vec 模型的文本分类任务前言一、安装并导入工具包二、获取词表三、训练模型四、统计词频四、获取特征向量五、准确率计算六、代码总和 前言 基于 word2vec 模型的文本分类任务:文本共包含七个类别,每个...
  • 比赛题目:学术论文分类挑战赛比赛链接:https://challenge.xfyun.cn/topic/info?type=academic-paper-classification&am...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,445
精华内容 24,978
关键字:

中文文本分类系统