情感倾向明显:明显的词汇如”好”“可以”
语言不规范:会出现一些网络用词,符号,数字等
重复性大:一句话出现词语重复
数据量大.
编辑距离去重其实就是一种字符串之间相似度计算的方法。给定两个字符串,将字符串A转化为字符串B所需要的删除、插入、替换等操作步骤的数量就叫做从A到B的编辑路径。而最短的编辑路径就叫字符串A、B的编辑距离。比如,“还没正式使用,不知道怎样,但安装的材料费确实有点高,380”与“还没使用,不知道质量如何,但安装的材料费确实贵,380”的编辑距离就是9.
4.3压缩语句的规则:
1.若读入与上列表相同,下为空,则放下
2.若读入与上列表相同,下有,判断重复,清空下表
3.若读入与上列表相同,下有,判断不重,清空上下
4.若读入与上列表不同,字符>=2,判断重复,清空上下
5.若读入与上列表不同,下为空,判断不重,继续放上
6.若读入与上列表不同,下有,判断不重,放下
7.读完后,判断上下,若重则压缩.
4.4然后我们再进行中文的分词,分词的大致原理是:
1.字符串匹配算法是将待分的文本串和词典中的词进行精确匹配,如果词典中的字符串出现在当前的待分的文本中,说明匹配成功。常用的匹配算法主要有正向最大匹配、逆向最大匹配、双向最大匹配和最小切分。
2.基于理解的算法是通过模拟现实中人对某个句子的理解的效果进行分词。这种方法需要进行句法结构分析,同时需要使用大量的语言知识和信息,比较复杂。
3.基于统计的方法是利用统计的思想进行分词。单词由单字构成,在文本中,相邻字共同出现的次数越多,他们构成词的概率就越大;因此可以利用字之间的共现概率来反映词的几率,统计相邻字的共现次数,计算它们的共现概率。当共现概率高于设定的阈值时,可以认为它们可能构成了词
4.5得到分词结果后,
4.6我们处理完分词结果后,
便可以进行统计,画出词频云图,来大致的了解那些关键词的情况,借此对于我们下一步的分析,提供思考的材料.操作如下:
模型一:TF-IDF法:
模型二:.LDA模型
传统判断两个文档相似性的方法是通过查看两个文档共同出现的单词的多少,如TF-IDF等,这种方法没有考虑到文字背后的语义关联,可能在两个文档共同出现的单词很少甚至没有,但两个文档是相似的。
举个例子,有两个句子分别如下:
“乔布斯离我们而去了。”
“苹果价格会不会降”
4.8项目总结
3.总的流程如下:
5.应用领域:1.舆情分析
2.搜索引擎优化
3.其他各行各业的辅助应用
6.分析工具:
上下载。
7.1Rostcm6实现:
并可以实现云图的可视化.7.2R的实现
加载工作空间
library(rJava)
library(tmcn)
library(Rwordseg)
library(tm)
setwd(“F:/数据及程序/chapter15/上机实验”)
data1=readLines(“./data/meidi_jd_pos.txt”,encoding=“UTF-8″)
head(data1)
data<-data1[1:100]
—————————————————————#Rwordseg分词
data1_cut=segmentCN(data1,nosymbol=T,returnType=”tm”)
删除\n,英文字母,数字
data1_cut=gsub(“\n”,””,data1_cut)
data1_cut=gsub(“[a-z]*”,””,data1_cut)
data1_cut=gsub(“\d+”,””,data1_cut)
write.table(data1_cut,’data1_cut.txt’,row.names=FALSE)
Data1=readLines(‘data1_cut.txt’)
Data1=gsub(‘\”‘,”,data1_cut)
length(Data1)
head(Data1)
———————————————————————–#加载工作空间
library(slam)
library(topicmodels)
data1=readLines(“./data/meidi_jd_pos_cut.txt”,encoding=“UTF-8”)
stopwords<-unlist(readLines(“./data/stoplist.txt”,encoding=“UTF-8”))
stopwords=stopwords[611:length(stopwords)]
删除空格、字母
Data1=gsub(“\n”,””,Data1)
Data1=gsub(“[a~z]*”,””,Data1)
Data1=gsub(“\d+”,””,Data1)
构建语料库
corpus1=Corpus(VectorSource(Data1))
corpus1=tm_map(corpus1,FUN=removeWords,stopwordsCN(stopwords))
建立文档-词条矩阵
sample.dtm1<-DocumentTermMatrix(corpus1,control=list(wordLengths=c(2,Inf)))
colnames(as.matrix(sample.dtm1))
tm::findFreqTerms(sample.dtm1,2)
unlist(tm::findAssocs(sample.dtm1,’安装’,0.2))
—————————————————————–
#主题模型分析
Gibbs=LDA(sample.dtm1,k=3,method=“Gibbs”,control=list(seed=2015,burnin=1000,thin=100,iter=1000))
最可能的主题文档
Topic1<-topics(Gibbs,1)
table(Topic1)
每个Topic前10个Term
Terms1<-terms(Gibbs,10)
Terms1
——————————————————————-#用vec方法分词
library(wordcloud)
data1=readLines(“./data/meidi_jd_pos.txt”,encoding=“UTF-8”)
d.vec1<-segmentCN(data1,returnType=“vec”)
wc1=getWordFreq(unlist(d.vec1),onlyCN=TRUE)
wordcloud(wc1$Word,wc1$Freq,col=rainbow(length(wc1$Freq)),min.freq=1000)