文本挖掘可以视为NLP(Natural language processing,自然语言处理)的一个子领域,目标是在大量非结构化文本中整理析取出有价值的内容。由于人类语言具有很高的复杂性,例如不同语言间语法不同,组成方式不同,还有语言种类的多样性,使得NLP是目前机器学习领域最困难的技术之一,里面的难点大部分成为各个应用领域(搜索引擎,情感识别,机器写作等等)的核心障碍,是实现高度智能机器人的关键技术。NLP大部分方法适用于不同的语种,也有部分只适合特定语种。

一、文本挖掘简介

1. 什么是文本挖掘

文本挖掘是抽取有效、新颖、有用、可理解的、散布在文本文件中的有价值知识,并且利用这些知识更好地组织信息的过程。

在文本挖掘领域中,文本自动分类,判同,情感分析是文本挖掘比较常见的应用 。文本分类技术主要应用在百度新闻,谷歌新闻等新闻网站,对新闻内容进行自动分类,并且实现根据用户专业倾向的文档推荐;搜索引擎去重,论文抄袭判别系统等。情感分析技术主要应用在电商评论分析系统,政府和媒体舆情监测系统等。语意理解技术应用在机器翻译、聊天机器人等。

2. NLP

NLP通常包含两方面内容:词法、语法。词法的经典问题为分词、拼写检查、语音识别等;语法的经典问题有词类识别、词义消歧、结构分析等;语音识别领域经典问题有语言识别、语音指令、电话监听、语音生成等。

二、R文本挖掘包tm

tm包是R语言中为文本挖掘提供综合性处理的package,进行操作前载入tm包,vignette命令可以让你得到相关的文档说明。使用默认安装的R平台是不带tm package的,在安装的过程中,它会依赖于'NLP','BH','slam'包,最简单的方式就是采用在线安装。 在tm中主要的管理文件的结构被称为语料库(Corpus),代表了一系列的文档集合。

1. tm包-建立语料库

install.packages("tm")
library(tm)
#Corpus(x,readerControl)
#x-语料库的数据源,可以使用目录数据源-DirSource;或者向量数据源-VectorSource;或者数据框数据源-DataframeSource(注意数据框3列结构:"doc_id", "text", "names")
#readerControl-语料库的读取控制器,是一个list;参数reader-文本为reader,pdf为readPDF等,参数language为文本语言,默认为“en”。**readerControl**\=list(reader=,language=),ReadControl中有ReadDOC,readPDF,readPlain,readReut21578XML等不同的读入方式,可以使用**getReaders()**函数显示出所用的可能的方式。
1.1 语料库-建立数据处理结构
#利用DirSource
ovid1<-Corpus(DirSource("d:/Program Files/R/R-3.3.3/library/tm/texts/txt"), readerControl = list(language = "lat"))
inspect(ovid1)
#inspect可输出语料库的内容
#利用VectorSource
docs <- c("This is a text.", "This another one.")
ovid2 <- Corpus(VectorSource(docs))
inspect(ovid2)
#利用DataframeSource
data <- read.csv("D:/data/Finance Report 2012.csv")
ovid3 <- Corpus(DataframeSource(data),readerControl=list(language="zh"))
inspect(ovid3)
1.2 数据保存

将生成的语料库在磁盘上保存成多个纯文本文件

#将语料库数据写入当前路径
writeCorpus(corpus1,"E:\\R\\",c("a1.txt","a2.txt"))

1.3 语料库-读入语料库(数据读取)

语料库处理函数:

tm_map(x,FUN)
  x-上面的语料库 FUN-使用哪个处理函数如下:
  tolower-转成小写
  removeWords-移除分词,一般用语移除停用词
  stripWh[**it**](https://www.songbingjia.com)espace-移除空白字符
  PlainTextDocument-处理HTML或者XML文档
  segmengCN-中文分词函数,来自Rwordseg包
#将reuters转换为纯文本,去除标签
reuters=tm_map(reuters,PlainTextDocument)
# 所有字母转换成小写
corpus_clean <- tm_map(reuters, tolower)
# 去除text中的数字
corpus_clean <- tm_map(reuters, removeNumbers)
# 去除停用词,例如and,or,until...
corpus_clean <- tm_map(reuters, removeWords, stopwords())
# 去除标点符号
corpus_clean <- tm_map(reuters, removePunctuation)
# 去除多余的空格,使单词之间只保留一个空格
corpus_clean <- tm_map(reuters, stripWhitespace)

2. tmcn包-停用词包

install.packages("tmcn")
library(tmcn)
#stopwordsCN()

   

3. Rwordseg包

install.packages("rJava")
install.packages("Rwordseg")
library(Rwordseg)
分词方法:
      segmentCN(strwords,outfile="",returnType=c("vector","tm"))
        strwords-需要分词的字符串或者文件路径
        outfile-分词后输出的路径,默认为输入文件的同级目录
        returnType-返回值类型,默认是数组,可以选择为tm包的语料库类型
3.1 安装/卸载字典

选择分词词典对于后续的分析极为重要,词典库是之后分词的匹配库,这个词库越强大,分词的效果就越好。网上大多使用的是搜狗分词包。

#安装字典
      installDict(dictpath,dictname)
      uninstallDict(dictname)
      dictpath-字典文件路径
      dictname-字典名字
      字典下载:http://pinyin.sogou.com/dict/
#显示字典
      listDict()
3.2 字典出处
(1)从搜狗词库下载分词词典
##用搜狗词库的时候 一定要在官网上下载 ~.scel 文件,
##搜狗下载官网:http://pinyin.sogou.com/dict/cate/index/101
#不能直接将下载的 ~.txt改为~.scel
installDict("F:/R/文本挖掘分词词库/自然语言处理及计算语言学相关术语.scel","computer",dicttype = "scel")
(2)查看词典的函数
加载词典函数为installDict,下面有一些简单的介绍,其中的词类名称是自定义的,每个词类名称需要不一样。
#查看词典
#installDict函数介绍
# installDict(dictpath, dictname,dicttype = c("text", "scel"), load = TRUE)
#installDict("工作目录","词类名称",dicttype = c("text", "scel"), load = TRUE)
listDict()
#uninstallDict() 删除安装的词典
uninstallDict()
#listDict() 查看剩余的词典
listDict()

4. TM包和Rwordseg包组合使用

#加载相关包
library(tm)
library(tmcn)
#按目录读入语料库
C000007 <- Corpus(DirSource('SogouC.mini/Sample/C000007'),readerControl = list(language="UTF-8"))
stopwordsCN()
#加载rwordreg包
library(Rwordseg)
C000007 <- tm_map(C000007, stripWhitespace) //先把c000007语料库中的空格移除
C000007 = tm_map(C000007, content_transformer(segmentCN), returnType='tm') //用segmentcn方式进行分词

参考文献

1.(R语言文本挖掘tm包详解)[https://www.jianshu.com/p/948eef869be3]

2.(R语言学习-词频学习)[https://www.136.la/tech/show-598389.html]

3. ( 天戈朱-博客园)[https://www.cnblogs.com/tgzhu/p/6680525.html]

R语言文本数据挖掘(一)的更多相关文章

  1. R语言︱文本(字符串)处理与正则表达式

    处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本.R语言是统计的语言,处理文本不是它的强项,perl语言这方面的功能比R不知要强多少倍.幸运的是R语言的可扩展能力很强,DN ...

  2. 【R语言进行数据挖掘】回归分析

    1.线性回归 线性回归就是使用下面的预测函数预测未来观测量: 其中,x1,x2,...,xk都是预测变量(影响预测的因素),y是需要预测的目标变量(被预测变量). 线性回归模型的数据来源于澳大利亚的C ...

  3. 【R语言进行数据挖掘】决策树和随机森林

    1.使用包party建立决策树 这一节学习使用包party里面的函数ctree()为数据集iris建立一个决策树.属性Sepal.Length(萼片长度).Sepal.Width(萼片宽度).Peta ...

  4. R语言︱词典型情感分析文本操作技巧汇总(打标签、词典与数据匹配等)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:情感分析中对文本处理的数据的小技巧要 ...

  5. 大数据时代的精准数据挖掘——使用R语言

    老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...

  6. R语言︱情感分析—词典型代码实践(最基础)(一)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...

  7. R语言︱情感分析—基于监督算法R语言实现(二)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...

  8. R语言rvest包网络爬虫

    R语言网络爬虫初学者指南(使用rvest包) 钱亦欣 发表于 今年 06-04 14:50   5228 阅读   作者 SAURAV KAUSHIK 译者 钱亦欣 引言 网上的数据和信息无穷无尽,如 ...

  9. [译]用R语言做挖掘数据《一》

    介绍 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...

  10. 【R笔记】R语言函数总结

    R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...

随机推荐

  1. 将npm安装镜像切换到淘宝

    cnpm(推荐) 安装 pm install cnpm -g --registry=https://registry.npm.taobao.org 使用 cnpm install [xxxxxxx] ...

  2. Debug --> CICflowmeter配置链接

    先存一下,今天晚上尝试. https://blog.csdn.net/weixin_52111404/article/details/127908558

  3. CF527D 题解

    题意:数轴上有 \(n\) 个点,第 \(i\) 个点的坐标为 \(x_i\),权值为 \(w_i\).两个点 \(i,j\) 之间存在一条边当且仅当 \(abs(x_i-x_j)\geq w_i+w ...

  4. Spring系列之基于 Java 的容器配置-9

    目录 组合基于 Java 的配置 使用`@Import`注解 有条件地包含`@Configuration`类或`@Bean`方法 结合 Java 和 XML 配置 组合基于 Java 的配置 Spri ...

  5. Shell 更多结构化命令(流程控制)

    更多的结构化命令 上一章里,你看到了如何通过检查命令的输出和变量的值来改变 shell 脚本程序的流程.本章会继续介绍能够控制 shell 脚本流程的结构化命令.你会了解如何重复一些过程和命令,也就是 ...

  6. eclipse project is missing required java project

    eclipse project is missing required java project eclipse版本: 2022-03 这情况就是maven包出了问题 具体的说不上 看我的解决方法: ...

  7. CF 1272 D. Remove One Element

    D. Remove One Element time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  8. 钉钉扫码登录第三方,appSecret签名算法(附包名)

    包名 import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import javax.crypto.Mac; ...

  9. IEEE会议论文投稿系统问题之一:WinEdt编译生成DVI文件的方法

    问题描述:如何将tex文件正确编译为dvi文件,以正常使用IEEE投稿系统? 方法: 1.打开WinEdt中的命令行: 2.使用latex TexFileName编译tex生成aux文件和dvi文件: ...

  10. Swagger UI教程 API 文档神器 搭配Node使用 web api 接口文档 (转)

    http://www.68idc.cn/help/makewebs/qitaasks/20160621620667.html 两种方案 一.Swagger 配置 web Api 接口文档美化 二.通过 ...