R语言机器学习与临床预测模型65--文本挖掘
R小盐准备介绍R语言机器学习与预测模型的学习笔记, 快来收藏关注【科研私家菜】
01 语义分析
以及从语言学的角度对词语进行标记,比如名词、动词、代词、形容词、副词、介词、单数、复数等。一般来讲,只研究词频和文本隐含主题就足够了。但是,有些时候你会发现需要对文本风格理解得更深入一些,以便对演讲者和写作者进行比较。
有很多方法可以完成这一任务,但我们只集中讨论下面5种:
极性分析(情感分析)
自动易读性指数(复杂度)
正式度
多样性
分散度
极性分析通常称为情感分析,它可以告诉你文本的情感有多么积极或者多么消极。R使用qdap包进行极性分析,它为每个句子分配一个评分。你可以对不同作者、文本或主题进行分组,以分析极性均值或标准差。有很多极性词典可供使用, qdap包中默认使用的词典是由Hu与Liu在2004年建立的。你可以根据自己的需要替换或改变这个词典。算法首先对词语进行标记,每个词都根据词典标为“积极”“消极”或“中性”的情感标记。
标记后的词与它前4个词和后2个词一起,被聚集成词簇。词簇用效价转换器( valence shifter,中性器neutral、否定器negator、放大器amplifier、负放大器de-amplifier)进行标记。根据词和词簇的数量与位置,为其赋予一系列权重,然后将权重相加,再除以句子中词的数量的平方根。
自动易读性指数是衡量文本复杂度和读者理解能力的一个指标。可以用一个专门的公式计算数: 4.71(字符数/词数) + 0.5(词数/句子数) -21.43。
这个指数会生成一个数值,通过这个数值可以估计出能完全理解文本的学生年级。如果这个
数值是9,那么一个年龄为13~15岁的学生应该能够理解文本意义。
正式度可以表示文本和读者之间或者演讲者与听众之间的相关程度。我认为,它是表示文本
作者与读者之间适合程度的一种方式,或者是对作者与读者交流环境的一种设定。如果你想体验
正式的文本,那么去参加医学会议或阅读法律文件吧。非正式文本天然地要受到语境的影响
02 tm包的文本挖掘 自然语言处理
# Natural Language Processing
# #
# install.packages('tm')
# install.packages('twitteR')
# install.packages('wordcloud')
# install.packages('RColorBrewer')
# install.packages('e1017')
# install.packages('curl')
install.packages(c("devtools", "rjson", "bit64", "httr"))
library(twitteR)
library(tm)
library(wordcloud)
library(RColorBrewer)
#Connect to twitter
##authentication
setup_twitter_oauth(ckey, skey,token,sectoken)
##returning tweets
soccer.tweets <- searchTwitter("Modi",n=1000,lang="en")
### Grabing Text from tweets
soccer.text <- sapply(soccer.tweets,function(x) x$getText())
#####cleam=n the data
soccer.text <- iconv(soccer.text, 'UTF-8', 'ASCII') # remove emoticons
soccer.corpus <- Corpus(VectorSource(soccer.text)) # create a corpus
# Create a Document Term Matrix
# We'll apply some transformations using the TermDocumentMatrix Function
term.doc.matrix <- TermDocumentMatrix(soccer.corpus,
control = list(removePunctuation = TRUE,stopwords = c("Modi","http", stopwords("english")),
removeNumbers = TRUE,tolower = TRUE))
# converting object into matrix
term.doc.matrix <- as.matrix(term.doc.matrix)
# getting word count
word.freqs <- sort(rowSums(term.doc.matrix), decreasing=TRUE)
dm <- data.frame(word=names(word.freqs), freq=word.freqs)
# Creating wordcloud
wordcloud(dm$word, dm$freq, random.order=FALSE, colors=brewer.pal(8, "Dark2"))
03 jiebaR
细胞词库转换可以使用 cidian 包 :https://github.com/qinwf/cidian/
jiebaR 中文分词文档 (qinwenfeng.com)
install.packages("jiebaR")
新建一个分词器
library(jiebaR)
分词器 = worker()
然后就是分词了,
segment("我是一段文本", 分词器)
#> [1] "我" "是" "一段" "文本"
就是这么简单!
关注R小盐,关注科研私家菜(VX_GZH: SciPrivate),有问题请联系R小盐。让我们一起来学习 R语言机器学习与临床预测模型