编程语言应用

首页 » 常识 » 常识 » 文本分析初体验一个小白的12小时
TUhjnbcbe - 2023/4/16 12:59:00

我为什么想起来要去整理顶刊?其实是同事提议的。

彼时我还在欢快的吃着火锅,手机上飘来一条信息:“你们发展心理学最近究竟在做什么?”

一时间竟大脑一片空白,于是我决心用数据说话,也给自己找找方向。

本次项目仅出于对领域研究现状和文本分析的好奇,并以此流程和大家分享一下小白在做文本分析时候遇到的坑,各种畏难情绪,和最后结果。

毕竟在文本分析的路上,我们不孤单。鉴于我还想把这个项目做下去,也希望大家多多交流(这一部分将在文章最后进行详细阐述)。

阶段1:一个粗糙的systematicreview是如何构成的:

Where,When,What篇

说到systematic,第一反应是去开数据库。

首先,因为只想分析顶刊,首先打开了JCR去查了发展心理学目前的杂志分区。

目前发展心理学(developmentalpsychology)SSCI类一共有77本,其中前17依次如下:

考虑到术业有专攻,决定去除所有偏临床/咨询有关的期刊(如排名第一的JournalofChildPsychologyandPsychiatry),最后留下七本。

DevelopmentalCognitiveNeuroscienceChildDevelopmentChildDevelopmentPerspectivesDevelopmentalReviewDevelopmentalScienceJournalofYouthandAdolescenceDevelopmentalPsychology

除了发展心理学类,经同事提醒,加入了nature,science和proceedingsofthenationalacademyofsciencesoftheunitedstatesofAmerica(PNAS)这三份综合性期刊。

其次,数据库信息采集:确定了期刊,直接打开Webofscience进行检索。

其中,7本发展心理学专业期刊检索并导出了到北京时间年11月2日中午12点30止所有的发表物。以ChildDevelopment为例,检索如下:

出版物名称:(childdevelopment)

数据库=WOS,CSCD,KJD,MEDLINE,RSCI,SCIELO时间跨度=-

检索语言=自动

对于三份总综合性期刊,其中对于PNAS,依旧限定在2年,并将主题限定在18岁以前。检索如下:

出版物名称:(PROCEEDINGSOFTHENATIONALACADEMYOFSCIENCESOFTHEUNITEDSTATESOFAMERICA)AND主题:(infant*ORtoddler*ORchildren*ORpreschool*ORadolescence*)

对于Nature和Science,考虑到它们涉及的主题实在是太多了,将时间放宽为5年,并将主题限定在18岁以前。以Nature为例,检索如下:

出版物名称:(nature)AND主题:(infant*ORtoddler*ORchildren*ORpreschool*ORadolescence*)

数据库=WOS,CSCD,KJD,MEDLINE,RSCI,SCIELO时间跨度=-

检索语言=自动

共导出检索文献篇,其中根据Webofscience提供的分析,主题分布如下:

但是这个远远不能解决“你们发展心理学究竟在做什么”这个问题,于是,我决定,进一步做文本分析。

第一阶段的一点点反思:正如一开始就说的,这个项目属于特别粗糙的systematicreview,比如在期刊上,一些心理学大类的综合期刊(如PsychologicalScience)还没有收纳进来。

另外剔除clinical类研究等于刨掉了发展心理学目前非常重要的一个部分。这些不足将在接下来的补充研究中进行改进和修正(毕竟一开始只是为了满足自己的好奇心,因此没有考虑周全)。

另外,尽管已经勾选,但是webofscience不知道为什么当时没法导出关键词,只导出了作者,题目,摘要,期刊名和发表时间。

这对于接下来的文本分析带来了一些麻烦。之后也许会通过其他数据库的交叉筛选(如PsycInfo)来做二次确认。

阶段2:编码还是不编码:

How篇

作为一个因为招不到被试而常年在小样本领域挣扎的人,拿到了多篇文章这样的数据量,第一反应就是,晕。

当时检索结果导出了三种形式:

1.BibTeX(.bib)直接导进文献管理软件Mendeley;

2.EXCEL(.xlsx);

3.制表符分隔(win,UTF-8)。

果断第一时间放弃了用Mendeley做文本分析的念头,开始处理2(excel)数据的方法。

首先,大概浏览了一下目前做文本分析的软件(如Rapidminer,WordStat8)和程序(如ROSTCM6)。

其中,WordStat8可能最符合我的需求,但是那个价格也确实让我无法负担。

Rapidminer上手也需要一段时间适应,而基于sideproject的定位,为了这个研究自己重新学习一个软件可能有些得不偿失。

因此在尝试和比较了大约两小时后,也果断放弃了第二个选项。

然而此时畏难情绪作祟,还是不想编程。我的R和Phyton都属于勉强入门水平,于是这个时候我想到的是,再找朋友问问,也许有开源简便易上手的工具。

在顺着建议去github查了一圈未果之后,获得了各位小伙伴的一致评价:方案可行,编程即可,很简单的,试一试没问题(在此谢谢大家的鼓励)。而压倒骆驼的最后一根稻草发生在我转向淘宝的一刻,对话如下:

再次表示这个店主还是非常靠谱和considering的!也请各位想去淘宝的同学先有一定的思路而不是像我一样直接傻乎乎的去问。但是痛定思痛要不然还是,自己写吧……

第二阶段的一点点反思:如果让我重新来,我会节省下研究各种软件的之间直接奔向编程这个决定。

回头想这一个阶段浪费了差不多3个半小时的时间,从一个效率的角度,还是要考虑的更全面一点。

阶段3:永远学R,永远热泪盈眶:

休止符篇

决定编程后首先在知乎上了解了一下需要的数据包。这里尤其感谢Manolo,HopeR,小农数据,Penroseasdf几位知乎er的帖子。总结如下:

然后就开始写代码了。首先是装各种包。

通过Rstudio里面的tools-installpackage即可实现。接着是用library把包导进来。

这里需要注意有一些包需要搭配使用(比如quanteda和readtext)。我是将所有我觉得需要用到的包都先调用了,有些其实后面没用上,如下

“library(wordcloud2)

library(dplyr)

library(tidytext)

library(readtext)

library(quanteda)”

接下来是导数据。WebofScience每次最多导出个条目,因此共导出5个文件。通过quanteda可以实现批量导入“mytf5-readtext(E:/data/baseoverall/*.txt)”

但是很快就发现在后面的合并过程中有点复杂,为了节省时间,以及为了仅考虑重点信息(题目+摘要),对数据进行了处理:

删除了期刊等信息(为了节省时间和出错的可能性),只保留了题目和摘要两个部分,以及合并为一个文档(文件名为:titleandabstract.pdf)。

再次导入,用Tidytext包中的unnest_tokens进行数据结构重建,并且使用%%function进行转化

“mytf5-readtext(E:/data/baseoverall/titleandabstract.pdf,docvarsfrom=filename)%%unnest_tokens(word,text)”

接着调函数,进行计算和图输出,如下

“mytf5-readtext(E:/data/baseoverall/titleandabstract.pdf,docvarsfrom=filename)%%unnest_tokens(word,text)

myfile-mytf5%%count(word,sort=TRUE)

View(myfile)

wordcloud2(myfile,backgroundColor=lightpink)”

可以看到导出的图有很大问题:

问题原因是没有去词。因此加上,

“data(stop_words)

mytf5-readtext(E:/data/baseoverall/titleandabstract.pdf,docvarsfrom=filename)%%unnest_tokens(word,text)%%anti_join(stop_words)”.

Drop之后再进行词频统计和输出结果就正常多了,如图

其中词频分析数据可以直接导出

“write.csv(myfile,E:/data/baseoverall/myfile.csv)”,排名前20的单词及其词频如下:

第三阶段反思:至此好奇心基本得到满足。但是在这一过程中还是有一些不确定的地方。

比如,第一,我的代码其实是一个大杂烩,调用了很多的包和工具。据我所知quanteda的功能很强大,但是目前我可能连1%都没用到。

因此未来还需要根据某一个包好好的学习和使用下去。

第二,英文是否需要进行分词?我个人是加载了quanteda使用Mix方法进行了分词,但是我不确定这个是否必要。

第三,如图所示在词频中目前还没有drop掉数字,考虑到是针对主题的研究,在考虑下一步需要把numbers也剔除。

第四,还需要根据目标(了解研究主题)进行哪些调整,比如现在adolescent和adolescence还是分开统计各自的词频,从做review的目标出发,是否应该将其合并统计?

第五,目前只总结了英文资料,还没有开始总结中文资料(因为还不会中文分词),将在后续补充进来。

阶段4:未来……

作为一个没有接受过文本分析训练的人,在享受FUN的过程中也对这一种方法产生了浓厚的兴趣。

而作为一个研究者,当然也想谈谈理想和未来想做的事情。目前我首先得认真自学一下文本分析的步骤和规范,完善现有的数据分析,将行业现状这一部分尽快发布出来。

在这之后,我是想持续的做一个公益性的文本分析项目。根据情况这个项目将分为两部分:

基础部分是定期(比如6-12个月)为大家提供一下研究现状总结,以及进行一下未来研究方向的预测(参见知乎Manolo答主的文章:量化文本分析:利用文本数据进行因果推论)。

附加部分是,如果有合作者,我想和小伙伴一起定期抓取和整理网络上关于发展心理学研究问题的数据(比如在育儿上大家经常提出的问题),让研究者可以把自己的研究和现实需要更好的结合起来。

欢迎拍砖,期待交流。未完待续,敬请期待。

本文转载自:荷兰心理统计联盟,作者:宋玥

排版:陈阳、shirly

1
查看完整版本: 文本分析初体验一个小白的12小时