社会学主要期刊的话题演变(上-Topic Modeling)
某门课的期末作业心血来潮想用一些NLP方法来看看在社会学的主要期刊上发表的论文的主题变化,就想办法下载了五本主要社会学期刊的绝大部分论文的pdf(差不多占总量的3/4,剩下的1/4主要是比较古早<1950年的论文、因为格式问题难以转成txt、web of science上提供的DOI有问题)。这些pdf被转成txt后我又用了一些regular expression规则清除掉了大部分无用信息,像版权信息,references等等,之后匹配好年份、期刊之类的信息。这些期刊包括AJS,ASR,SF,SP,以及Demography。其中缺失最严重的是social problem,2000年以前的论文都很难下到。其他几个期刊则从3/4到几乎全部论文不等。
我用的是structural topic model,大概跑了整整两天左右的代码才找到最佳的模型(大概每个不同参数的模型要跑4-7小时不等)。我的这些数据中最佳的topic数量是110(held-out likelihood最高)。当然,在建模之前当然也花大力气也清理了数据,除了清楚了大部分无用信息外,我也去除了stop words、标点、数字等等,也转换了大小写并对数据做了轻度的lemmatization。除此之外,如果某个词在小于20篇paper中出现(罕见词),他们也会被删除。在初步清理过后,数据中一共有近280万unique words(它们在论文中一共出现了约2000万次),删除这些罕见词后,数据中只剩下了约五万unique words(不过他们一共在论文中出现了近1600万次)。当然,这些都是NLP建模前的常规操作。
以前我一直嫌弃topic modeling不太好用,但这次用到1.5万篇非常长的文本中,效果真的特别惊人。几乎所有的topic几乎都是一眼就能识别,而且很多topic都是fine-grained(主要根据FREX,Lift和Score来判断topic意思,这些大多综合考虑了prob+exclusivity,highest prob有时候不能提供太多信息,因为会有高频但非常generic的词,尤其是在几个相近的话题之间)。举例来说,Topic 1是社会层面的照顾小孩,Topic 2则是母亲层面的照顾小孩,Topic 5和18分别是人口学的生育和死亡问题,而Topic 7是更加广义和理论上的性别问题。其实很多论文中在讨论这些问题时是会合在一起讲的,但topic model的确也能把它们区分开来。








当然,我们也可以看这些topic之间的相关性。比如表中展示了和topic 1最相近的一些话题,除了比较实质性的内容外,像和topic 1比较相近的35指的是回归分析。
之后我也看了一下某些话题的temporal trends。









这些图实在是太符合常识了,比如LGBT研究在1980年左右兴起,极左极右运动的研究在二战前后是高峰,结构主义/后现代主义理论从1975年开始起航。比如AJS和ASR更注重理论,而Demography最不注重理论(即便趋势还是上升的)。AJS没有ASR和SF定量,最定量的是Demography等等等等。



最后我把每篇论文看成是一个由topic proportion构成的110维向量,之后再scale整个matrix后做了一个基于tsne降维后的可视化。(其实也可以做聚类,但我没时间去跑算法了)。
首先,很明显论文的总体话题随着时间的推移是有很明显变化的(从深到浅=从1900到2020)。然后各个期刊除了Demography偏安一隅外,其他几个期刊的paper深深的交缠在一起,说明除了Demography主题独特外,其它都整体相似。但在局部他们也有些不同。比如第三幅三维图是1980年以后AJS和ASR的论文分布,AJS有一部分论文集中在左下角,但似乎ASR对这个空间所代表的话题并不关注。
当然,topic modeling再fine-grained也只是表现一个比较大的领域。想要知道对某些概念或话题的讨论是怎样变化的,可以用word embedding去看,等我有空了再来加下半部分。以及说起来,可以把从pdf转txt开始到模型都打包成一个pipeline做个网页,大家上传一篇pdf的论文就能自动跳出这篇社会学论文包含了哪几个 topic(上传的论文不需要是这些期刊里的),以及和哪些文章相似。也可以加个模型来定位文章那些部分是哪些topic来帮助阅读。。。虽然估计我也没时间做。。。
最后附上110个topic。
110个话题不同metrics下选出的最能代表话题的15个词。
里面有些topic还是有点问题的,比如版权信息没清干净,有些topic就是关于版权信息。以及有些古早pdf文本在识别转换成txt有点问题,所以就有了topic 55。










