美文网首页看场电影
Twitter文本勘探-惊悚片《寂静之地》

Twitter文本勘探-惊悚片《寂静之地》

作者: 初可可 | 来源:发表于2018-05-16 01:04 被阅读0次

《寂静之地》(A Quiet Place) 在北美上映后即问鼎首周末票房冠军,烂番茄上新鲜度达到97%。博主观影时也是全程屏住呼吸,对疼痛与恐惧感同身受。虽然几处有逻辑硬伤,音效有时强行吓人,但情节设定和和背景乐仍十分吸引人,在影院真实地被氛围所感染,刺激而有力量。国内5月18号即将上映,推荐大家去电影院一起体验爆米花都要含着吃是一种怎样的体验。

好奇在twitter(相当于国内微博/川普的最爱)上看完这部电影发表的感受,于是用R语言的文本挖掘来展示被提到频率最高的词。

一、函数调用、数据导入、生成语料库

>install.packages("wordcloud") # 创建词云

>install.packages("tm")    # 建立语料库、创建文档-词频矩阵、去噪

>install.packages("SnowballC") # 英文分词包,可实现提取词干 ;中文分词包为”Rwordseg"

>install.packages("twitteR")  # 连接到推特

从推特提取文本前,需要有个人账号和建立应用程序接口(Application Programming Interface, API)以便直接控制推特。***之前做http网页一直提取不到google map的数据,就是没用到API。***

建立个人账号后可通过https://apps.twitter.com/找到自己的consumerkey和consumerSecret,然后填入下方指令 (注意前后中间都不要有空格,否则R提取不到)。

>consumer_key <- ''

>consumer_secret <- ''

>access_token <- ''

>access_secret <- ''

>setup_twitter_oauth(consumer_key,   # 建立与推特的链接

          consumer_secret,

          access_token,

          access_secret)

>tweet_full<- searchTwitter("#AQuietPlace", n=2000,lang="en") #获取两千条含电影名字的推特,注意关键词中间无空格

>tweet_no_rt<-strip_retweets(tweet_full) #删除转推后200条还剩下645条

>tweet_text <- sapply(tweet_no_rt, function(x) x$getText()) #储存文本

>tweet_text_corpus <- Corpus(VectorSource(tweet_text))

*************************************************

tm包提供五种资源读取的方式:

DataframeSource 数据库,类似csv文件

DirSource 处理目录

VectorSource 由文挡构成的向量

URISource 统一资源标识

XMLSource 可拓展标记语言       

Corpus

tm中主要的管理文件的结构被称为语料库(Corpus),代表了一系列的文档集合。

动态语料库(Volatile Corpus, R内部保存):Corpus(x,readerControl=list(reader=,language)

静态语料库(Permanent Corpus, R外部保存):PCorpus(x,readerControl=list(reader=,language=), dbControl=list(dbName=“”,dbType=“DB1"))

Corpus()的结果是建立一个类似于matrix的Corpus集合,一个文件名对应一个文档内容。

*************************************************

>inspect(tweet_text_corpus) #inspect可输出语料库的内容

二、格式转化、去噪

接下来清理一下文本。主要使用tm包中的tm_map(),这个函数可以通过maps方式将转化函数实施到每一个语料上。

>tweet_text_corpus <- tm_map(tweet_text_corpus, content_transformer(gsub), pattern="\\W",replace=" ") #删除 emoji (windows系统)

>tweet_text_corpus <- tm_map(tweet_text_corpus, content_transformer(tolower)) # 转换为小写

>tweet_text_corpus <- tm_map(tweet_text_corpus, removePunctuation) #删除标点符号

>tweet_text_corpus <- tm_map(tweet_text_corpus, removeNumbers) #删除数字

>tweet_text_corpus <- tm_map(tweet_text_corpus, removeWords,stopwords("english")) #去停用词

>tweet_text_corpus <- tm_map(tweet_text_corpus, stripWhitespace)

>tweet_text_corpus <- tm_map(tweet_text_corpus, stemDocument)

三、创建词云、词频矩阵

>wordcloud(tweet_text_corpus, min.freq=5, colors=brewer.pal(7,"Dark2")) #min.freq为显示的最小词频

>inspect(tweet_text_corpus)  

>myDtm <- DocumentTermMatrix(tweet_text_corpus, control = list(minWordLength = 1)) # 将处理后的语料库进行段子处理,生成词汇文档矩阵(词频权重矩阵)

>dim(myDtm)            

>inspect(myDtm[20:25,85:90])  #想看DTM内容,还需使用inspect()函数

>freq<-rowSums(as.matrix(myDtm))

>ord<-order(freq,decreasing=TRUE)

>freq[head(ord)]

>findFreqTerms(myDtm, lowfreq=10) # 显示语料库中最常出现的词

四、TF-IDF和隐含语义检索

>tfidf<-weightTfIdf(myDtm)

> inspect(tfidf)

*************************************************

TF-IDF(Term Frequency - Inverse Document Frequency)是一种加权统计方法,常用于文字勘探用来评估单词对于文件的集合或词库中一份文件的重要程度。

1.计算TF(Term Frequency):假设j是【某一特定文件】,i是该文件中所使用的单词或单字, n(i,j)就是i在j当中的出现次数:

                           

tf值越高,单词越重要。

2. 计算IDF(Inverse Document Frequency) : 假设D是【所有的文件总数】,i是网页中使用的单词,t(i)是该单词在所有文件总数中出现的【文件数】:

                          

单词出现的机会小,与出现机会大的单词比更重要。

3. 将tf(i,j)与idf(i)相乘,以某一特定文件内的高单词频率,呈上该单词在文件总数中的低文件频率,便可以产生TF-IDF权重值且倾向于过滤掉常见单词,保留重要单词。

*************************************************

>install.packages("lsa")

>library(lsa)  # latent semantic analysis

>lsa.tfidf<-lsa(tfidf,dim=5)

>doc_vec<-as.data.frame(as.matrix(lsa.tfidf$dk))

>term_vec<-as.data.frame(as.matrix(lsa.tfidf$tk))

*************************************************

潜在语义分析即通过分析文章来挖掘文章的潜在语义,此处只提供R中代码,对LSA的具体解释可参考中文译版: https://blog.csdn.net/zhzhji440/article/details/47193731

*************************************************

五、结论

通过从推特提取600多条包含'A Quiet Place'的推特,清洗后做词云、词频矩阵等,可以看到大家多提到安静、电影院、惊悚、男女主角。男主角自导自演的此部影片,在北美口碑很好,还有两周时间在内地上映,推荐大家一定去电影院屏气凝神,体验出声就会死的紧张感。

https://cosx.org/2013/01/analysis-of-weibo/此篇文章介绍了R也可以链接微博获取资料,博主学习后计划之后用此工具探索更多有趣的问题。

参考资料:

Text Mining (Big Data, Unstructured Data)

http://www.statsoft.com/Textbook/Text-Mining

潜在语义分析

https://blog.csdn.net/zhzhji440/article/details/47193731

新浪微博文本分析初探

https://cosx.org/2013/01/analysis-of-weibo/

R语言文本挖掘tm包详解

https://www.jianshu.com/p/948eef869be3

相关文章

  • Twitter文本勘探-惊悚片《寂静之地》

    《寂静之地》(A Quiet Place)在北美上映后即问鼎首周末票房冠军,烂番茄上新鲜度达到97%。博主观影时也...

  • 《寂静之地》里的她,竟曾是那个时尚女魔头的小助理

    在美国备受好评的惊悚片《寂静之地》不知大家看了没有,它在中国似乎有点水土不服,豆瓣评分仅6.5,和海外风评IMDB...

  • 你的内心足够强大,才能克服恐惧,这是一部让你来不及流泪的影片。

    节目完整视频 看了《寂静之地》,笔者想说,这是一部让自己赏心悦目的惊悚片。说它赏心悦目,是因为影片让你在美轮美奂的...

  • 《寂静之地》曝导演特辑 “无声”世界生存不易

    约翰·卡拉辛斯基执导并与好莱坞女星艾米莉·布朗特共同主演的惊悚片《寂静之地》将于5月18日在中国内地上映。今日片方...

  • 《寂静之地》

    看完这部电影,我对无声世界产生了无限的恐惧,很难想象,如果我的世界变得那么寂静,我会怎样存活,具有说话的能力但被限...

  • 寂静之地

    由于外来物种入侵,该物种没有视力对发声物会进行攻击。因此活下来的人们都不会发出声音,他们运用手语进行交流平...

  • 《寂静之地》

    520,这个节日,我选择这样过。之前赢了马拉松票,定好今天看《寂静之地》。 因为物种入侵,人们只能打手语,不能发出...

  • 寂静之地

    一场电影《寂静之地》,一种外星生物来袭后,对于地球上一个小镇的的影响,大家过上了无声的生活,赤脚走路,手语交流,生...

  • 寂静之地

    写一个真实的观影的表现,首先由于迟到导致电影放映几分钟后才进入影院,好家伙偌大的地下一号厅拢共七个人!说好的全美最...

  • 寂静之地

    寂静之地 寂静之地草木皆兵 寂静之地四面楚歌 寂静之地万马齐喑 寂静之地只有魔兽 肆无忌惮的喧嚣饕餮天地 吞噬掉所...

网友评论

    本文标题:Twitter文本勘探-惊悚片《寂静之地》

    本文链接:https://www.haomeiwen.com/subject/pxyudftx.html