精华内容
下载资源
问答
  • 该资源是2020参加美赛所用代码,主要是做的文本分析,LDA,词云,分类统计,时间序列。内含原始数据和代码说明。
  • R语言文本挖掘

    2019-02-25 07:57:16
    R 语言环境下的文本挖掘,文本挖掘被描述为 “自动化或半自动化处理文本的过程”,包含了文档聚类、文档分类、自 然语言处理、文体变化分析及网络挖掘等领域内容。 对于文本处理过程首先要拥有分析的语料(text ...
  • R语言做文本挖掘 Part4文本分类

    千次阅读 2016-01-25 14:58:36
    Part4文本分类 Part3文本聚类里讲到过,分类跟聚类的简单差异。所以要做分类我们需要先整理出一个训练集,也就是已经有明确分类的文本;测试集,可以就用训练集来替代;预测集,就是未分类的文本,是分类...

    原帖地址:http://blog.csdn.net/cl1143015961/article/details/44413631


    Part4文本分类


    Part3文本聚类里讲到过,分类跟聚类的简单差异。所以要做分类我们需要先整理出一个训练集,也就是已经有明确分类的文本;测试集,可以就用训练集来替代;预测集,就是未分类的文本,是分类方法最后的应用实现。

    1.       数据准备

    训练集准备是一个很繁琐的功能,暂时没发现什么省力的办法,根据文本内容去手动整理。这里还是使用的某品牌的官微数据,根据微博内容,我将它微博的主要内容分为了:促销资讯(promotion)、产品推介(product)、公益信息(publicWelfare)、生活鸡汤(life)、时尚资讯(fashionNews)、影视娱乐(showbiz),每个分类有20-50条数据,如下可看到训练集下每个分类的文本数目,训练集分类名为中文也没问题。

    训练集为hlzj.train,后面也会被用作测试集。

    预测集就是Part2里面的hlzj。

    > hlzj.train <-read.csv("hlzj_train.csv",header=T,stringsAsFactors=F)

    > length(hlzj.train)

    [1] 2

    > table(hlzj.train$type)

    fashionNews      life         product

          27            34            38

    promotion    publicWelfare     showbiz

          45            22            36

    > length(hlzj)

    [1] 1639

     

    2.       分词处理

    训练集、测试集、预测集都需要做分词处理后才能进行后续的分类过程。这里不再详细说明,过程类似于Part2中讲到的。训练集做完分词后hlzjTrainTemp,之前对hlzj文件做过分词处理后是hlzjTemp。然后分别将hlzjTrainTemp和hlzjTemp去除停词。

    > library(Rwordseg)

    载入需要的程辑包:rJava

    # Version: 0.2-1

    > hlzjTrainTemp <- gsub("[0-90123456789 < > ~]","",hlzj.train$text)

    > hlzjTrainTemp <-segmentCN(hlzjTrainTemp)

    > hlzjTrainTemp2 <-lapply(hlzjTrainTemp,removeStopWords,stopwords)

    >hlzjTemp2 <-lapply(hlzjTemp,removeStopWords,stopwords)

     

    3.      得到矩阵

    在Part3中讲到了,做聚类时要先将文本转换为矩阵,做分类同样需要这个过程,用到tm软件包。先将训练集和预测集去除停词后的结果合并为hlzjAll,记住前202(1:202)条数据是训练集,后1639(203:1841)条是预测集。获取hlzjAll的语料库,并且得到文档-词条矩阵,将其转换为普通矩阵。

    > hlzjAll <- character(0)

    > hlzjAll[1:202] <- hlzjTrainTemp2

    > hlzjAll[203:1841] <- hlzjTemp2

    > length(hlzjAll)

    [1] 1841

    > corpusAll <-Corpus(VectorSource(hlzjAll))

    > (hlzjAll.dtm <-DocumentTermMatrix(corpusAll,control=list(wordLengths = c(2,Inf))))

    <<DocumentTermMatrix(documents: 1841, terms: 10973)>>

    Non-/sparse entries: 33663/20167630

    Sparsity           : 100%

    Maximal term length: 47

    Weighting          : term frequency (tf)

    > dtmAll_matrix <-as.matrix(hlzjAll.dtm)

     

    4.      分类

    用到knn算法(K近邻算法),这个算法在class软件包里。矩阵的前202行数据是训练集,已经有分类了,后面的1639条数据没有分类,要根据训练集得到分类模型再为其做分类的预测。将分类后的结果和原微博放在一起,用fix()查看,可以看到分类结果,效果还是挺明显的。

    > rownames(dtmAll_matrix)[1:202] <-hlzj.train$type

    > rownames(dtmAll_matrix)[203:1841]<- c("")

    > train <- dtmAll_matrix[1:202,]

    > predict <-dtmAll_matrix[203:1841,]

    > trainClass <-as.factor(rownames(train))

    > library(class)

    > hlzj_knnClassify <-knn(train,predict,trainClass)

    > length(hlzj_knnClassify)

    [1] 1639

    > hlzj_knnClassify[1:10]

     [1] product    product     product     promotion  product     fashionNews life      

     [8] product    product     fashionNews

    Levels: fashionNews life productpromotion publicWelfare showbiz

    > table(hlzj_knnClassify)

    hlzj_knnClassify

    fashionNews    life   product     promotion   publicWelfare   showbiz

        40        869       88        535        28        79

    > hlzj.knnResult <-list(type=hlzj_knnClassify,text=hlzj)

    > hlzj.knnResult <-as.data.frame(hlzj.knnResult)

    > fix(hlzj.knnResult)

    Knn分类算法算是最简单的一种,后面尝试使用神经网络算法(nnet())、支持向量机算法(svm())、随机森林算法(randomForest())时,都出现了电脑内存不够的问题,我的电脑是4G的,看内存监控时能看到最高使用达到3.92G。看样子要换台给力点的电脑了╮(╯▽╰)╭

    在硬件条件能达到时,应该实现分类没有问题。相关的算法可以用:??方法名,的方式来查看其说明文档。

     

    5.       分类效果

    上面没有讲到测试的过程,对上面的例子来说,就是knn前两个参数都用train,因为使用数据集相同,所以得到的结果也是正确率能达到100%。在训练集比较多的情况下,可以将其随机按7:3或者是8:2分配成两部分,前者做训练后者做测试就好。这里就不再细述了。

    在分类效果不理想的情况下,改进分类效果需要丰富训练集,让训练集特征尽量明显,这个在实际问题是一个很繁琐却不能敷衍的过程。


    有什么可以改进的地方欢迎指正,转载请注明来源,谢谢!

    展开全文
  • R语言自然语言处理:文本分类

    千次阅读 2019-05-07 11:47:00
    作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。邮箱:huang.tian-yuan...

    640?wx_fmt=png

    作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。

    邮箱:huang.tian-yuan@qq.com

    这次希望尝试用简单的技术(TF-IDF和相似度矩阵)做一次实践,即文档分类。


    任务定义:对于任意给定的一个字符串,判断它与目前哪个文档最为相似,从而进行归类。首先要对当前的文档(数据见github.com/hope-data-sc)做词嵌入(就用最简单的TF-IDF模型),然后对于任意的新字符串,进行向量化之后,与先前的标准库做相似性的分析,看看与哪个文档相似性最近,就属于哪一个类别。


    1 读入文件

    library(pacman)
    p_load(tidyverse,data.table)

    fread("classification_corpus_raw.csv",encoding = "UTF-8") %>%
    as_tibble() %>%
    mutate(id = 1:n())-> raw

    这样,文件就在raw中了。


    2 计算TF-IDF

    这一部分参考HopeR:R语言自然语言处理:关键词提取(TF-IDF),先进行分词,然后对所有的词计算TF-IDF。

    ## 快速分词
    p_load(jiebaR)
    worker() -> wk

    raw %>%
    mutate(words = map(title,segment,jieba = wk)) %>%
    select(id,words) -> corpus

    ## 计算TF-IDF
    corpus %>%
    unnest() %>%
    count(id,words) %>%
    bind_tf_idf(term = words,document = id,n = n) -> corpus_tf_idf

    仔细看,这个文档现在究竟有多少个词语呢?

    corpus_tf_idf %>% distinct(words)

    # A tibble: 1,510 x 1
    words
    <chr>
    1 百年
    2 办公室
    3 筹备工作
    4 校庆
    5 保卫部
    6 处
    7 安全
    8 管理
    9 生产
    10 保密
    # ... with 1,500 more rows

    一共1510个,不多,因此我决定不进行筛选了。本来常规套路要把这个TF-IDF的矩阵变为一个文档-词语矩阵(Document Term Matrix,DTM)。但是既然走了tidy的路线,我突然认为那是一个多余的步骤,做了一个高维稀疏的矩阵效率异常低,而进行连接(join)的速度可谓异常地快。

    下面我要写一个函数,它要完成一个这样的任务:对于任意给定的字符串,求这个字符串与当前所有文档的相似性,然后筛选出相似性最高的n个文档,显示出来。

    虽然不需要构造矩阵,但是我还是要构造一个类似的数据框。

    corpus_tf_idf %>% 
    select(id,tf_idf) -> for_future_use


    3 举例尝试

    先假设给定的字符串为“大数据学院”,我们看看是否能够找到合理的相似文档。我们首先要明确,什么叫做相似?定义:1、字符串中包含相同的组分(相同的分词结果);2、当包含组分数量一致的时候,如果包含重要表征组分,其得分更高(举例说明:我们给定的字符串是“物理学院”,分词之后是“物理”和“学院”,但是“物理”这个词能够表征的程度更高,因此它会得到更高的得分,这个得分在我们的模型中是以TF-IDF的形式存在的)。

    下面我们给出代码:

    string = "大数据学院"

    string %>%
    segment(jiebar = wk) %>%
    enframe() %>%
    transmute(words = value) -> string_table

    for_future_use %>%
    inner_join(string_table) %>%
    group_by(id) %>%
    summarise(score = sum(tf_idf)) %>%
    arrange(desc(score)) -> sort_table

    sort_table %>%
    slice(1:5) %>%
    inner_join(raw,by = "id")

    # A tibble: 5 x 3
    id score title
    <int> <dbl> <chr>
    1 58 4.70 大数据学院
    2 57 2.86 大数据研究院
    3 109 1.84 高级律师学院
    4 436 1.84 公共卫生学院
    5 479 1.84 管理学院

    我们可以看到,“大数据学院”被正确地筛选出来,而排名第二的是“大数据研究院”,因为“大数据”作为一个比“学院”拥有更高TF-IDF的关键词,更能够表征“大数据”这个特征。其他3个选项得分其实是一样的,它们都因为有“学院”而被筛选出来,但是没有匹配更多更有价值的词语了。现在我们就可以正式对函数进行构造:

    get_sim = function(string){
    string %>%
    segment(jiebar = wk) %>%
    enframe() %>%
    transmute(words = value) -> string_table

    for_future_use %>%
    inner_join(string_table,by = "words") %>%
    group_by(id) %>%
    summarise(score = sum(tf_idf)) %>%
    arrange(desc(score)) -> sort_table

    sort_table %>%
    slice(1:3) %>%
    inner_join(raw,by = "id") -> result

    ifelse(nrow(result) == 0,
    NA,
    result %>%
    pull(title) %>%
    str_c(collapse = ","))
    }

    这个函数能够对任意的字符串进行识别,如果没有任何识别,就返回NA;如果识别到了,最多返回匹配度最高的3个分类,分类之间以“,”分隔(注意是英文的逗号,这个可以根据自己的洗好更改)。我们用两个例子看看结果如何:

    get_sim("稀奇古怪")
    [1] NA

    get_sim("大数据")
    [1] "大数据研究院,大数据学院,大数据试验场研究院(筹)"

    显然,这个函数是有效的。

    ——————————————

    往期精彩:

    640?wx_fmt=png

    展开全文
  • R语言分类(SVM KNN LDA等)与回归代码+原始数据+分析报告,数据挖掘大作业。
  • 文本分类是自然语言处理的一个基本任务,试图推断出给定文本(句子、文档等)的标签或标签集合。 文本分类的应用非常广泛,如: 垃圾邮件分类:2分类问题,判断邮件是否为垃圾邮件 情感分析:2分类问题:判断文本...

    目录

    1.文本分类任务介绍

    2.RCNN原理概述

    3.RCNN模型处理步骤

    4.RCNN小结


    1.文本分类任务介绍

    文本分类是自然语言处理的一个基本任务,试图推断出给定文本(句子、文档等)的标签或标签集合。

    文本分类的应用非常广泛,如:

    • 垃圾邮件分类:2分类问题,判断邮件是否为垃圾邮件
    • 情感分析:2分类问题:判断文本情感是积极还是消极;多分类问题:判断文本情感属于{非常消极,消极,中立,积极,非常积极}中的哪一类。
    • 新闻主题分类:判断一段新闻属于哪个类别,如财经、体育、娱乐等。根据类别标签的数量,可以是2分类也可以是多分类。
    • 自动问答系统中的问句分类
    • 社区问答系统中的问题分类:多标签多分类(对一段文本进行多分类,该文本可能有多个标签),如知乎看山杯
    • 让AI做法官:基于案件事实描述文本的罚金等级分类(多分类)和法条分类(多标签多分类)
    • 判断新闻是否为机器人所写:2分类

    不同类型的文本分类往往有不同的评价指标:

    • 2分类:accuracy,precision,recall,f1-score...
    • 多分类(单标签多分类):Micro-Averaged-F1,Macro-Averaged-F1...
    • 多标签多分类:Jaccard相似系数...

     

    2.RCNN原理概述

    在之前的博客中,我们学习了基于CNN和RNN的文本分类原理。RCNN是一种结合了RNN和CNN的模型用于文本分类。

    这里的文本可以一个句子,文档(短文本,若干句子)或篇章(长文本),因此每段文本的长度都不尽相同。在对文本进行分类时,我们一般会指定一个固定的输入序列/文本长度:该长度可以是最长文本/序列的长度,此时其他所有文本/序列都要进行填充以达到该长度;该长度也可以是训练集中所有文本/序列长度的均值,此时对于过长的文本/序列需要进行截断,过短的文本则进行填充。总之,要使得训练集中所有的文本/序列长度相同,该长度除之前提到的设置外,也可以是其他任意合理的数值。在测试时,也需要对测试集中的文本/序列做同样的处理。

    假设训练集中所有文本/序列的长度统一为n,我们需要对文本进行分词,并使用词嵌入得到每个词固定维度的向量表示。在RCNN中,我们不仅要考虑每个词的词向量还要考虑该词上下文的向量表示,三者共同构成该词最终的嵌入表示,作为CNN卷积层的输入。接下来我们具体如何操作。

     

    3.RCNN模型处理步骤

    • RCNN模型图解

    上图中中间是输入序列中每个单词的嵌入表示,左右使用双向RNN分别学习当前词w_{i}的左上下文表示cl(w_{i})和右上下文表示cr(w_{i}),在与当前词w_{i}本身的词向量连接,构成后续卷积层的输入x_{i}。具体如下:

    与TextCNN比较类似,都是把文本表示为一个嵌入矩阵,再进行卷积操作。不同的是TextCNN中的文本嵌入矩阵每一行只是文本中一个词的向量表示,而在RCNN中,文本嵌入矩阵的每一行是当前词的词向量以及上下文嵌入表示的拼接。

    例如:上图中的along这一个单词,中间是他的词向量,左边利用一个RNN得到along之前上文所有单词的嵌入表示(当前时间步骤上RNN的隐藏状态),右边同样利用一个反向的RNN得到along之后所有单词的嵌入表示(当前时间步骤上RNN的隐藏状态)。三者共同构成along的嵌入表示,文本中的其他词同理。最后文本被表示为上图左边的一个嵌入矩阵。

    然后将x_{i}作为当前词w_{i}的嵌入表示,输入到卷积核大小为1*d(d为x_{i}的长度)激活函数为tanh的卷积层,得到w_{i}潜在的语义向量:

    在TextCNN中我们曾经设置了多个卷积核f*d,RCNN中将卷积核大小设置为1*d的原因是x_{i}中已经包含了w_{i}左右上下文的信息,无需再使用窗口大于1的卷积核进行特征提取。需要说明的是,实践中依然可以同时使用多个不同大小的卷积核,如[1,2,3],可能会取得更好的实践效果,一种解释是窗口大于1的卷积核强化了w_{i}左右最近的上下文信息。此外实践中一般使用更复杂的RNN来捕捉w_{i}的上下文信息,如LSTM和GRU等。

     

    再经过卷积层以后,获得了文本中所有词的语义表示y_{i}^{(2)},然后经过一个max-pooling层和softmax层(输出层使用softmax激活函数)进行分类:

     

    4.RCNN小结

    • 在RCNN论文的所有实验上,神经网络比传统方法效果好
    • 基于CNN的方法比基于RNN的方法好
    • RCNN可以捕获更长的模式
    • 在RCNN论文的使用实验数据集上,RCNN比CNN好
    • CNN使用固定词窗口(捕获上下文信息),实验结果受窗口大小的影响;RCNN使用循环结构捕获广泛的上下文信息。

    但是在实际应用中,CNN的效果已经足够好了,RCNN未必能有比CNN更好的效果,而且CNN的训练速度更快,可以尝试多种方法,找一个效果最好的。

     

     

     

     

     

    展开全文
  • https://blog.csdn.net/zzZ_CMing/article/details/89478436 朴素贝叶斯算法做文本分类,用的是谭松波酒店语料。
  • 文本分类语料库训练集,供学习测试使用。新闻类语料(已标签分类),包含经济、交通、教育、环境、体育、医药等类目共上千份新闻文本。
  • 自然语言处理——文本分类概述

    万次阅读 多人点赞 2018-11-05 19:50:59
    内容提要分类概述分类流程数据采集爬虫技术页面处理文本预处理英文处理中文处理停用词去除文本表示特征选择 分类概述   分类(Classification)是指自动对数据进行标注。人们在日常生活中通过经验划分类别。但是要...

    分类概述

      分类(Classification)是指自动对数据进行标注。人们在日常生活中通过经验划分类别。但是要依据一些规则手工地对互联网上的每一个页面进行分类,是不可能的。因此,基于计算机的高效自动分类技术成为人们解决互联网应用难题的迫切需求。与分类技术类似的是聚类,聚类不是将数据匹配到预先定义的标签集合,而是通过与其他数据相关的隐含结构自动的聚集为一个或多个类别。文本分类是数据挖掘和机器学习领域的一个重要研究方向。
      分类是信息检索领域多年来一直研究的课题,一方面以搜索的应用为目的来提高有效性和某些情况下的效率;另一方面,分类也是经典的机器学习技术。在机器学习领域,分类是在有标注的预定义类别体系下进行,因此属于有监督的学习问题;相反聚类则是一种无监督的学习问题。
      文本分类(Text Classification或Text Categorization,TC),或者称为自动文本分类(Automatic Text Categorization),是指计算机将载有信息的一篇文本映射到预先给定的某一类别或某几类别主题的过程。文本分类另外也属于自然语言处理领域。本文中文本(Text)和文档(Document)不加区分,具有相同的意义。
      F. Sebastiani以如下数学模型描述文本分类任务:文本分类的任务可以理解为获得这样的一个函数Φ:D×C→{T,F},其中,D={d1,d2,…,d|D|} 表示需要进行分类的文档,C={c1,c2,…,c|C|} 表示预定义的分类体系下的类别集合,T值表示对于(dj,ci)来说 ,文档dj属于类ci,而F值表示对于(dj,ci)而言文档dj不属于类ci 。也就是说,文本分类的目标就是要寻找一个有价值的函数映射,准确的完成D×C到T/F值的函数映射,这个映射过程本质上讲就是所谓的分类器。
      文本分类的形式化定义如下:
      设i = 1,…,M为文档集合里面的M篇文档, j = 1,…,N为预先定义的N个类别主题,可以给出这样一个分类结果矩阵C=(cij);其中,矩阵中某一元素cij表示第i篇文档与第j个类别的关系。也就是说,文本自动分类可以归结为确定上面矩阵C的每一个元素的值的过程;使用一个布尔量1或0,如果cij 的值为1,则表示文档i属于第j类,如果值为0,则文档i不能被分入类别j,即:

    对于单类别的分类,即某篇文档只允许被分入一个类别中,我们可以增加限定条件,对于第j行( j = 1,…,N)的所有元素,必须满足:

      在实际应用中,根据预定义的类别不同,分类系统可以分两种:两类分类器和多类分类器。如果从文本的标注类别上来讲,文本分类又可以分为单标签和多标签两类。文本分类系统的任务简单的说:在预定义分类体系下,根据文本的内容相关性自动地判定文本与类别之间的关联。从数学角度来看,文本分类是一个函数映射过程,它将未标明类别的文本映射到预定义的类别,该映射可以是一一映射,也可以是一对多的映射,因为通常一篇文本可以同时关联到多个类别。

    分类流程

      文本分类系统可以简单的表示为如图2.1所示:

    文本分类系统示意图
      统计机器学习(Statistical Machine Learning)文本分类系统组成部分包括:
    1. 文本预处理模型(Text Preprocessing Model),
    2. 文本表示模型(Text Expressing Model),
    3. 特征选择模型( Feature Selection Model),
    4. 学习训练模型(Learning and Selection Model),
    5. 分类处理模型(Classification Processing Model),
    6. 性能评估模型(Performance Evaluation Model)。

      多数情况下的监督型机器学习算法,学习训练模型仅需在分类预测前运行一次即可;性能评估模型主要起到评估训练模型学习效果,衡量分类精度的作用。
      文本分类的一般流程如图所示:

    文本分类的一般流程

    数据采集

      数据采集是文本挖掘的基础,主要包括爬虫技术和页面处理。

    爬虫技术

      Web信息检索的第一步就是要抓取网络文档,爬虫就承担了解决这一问题的主要责任。爬虫有很多种类型,但最典型的就是网络爬虫。网络爬虫通过跟踪网页上的超链接来搜寻并下载新的页面。似乎听起来该过程比较简单,但是如何能够高效处理Web上出现的大量新页面,如何处理已抓取页面的更新页面,如何保持页面的最新性,这些问题都成为网络爬虫设计富有挑战的难题。网络爬虫抓取任务可以限定在一个比较小的范围内,例如一个公司,一个网站,或者一所大学的站点。主题网络爬虫与话题网络爬虫要采用分类技术来限制所搜寻页面属于同一主题类别。

    页面处理

      通过网络爬虫抓取的页面是最原始的Web页面,它们的格式多种多样,如HTML、XML、Adobe PDF、Microsoft Word等等。这些web页面含有大量的噪声数据,包括导航栏、广告信息、Web标签、超链接或者其他非内容格式数据等,这些数据几乎都成是阻碍文本下一步处理的因素。因此需要经过预处理去除上述噪音数据,将Web页面转化成为纯净统一的文本格式和元数据格式。Web关注内容过滤也是Web信息处理领域的一项热门研究课题。
      另外一个普遍存在的页面处理问题是编码不一致。由于计算机发展、民族语言、国家地域的不同造成现在计算机存储数据采用许多种编码格式,例如ASCII、UTF-8、GBK、BIG5等等。在实际应用过程中,在对不同编码格式的文档进行深入处理之前,必须要保证对它们编码格式进行统一转换。

    文本预处理

      文本要转化成计算机可以处理的数据结构,就需要将文本切分成构成文本的语义单元。这些语义单元可以使句子、短语、词语或单个的字。本文无论对于中文还是英文文本,统一将最小语义单元称为“词组”。对于不同的语言来说处理有所区别,下面简述最常见的中文和英文文本的处理方式。

    英文处理

      英文文本的处理相对简单,每一个单词之间有空格或标点符号隔开。如果不考虑短语,仅以单词作为唯一的语义单元的话,处理英文单词切分相对简单,只需要分割单词,去除标点符号。英文还需要考虑的一个问题是大小写转换,一般认为大小写不具有不同的意义,这就要求将所有单词的字幕都转换成小写或大写。另外,英文文本预处理更为重要的问题是词根的还原,或称词干提取。词根还原的任务就是将属于同一个词干(Stem)的派生词进行归类转化为统一形式。例如,把“computed”, “computer”, “computing”可以转化为“compute”。通过使用一个给定的词来代替一类中每一个元素,可以进一步增加类别与文档中的词之间匹配度。词根还原可以针对所有词进行,也可以针对少部分词进行或者不采用词根还原。针对所有词的词根还原可能导致分类结果的下降,这主要的原因或许是删除了不同形式单词所含有的形式意义。哪些词在哪些应用中应该词根还原尚不清楚。McCallum等人研究工作显示,词根还原可能有损于分类性能。

    中文处理

      相对于英文来说,中文的文本处理相对复杂。中文的字与字之间没有间隔,并且单个汉字具有的意义弱于词组。一般认为中文词语为最小的语义单元,当然词语可以由一个或多个汉字组成。中文文本分类首先要解决的难题就是中文分词技术,用特殊符号(例如空格符)将中文具有独立语义信息的语义单元分割开。中文分词是中文文本分类的前提条件。目前常用的中文分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。详细介绍见中文分词篇。

    去停用词

      停用词(Stop Word)是一类普遍纯在与文本中的常用词,并且脱离语境它们本身并不具有明显的意义。最常用的词是一些典型的功能词,这些词构成句子的结构,但对于描述文本所表述的意义几乎没有作用,并且容易造成统计偏差,影响机器学习效果。在英文中这词如:“the”、“of”、“for”、“with”、“to”等,在中文中如:“啊”、“了”、“并且”、“因此”等。由于这些词的用处太普遍,去除这些词,对于文本分类来说没有什么不利影响,相反可能改善机器学习效果。停用词去除组件的任务比较简单,只需从停用词表中剔除定义为停用词的常用词就可以了。尽管停用词去除简单,含有潜在优势,但是停用词去除与词根还原具有同样的问题,定义停用词表中应该包含哪些词确是比较困难,一般科研中停用词表的规模为几百。

    文本表示

      文本通常表现为一个由文字或字符与标点符号组成的符号串,由字或字符组成词,由词组成短语,进而形成句子、段落、篇章结构。要使计算机能够有效地处理文本串,就必需找到一种理想的文本表示方法,这种表示形式要既能够真实的反应文本的内容又能区分不同文档。
      向量空间模型(VSM,Vector Space Model)是目前文本处理应用领域使用最多且效果较好的文本表示法。VSM是20 世纪60年代末期由G. Salton等人提出的,最早用在SMART信息检索系统中。
      定义:向量空间模型:给定文档D,如下

    其中 tk 是组成文本的词元素, 1≤k≤nwk 是词元素tk 的权重,或者说词在文本中的某种重要程度。
      性质:向量空间模型满足以下两条性质:
      a) 互异性:各词组元素间属于集合元素关系,即若i≠j ,则 ti≠tj ;
      b) 无关性:各词组元素间无顺序关系和相互联系,即对于文本D,若i≠j ,交换titj 的位置,仍表示文档D。词组与词组之间不含任何关系。
      可以把词组t1, t2,…,tn 看成 n 维坐标空间,而权重w1, w2,…,wn 为相应坐标值。因此,一个文本可以表示为一个 n 维向量。

    特征选择

      在向量空间模型中,文本可以选择字、词组、短语、甚至“概念”等多种元素表示。这些元素用来表征文本的性质,区别文本的属性,因此这些元素可以被称为文本的特征。在文本数据集上一般含有数万甚至数十万个不同的词组,如此庞大的词组构成的向量规模惊人,计算机运算非常困难。进行特征选择,对文本分类具有重要的意义。特征选择就是要选择那些最能表征文本含义的词组元素。特征选择不仅可以降低问题的规模,还有助于分类性能的改善。选取不同的特征对文本分类系统的性能有不同程度的影响。已提出的文本分类特征选择方法比较多,常用的方法有:文档频率(Document Frequency,DF)、信息增益(Information Gain,IG)、 校验(CHI)和互信息(Mutual Information,MI)等方法。另外特征抽取也是一种特征降维技术,特征抽取通过将原始的特征进行变换运算,形成新的特征。详细内容见特征选择篇。

    分类模型

      文本分类模型主要分为:

    1. 规则模型;
    2. 概率模型;
    3. 几何学模型;
    4. 统计模型;

    详细参见:文本分类——常见分类模型

    知更鸟博文推荐
    上一篇 自然语言处理——文本分类平台功能及UI设计
    下一篇 中文分词——知更鸟分词(RS)设计与实现
    推荐篇 基于Kubernetes、Docker的机器学习微服务系统设计——完整版
    研究篇 RS中文分词   |  MP特征选择   |  NLV文本分类   |  快速kNN
    作者简介
    兴趣爱好机器学习、云计算、自然语言处理、文本分类、深度学习
    E-mailxsd-jj@163.com (欢迎交流)

    参考文献:
    [1] 周志华.机器学习. 清华大学出版社,2016.
    [2] 邱江涛,唐常杰,曾涛,刘胤田.关联文本分类的规则修正策略.计算机研究与发展,46(4):683- 688.
    [3] 靖红芳,王斌,杨雅辉,徐燕.基于类别分布的特征选择框架.计算机研究与发展,46(9):1586-1593
    [4] Sebastiani,F. Machine learning in automated text categorization. ACM Comput. Surv. 2002, 34(1): 1-47.
    [5]Lewis,D.,Schapire,R.,Callan,J.,Papka,R. Training algorithms for linear text classifiers. In: Proc. of the ACM SIGIR.
    [6] Joachims,T. Text categorization with support vector machines: Learning with many relevant features In: Proc. of the Machine Learning: ECML’98, 10th European Conf. on Machine Learning.
    [7] Lewis,D. A comparison of two learning algorithms for text categorization . In: Proc. of Symp. On Document Analysis and IR.

    版权声明:个人原创,请勿抄袭,欢迎引用,未经许可禁止转载. © 知更鸟
    展开全文
  • [R语言]文本分类(3)

    千次阅读 2015-10-29 18:24:18
    在上一节中,已经生成了我所需要的...接下来就可以分类了:直接上代码:library(tm) library(maxent)traindata (NULL) testdata (NULL)#循环测试 for(i in 1:10) { filename (i,'.txt',sep="") text = read.table
  • 在开始学习之前推荐大家... 文本分类(Text Classification或Text Categorization,TC),或者称为自动文本分类(Automatic Text Categorization),是指计算机将载有信息的一篇文本映射到预先给定的某一类别或某几类别...
  • R语言文本分析入门

    千次阅读 2018-05-21 08:48:48
    文本挖掘被描述为 “自动化或半自动化处理文本的过程”,包含了文档聚类、文档分类、自然语言处理、文体变化分析及网络挖掘等领域内容。对于文本处理过程首先要拥有分析的语料,比如报告、信函、出版物等。而后根据...
  • 文章目录一、基于特征的分类1.获取特征文本预处理分词特征...入门的自然语言处理\机器学习任务大都讲到垃圾邮件识别,而这就是一个文本分类任务。文本分类常见的应用包含情感分析、分类标签获取、新闻分类等等。这里...
  • 使用R语言中的jiebaR包,对中文文本进行分词,求词频,做词云图并进行LDA主题建模
  • 自然语言处理学习笔记一级目录二级目录三级目录 一级目录 二级目录 三级目录
  • r语言文本分析

    2017-12-26 22:18:29
    大数据学习,r语言进行文本分析, k-means分类聚合。
  • 使用KNN最近邻算法对文本的情感进行分类和回归预测的数据集
  • [R语言]文本分类(2)

    千次阅读 2015-10-29 17:16:12
    上一节,介绍了R语言,和本人做文本分类时运用的几个包,还有个小例子。 这一节就用代码来简单介绍下我做文本分类的过程。我的分类很简单,就是给你一段文字,你将它分类到特定的类别。当然,这是前提是需要大量的...
  • 前一阵子完成了一个约90w条json数据的大数据新闻分析作业,发现对于类似数据格式的以R语言为分析工具的数据分析博客不是很全,相关信息十分零散。因此我整理了一些处理超大文本的方法和技巧,其中借鉴了一些博主的...
  • 7 相应R包简介 8 文本处理 词干化stemming snowball包 记号化Tokenization RWeka包 中文分词 Rwordseg包 9 tm包常用操作介绍 tm包具体操作 建立语料库 导出语料库 语料库检索和查看 元数据
  • 6. 文本分类常用模型 介绍一些常见的文本处理的传统机器学习模型和流行的深度学习模型 6.1 朴素贝叶斯 ##朴素贝叶斯 from sklearn.naive_bayes import MultinomialNB clf = MultinomialNB() clf.fit(X, y) ...
  • 基于CNN的文本分类问题已经有了一定的研究成果,CNN做句子分类的论文可以参看: Convolutional Neural Networks for Sentence Classification。 以及字符级CNN的论文:Character-level Convolutional Networks for ...
  • R语言实现 朴素贝叶斯分类

    千次阅读 2020-01-10 19:35:34
    R进行朴素贝叶斯分类Example: Filtering spam SMS messages ----Step 2: Exploring and preparing the data ----read the sms data into the sms data frameexamine the structure of the sms dataconvert spam/...
  • R文本分类之RTextTools

    千次阅读 2018-01-17 00:00:00
    作者简介Introduction黄耀鹏:R语言中文社区专栏作者,一名数据科学研究者及科普写作者。个人博客:http://yphuang.github.io/往期回顾R中的正则表达式及字符处理函数总结R字符串处理应用之邮件考勤自动化R爬虫之...
  • [R语言]文本分类(1)

    千次阅读 2015-10-29 15:07:33
    因项目需要,结合自身专业知识,故而接触了R语言及一些常用分类器。记录下自己这一个多月的学习历程。R语言与起源于贝尔实验室的s语言类似,R也是一种为统计计算和绘图而生的语言和环境,它是一套开源的数据分析解决...
  • 本文是基于 Emmanuel Ameisen 的 Concrete solutions to real problems的学习笔记(翻译+整理+扩充),代码部分根据自己的环境...目前现存很多NLP的技术与工具,但聚类和分类永远是我们在面对这类问题时会首先考虑...
  • 简单安装几个R软件包,你就直接在自己电脑上打造出一个文本分类器,用进行机器来评估人类写作。本文是一篇极简的上手教程,它想用清晰明了的步骤告诉读者,机器学习不神秘,关键是动手!仅需七步,你也一样能“作诗...
  • 文章目录导入库数据加载数据预处理统计指标数据分布统计每种标签数据分布字符长度可视化统计文本分词长度分析文本 词云可视化文本分类深度学习模型介绍模型对比:性能和得分总结总结 导入库 import pandas as pd ...
  • 最近在学习文本分类,读了很多博主的文章,要么已经严重过时(还在一个劲介绍SVM、贝叶斯),要么就是机器翻译的别人的英文论文,几乎看遍全文,竟然没有一篇能看的综述,花了一个月时间,参考了很多文献,特此写下此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,763
精华内容 21,905
关键字:

文本分类r语言