精华内容
下载资源
问答
  • R语言读入文本数据

    万次阅读 2017-04-09 17:15:48
    R语言读入文本方式讲解

    使用read.table函数

    下面是read.table 函数的参数及其含义

    参数含义
    file文件名(两端有引号),可能需要全路径 ,或者一个URL链接(http://...)(用URL对文件远程访问)
    headerheader = TRUE 表示读入的文件第一行是变量名,read.table默认为FALSE
    sep文件中的字段分离符,read.table默认使用任何空白符作为分隔符,比如空格,制表符,换行符
    quote举例说明作用:当参数seq = ",", quote = "\""读取数据一行为54"d,r",4时,54d,r 会作为整体读入,但是当读入数据为54"d,r,4时就会报错,需要设置成quote = "",即避开"这个符号
    dec用来表示小数点的字符
    row.namesrow.name = 1将第一列设置为列名
    encoding说明读入文本的编码格式
    na.strings代表缺失数据的值(转化为NA)
    colClasses指定各列的数据类型的一个字符型向量
    nrows可以读取的最大行数(忽略负值)
    skip在读取数据前跳过的行数
    fill如果为TRUE且非所有的行中变量数目相同,用空白填补

    使用scan函数

    scan函数与read.table 相比使用较少,但是读取文件的速度会快一点

    使用readr包

    readr包是Hadley Wickham 的作品之一,它提供了许多R中的read.table家族的替代函数,而且还增加了额外的一些功能并且速度快很多。
    例如read_table几乎代替了read.table,两者的参数有明显相似的地方,从read.table家族函数过渡到readr 包的使用也非常容易,强烈推荐使用readr包来读取数据。

    展开全文
  • 文本挖掘与R语言

    2018-06-16 18:34:20
    R语言 用于文本挖掘 英文原版教程 高清可以复制 wiley 一共两本pdf
  • R语言文本分析入门

    千次阅读 2018-05-21 08:48:48
    文本挖掘被描述为 “自动化或半自动化处理文本的过程”,包含了文档聚类、文档分类、自然语言处理、文体变化分析及网络挖掘等领域内容。对于文本处理过程首先要拥有分析的语料,比如报告、信函、出版物等。而后根据...
    1.
     文本挖掘概述
    
    文本挖掘是指从文本中提取有用的信息。成功应用主要有如下几方面:信息检索、内容管理、市场监测、市场分析等方面。文本挖掘被描述为 “自动化或半自动化处理文本的过程”,包含了文档聚类、文档分类、自然语言处理、文体变化分析及网络挖掘等领域内容。对于文本处理过程首先要拥有分析的语料,比如报告、信函、出版物等。而后根据这些语料建立半结构化的文本库。而后生成包含词频的结构化的词条-文档矩阵。
    2. R语言实现过程
    本文以R语言为例,介绍文本挖掘的实现过程,内容浅显易懂。
    R语言版本:3.2.4 (可从官网https://www.r-project.org/下载,我选择的链接是https://mirrors.tuna.tsinghua.edu.cn/CRAN/)。
    2.1 文本文件分析过程

    数据实例:tmp.txt(文档记录了少量服务器告警动作信息)。


     
    #step0:加载文本挖掘所需包
    #关于包的信息,可通过命令“?包名”查询,在此不再赘述
    #加载包如果不成功,可将包下载到本地,尝试本地安装:程序包->从本地zip文件安装程序包。若是再不成功,可能存在包不兼容问题,需要更换包。
    library(tm);
    library(rJava);
    library(Rwordseg);
    library (RColorBrewer);
    library(wordcloud);
    library(tmcn);
    #### step2:读取文本 #############
    long = readLines("tmp.txt");
     
    #### step3:分词 ################ 
    long.seg = unlist(lapply(X = long,FUN = segmentCN)); 
     
    #### step4:计算词频 #############
    long.freq = getWordFreq(string = unlist(long.seg))
     
    #### step5:绘制词云图用RColorBrewer包中的brewer.pal来选择适合的调色板:
    wordcloud(long.seg);
    注:由于样例数据比较少,词云图比较稀疏,不过足以说明问题。
     
    采用调色板绘制词云图:
    mypalette<-brewer.pal(7,"Greens");#### 定制调色板
    wordcloud(long.seg,col=mypalette)
     
    #### step5:词典新增词汇。为了分词的准确性,有时需要自定义词典 ####
    新增词汇前:
    segmentCN("生产管理系统测试应用服务器")
     
    新增词汇后:
    insertWords(c("生产管理系统测试应用服务器"))
     
    2.2 数据库长文本分析过程
    数据实例:
    select alertid,message from scott.t_alerms where rownum<=10;

     

    ##### step0:加载包RODBC ############

    #install.packages("RODBC");
    library(RODBC);
    ##### step1:建立数据库连接 ###########
    channel=odbcConnect("my_orcl",uid="scott",pwd="tiger"); #连接配置好的数据库
    ##### step2:浏览表,读取记录 ###########
    odbcQuery (channel, "select alertid,message from scott.t_alerms")
    alerms.record=sqlGetResults(channel, as.is=FALSE, errors=FALSE, max=5)
    message1=alerms.record$MESSAGE; ### 读取MESSAGE动作信息
     
    message=gsub("zabbix2.2.2","",gsub(":"," ", message1));#去除“: ”
    message
    #### step3:加载文本挖掘所需包 ##########
    library(tm);
    #install.packages("rJava")
    library(rJava);
    library(Rwordseg);
    #install.packages('RColorBrewer', depend=TRUE)
    library(RColorBrewer);
    library(wordcloud);
    library(tmcn);


    #### step4:安装自定义词典 #############
    #安装自定义txt词典
    installDict(dictpath="D:\\Program Files\\R-Dictionary\\dict.txt",
                dictname="dict",
                dicttype = "text", load = TRUE);


    #安装搜狗自定义词典
    #installDict(dictpath="D:\\Program Files\\R-Dictionary\\计算机词汇大全.scel",
                 dictname="计算机",
                 dicttype="scel")


    #### step5:分词 ################ 
    #含标点符号分词,返回列表
    message.seg1=segmentCN(message,
        analyzer = get("Analyzer", envir = .RwordsegEnv),
        nature = FALSE, nosymbol = FALSE,
        returnType = c("tm"), isfast = FALSE,
        outfile = "", blocklines = 1000);##"vector"
    message.seg1
     
    #含标点符号分词,返回向量
    message.seg2=segmentCN(message,
        analyzer = get("Analyzer", envir = .RwordsegEnv),
        nature = FALSE, nosymbol = FALSE,
        returnType = c("vector"), isfast = FALSE,
        outfile = "", blocklines = 1000);
    message.seg2
     
    # 不含标点符号分词,返回列表 
    message.seg3=segmentCN(message,
        analyzer = get("Analyzer", envir = .RwordsegEnv),
        nature = FALSE, nosymbol = TRUE,
        returnType = c("tm"), isfast = FALSE,
        outfile = "", blocklines = 1000);
    message.seg3
     


    # 不含标点符号分词,返回向量
    message.seg4=segmentCN(message,
        analyzer = get("Analyzer", envir = .RwordsegEnv),
        nature = FALSE, nosymbol = TRUE,
        returnType = c("vector"), isfast = FALSE,
        outfile = "", blocklines = 1000);

    message.seg4

     

    #### step6:保存结果 ##############
    #保存结果至txt文本
    write.table(message.seg1,"message01.txt")
    write.table(message.seg2,"message02.txt")
    #保存结果至oracle数据库
    sqlSave(channel, as.data.frame(message.seg1), rownames = "State", verbose = TRUE)

    注:每行分词个数不一样多,会导致数据写入数据库报错。

    #### step7:计算词频 #############

    message.freq = getWordFreq(string = unlist(message.seg4));

     
    #### step8:绘制词云图,用brewer.pal来选择适合的调色板:
    wordcloud(message.seg3);
    mypalette=brewer.pal(7,"Greens")
    wordcloud(message.seg3,col=mypalette)
    #### step9:关闭数据库连接 #######
    close(channel); ## 关闭数据库连接
    ####
    展开全文
  • R语言文本挖掘 Part3文本聚类

    千次阅读 2016-01-25 14:57:10
    Part3文本聚类 分类和聚类算法,都是数据挖掘中最常接触到的算法,分类聚类算法分别有很多种。可以看下下面两篇文章对常见的分类聚类算法的简介: 分类算法:...

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


    Part3文本聚类


    分类和聚类算法,都是数据挖掘中最常接触到的算法,分类聚类算法分别有很多种。可以看下下面两篇文章对常见的分类聚类算法的简介:

    分类算法:http://blog.csdn.net/chl033/article/details/5204220

    聚类算法:http://blog.chinaunix.net/uid-10289334-id-3758310.html

    文本分类聚类会要用到这些算法去实现,暂时不用深究算法细节,R中已经有成熟的可以直接调用的这些算法了。大概说下分类和聚类的差异,照我的理解,分类算法和聚类算法最后实现的效果是相同的,都是给一个集合划分成几个类别。不同的是分类算法是根据已知的确定类别去做划分,所以分类需要训练集,有训练、测试、预测这个过程;而聚类则未规定类别,它是基于给定集合的里面的内容,根据内容的相似度去给集合划分成指定的几个类(你可以指定划分成多少个类,而不是指定有哪些类),这些相似度的测量就是聚类算法的核心,这个度量标准可以是欧几里得距离、是曼哈顿距离、是切比雪夫距离等等。它们分别叫做有监督分类和无监督分类,这种说法不是很确切,参考这个文章分类与聚类,监督学习与无监督学习,有其差异的说明。

     

    还是用Part2里面的例子。做聚类不需要训练集,将文本内容做完分词处理,也就是Part2里面2.对某品牌官微做分词,这里处理完得到的结果hlzjTemp,用这个做接下来的聚类工作。下图(图片来源:玩玩文本挖掘)是一个文本挖掘的过程,不管是分类还是聚类,都要经历前面一个过程将文本转为为Tem-Document Matrix。然后再做后续分析Analysis,及分类或者聚类。另一个参考:R语言进行中文分词和聚类


    聚类算法是针对数值型变量的,先要将文本数据转换为matrix—数据矩阵。过程如下,这里需要用到tm软件包,先安装该软件包并加载。tm包中的Corpus()方法就是用来将文本转换为语料库的方法。DocumentTermMatrix()方法,显然就是将语料库转换为文档-词条矩阵,然后再将文档-词条矩阵转换为普通矩阵,过程如下:

    >library(tm)

    载入需要的程辑包:NLP

    >corpus  <-Corpus(VectorSource(hlzjTemp))

    > hlzj.dtm<- DocumentTermMatrix(corpus,control=list(wordLengths=c(1,Inf)))

    >hlzj.matrix <- as.matrix(hlzj.dtm)

    补充说明:这个过程可能会遇到很多问题,没有详细的说明,附上两个参考:用tm进行文本挖掘R语言文本挖掘

    接下来就是做聚类了,聚类算法有很多,常见的几种做聚类的方法

    1.      kmeans()

    方法的介绍参考:http://blog.sina.com.cn/s/blog_4ac9f56e0101h8xp.html。运行结果kmeansRes是一个list,names方法可以查看到kmeansRes的所有维度或者说组件,其中第一个cluster就是对应的分类结果,我们可以查看到前三十个聚类的结果,第一排对应着行号,第二排对应着聚类的结果1-5分别代表1-5类。然后我们可以将原始微博和聚类结果赋值给一个新的list变量,这样我们就能看到聚类结果和每条微博对应的关系了。最后将这个新的list变量hlzj.kmeansRes导出到本地,就能很方便地查看到聚类结果了。当然我们也可以通过fix()方法查看hlzj.kmeansRes的内容,如图所示,content是原微博内容,type是聚类结果。每个类别对应的文本数据的特点就要靠我们自己来总结了,这是聚类的一个不足的地方。

    > k <- 5

    > kmeansRes <- kmeans(hlzj.matrix,k) #k是聚类数

    > mode(kmeansRes)#kmeansRes的内容

    [1]"list"

    > names(kmeansRes)

    [1]"cluster"     "centers"     "totss"       "withinss"   

    [5]"tot.withinss" "betweenss"    "size"         "iter"       

    [9]"ifault"

    > head(kmeansRes$cluster,10)

     1 2  3  4 5  6  7 8  9 10

     1 1  1  2 1  5  2 1  1  5

    > kmeansRes$size #每个类别下有多少条数据

    [1]  327  1159   63  63   27

    >hlzj.kmeansRes <- list(content=hlzj,type=kmeansRes$cluster)

    > write.csv(hlzj.kmeansRes,"hlzj_kmeansRes.csv")

    > fix(hlzj.kmeansRes)



    2.      hclust()。

    方法详细介绍,过程不再细说http://blog.sina.com.cn/s/blog_615770bd01018dnj.html,这个方法可以用plot()来查看聚类结果图,但是在数据量挺多的时候,图的上面的内容都挤在一起看不清楚了,这种情况下,还是直接查看聚类结果比较好。同样,将原始数据hlzj和分类结果放在一起hlzj.hclustRes来看。可以看出类跟kmeans的聚类结果有些接近,说明微博的特征还是挺明显的。

    > d <- dist(hlzj.matrix,method="euclidean")

    > hclustRes <- hclust(d,method="complete")

    > hclustRes.type <- cutree(hclustRes,k=5) #按聚类结果分5个类别

    > length(hclustRes.type)

    [1] 1639

    > hclustRes.type[1:10]

     1 2  3  4 5  6  7 8  9 10

     1 1  1  2 1  2  3 1  1  2

    > hlzj.hclustRes <- list(content=hlzj,type=hclustRes.type)

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

    >fix(hlzj.hclustRes)



     

    3.      kernel聚类,方法specc()

    软件包kernlab中的specc()方法可以实现kernel聚类算法。查看这个包的说明文档,见链接http://127.0.0.1:25210/library/kernlab/doc/kernlab.pdf,这是本机的帮助文档,不知道大家的地址是不是都一致的,也可以输入??kernel查看帮助文档能看到。网上能够找到的翻译后的方法说明http://www.biostatistic.net/thread-49108-1-1.html。这个聚类结果五个分类的统计如下,第四个类别有1402个,其他分类分别是135,55,24和23,所以截图中看到前面23个都是4类下,用这个聚类可能效果不是很理想。具体实现过程如下:

    > stringkern <-stringdot(type="string")

    > kernelRes <-specc(hlzj.matrix,centers=5,kernel=stringkern)

    > mode(kernelRes)

    [1] "numeric"

    > length(kernelRes)

    [1] 1639

    > kernelRes[1:10]

     1  2 3  4  5  6  7 8  9 10

     4  4 4  4  4  4  4 4  4  4

    > table(kernelRes)

    kernelRes

       1    2   3    4    5

     135   55  24 1402   23

    >temp <-t(kernelRes) #行列转换

    > hlzj.kernelRes<-list(cotent=hlzj,type=temp[1:1639]

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

    > fix(hlzj. kernelRes)

     

    4.      除此之外。

    fpc软件包中的dbscan()方法可以实现dbscan聚类,还有其他的聚类方法,就不一一介绍了,优劣取舍要在实际应用中去控制了。

     

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

    展开全文
  • R语言——文本清理

    千次阅读 2018-11-13 23:29:34
    R语言中文本清理 textclean包 textclean是一组清理和规范化文本的工具。其中许多工具都是从qdap软件包中获取的,并且经过修改后更加直观,命名更好,速度更快。工具适用于检查不适合分析的子串,并用更多分析...

    R语言中文本清理

    textclean包

    textclean是一组清理和规范化文本的工具。其中许多工具都是从qdap软件包中获取的,并且经过修改后更加直观,命名更好,速度更快。工具适用于检查不适合分析的子串,并用更多分析友好的子串替换或删除它们(规范化)(参见Sproat,Black,Chen,Kumar,Ostendorf,&Richards,2001,doi:10.1006 / csla.2001.0169)或将它们提取到新变量中。例如,表情符号通常用于文本中,但并不总是易于通过分析算法处理。replace_emoticon()函数用等效的单词替换表情符号。其他R包提供一些相同的功能(例如,english,gsubfn,mgsub,stringi,stringr,qdapRegex)。textclean与这些软件包的不同之处在于,它旨在通过单个,一致,预配置的工具集来处理所有常见的清理和规范化任务(请注意,textclean使用许多这些极好的软件包作为后端)。这意味着研究人员花费更少的时间进行调整,从而更快地进行分析。此包旨在与textshape包一起使用,该包提供文本提取和重塑功能。textclean适用于qdapRegex包,它为子串替换和预先包装的正则表达式的提取提供工具。此外,textclean的功能被设计为通过始终使用函数的第一个参数作为数据源在tidyverse框架的管道内工作。textclean subbing和replacement工具在dplyr :: mutate语句中特别有效。

    https://github.com/trinker/textclean#html

     

    mgsub

    使用MGSUB :: MGSUB进行安全,多对象字符串的替换

    http://thug-r.life/post/2018-01-10-safe-multiple-string-substitutions/

    一个名为mgsub的新R包。它是qdap :: mgsub的安全替代品,完全支持正则表达式匹配和替换,以确保安全性。它也会首先取代较长的匹配,因此子匹配不会搞砸。我不需要传递匹配和替换的向量(可以重新编号),而是需要命名列表。最后,代码是纯R(现在),没有依赖关系,所以你不会安装很多其它的包。

    devtools::install_github("bmewing/mgsub")

     

    展开全文
  • R语言文本挖掘

    千次阅读 2015-01-14 14:03:57
    tm包是R语言中为文本挖掘提供综合性处理的package,进行操作前载入tm包,vignette命令可以让你得到相关的文档说明。本文从数据导入、语料库处理、预处理、元数据管理、创建term-document矩阵这几个方面讲述tm包括的...
  • 处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本R语言是统计的语言,处理文本不是它的强项,...
  • 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~我们每天都会遇到各种各样的文本数据,但大部分是非结构化的,并不是全部都是有价值的。据估计,全球约80%的数据是非结构化的。这包括音频,视频和文本...
  • R语言是统计的语言,处理文本不是它的强项,perl语言这方面的功能比R不知要强多少倍。幸运的是R语言的可扩展能力很强,DNA/RNA/AA等生物序列现在已经可以使用R来处理。 R语言处理文本的能力虽然不强,但适当用用...
  • R语言-文本分析

    万次阅读 2016-05-14 15:48:14
    library(tm) #载入文本挖掘包 #第一部分:分词 #把要分析的文件,存为文本文件(txt后缀),放到某个目录 #1、装载自定义词库(这里的自定义词库,是根据分析文件中的某些特殊用词,自己编写的一个词库文件,...
  • R语言文本分析(2)

    千次阅读 2016-05-10 21:30:46
    R语言文本分析(2)# 使用table统计每个单词出现的频数 moby.freqs (moby.words) # 使用sort将单词按照出现的频数由大到小进行排序 sorted.moby.freqs (moby.freqs, decreasing = TRUE) head(sorted.moby.freqs) # ...
  • R语言自然语言处理:文本分类

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

    千次阅读 2018-07-16 19:39:52
    1.tm包介绍:tm包(建议使用版本0.7-4)是R语言文本挖掘提供综合性处理的package,vignette()命令可以得到相关的文档说明。tm包的主要功能有:1.数据载入;2.语料库处理;3.数据预处理;4.元数据管理;5.建立“文档-...
  • R语言文本挖掘tm包详解 R语言 tm包的使用 对中文文本分析很重要的思路 先利用专门的包中文分词再利用tm包进行去停停词等预处理。若是英文数据不需要这么麻烦,直接可利用tm包进行分词处理。 主要参考R中文处理
  • R语言文本分析问题

    千次阅读 2017-07-20 17:00:52
    1、加载包 #调入分词的包 ...“Rwordseg”在分词之前会去掉文本中所有的(中文)符号,这样就会造成原分开的句子前后相连,本来分开的两个字也许连在了一起。 另外一个中文分词包“jieba”分词包不会去
  • 7 相应R包简介 8 文本处理 词干化stemming snowball包 记号化Tokenization RWeka包 中文分词 Rwordseg包 9 tm包常用操作介绍 tm包具体操作 建立语料库 导出语料库 语料库检索和查看 元数据
  • 文本挖掘流程图:从图中可知,文本挖掘主要包含以下几个步骤:1)读取数据库或本地外部文本文件;2)文本分词;3)构建文档-条目矩阵,即文本的特征提取;4)对矩阵建立统计模型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,910
精华内容 26,364
关键字:

r语言英文文本