⽂献关键词共现矩阵python实现
预备知识:
怎么才能赚到钱⽂章关键词
关键词是指表⽰⽂献实质意义的那些名词或词组,常出现在⽂献篇名或⽂献正⽂中。
关键词是科技论⽂的⽂献检索标识,是表达⽂献主题概念的⾃然语⾔词汇。科技论⽂的关键词是从其题名、层次标题和正⽂中选出来的,能反映论⽂主题概念的词或词组。
关键词是为了适应计算机检索的需要⽽提出来的,位置在摘要之后。早在1963年,美国Chemical Abstracts从第58卷起,就开始采⽤电⼦计算机编制关键词索引,提供快速检索⽂献资料主题的途径。在科学技术信息迅猛发展的今天,全世界每天有⼏⼗万篇科技论⽂发表,学术界早已约定利⽤主题概念词去检索最新发表的论⽂。作者发表的论⽂不标注关键词或叙词,⽂献数据库就不会收录此类⽂章,读者就检索不到。关键词选得是否恰当,关系到该⽂被检索和该成果的利⽤率。
共现矩阵
通过对⾼频主题词的词频统计分析,我们可以了解到⽬前某⼀专题领域⾥研究的热点。但是,仅仅对这
些主题词按照出现频次由⾼到低的排列还不能表现出这些⾼频主题词之间的联系,因此我们可以采⽤共现分析的技术来进⼀步挖掘这些主题词之间的联系。主题词的共现分析是根据主题词在同⼀篇论⽂中共同出现的次数来表⽰主题词之间的联系。⼀般认为,如果两个主题词频繁在同⼀篇论⽂中同时出现,往往表明这两个主题词之间具有⽐较密切的联系。这就是共现分析的理论基础。
python实现
⽂章关键词数据获取
在cnki中检索相关论⽂,如“中医”,在检索结果页⾯选择导出,导出格式⾃选,本⽂仅分析关键词共现,所以只选择⽂章名和关键词。如下图。
词频统计
如何外痔确定每个关键词出现的次数,称为词频。
import csv
originlines=[]
dict1={}
print 'read Book1.csv'
with open('Book1.csv', 'rb') as f:
reader = ader(f)
for row in reader:
originlines.append(row)
for word in row:
if word!='':
if dict1.has_key(word):
dict1[word]+=1
else:
dict1[word]=1
⾼频词选取
泰安出租所有关键词符合长尾分布,⼤量关键词词频为1次,词频较⾼的关键词才能反映出领域研究热点,词频较低的关键词体现单个⽂章的研究特⾊。词频较⾼的关键词才会有有意义共现矩阵。如下代码完成确定词频阈值。
print 'write the high frequency word to file'
from operator import itemgetter
sortedkeyword=sorted(dict1.iteritems(), key=itemgetter(1), reverse=True)
writer=csv.writer(open('highkeyword.csv', 'wb'))
writer.writerow(['keyword', 'frequency'])
for item in sortedkeyword:
writer.writerow(item)
lhighfrequencyword=[]
怎么踢足球frequency=int(input('please read the highkeyword.csv,and input the lowest frequency for keyword:')) for item in sortedkeyword:
if item[1] > frequency:
lhighfrequencyword.append(item[0])
⾼频词矩阵产⽣
遍历⽂章关键词列表,获得⾼频关键词矩阵。
print 'generate the matrix'
wordcount=len(lhighfrequencyword)
cormatrix= [[0 for col in range(wordcount)] for row in range(wordcount)]
for colindex in range(wordcount):
for rowindex in range(wordcount):
cornum=0
for originline in originlines :
if lhighfrequencyword[colindex] in originline and lhighfrequencyword[rowindex] in originline:                cornum+=1
cormatrix[colindex][rowindex]=cornum
print 'write matrix to file matrix.csv!'
主题词writer=csv.writer(open('matrix.csv', 'wb'))
writer.writerow(lhighfrequencyword)
for item in cormatrix:
新年祝福成语
writer.writerow(item)
print 'matrix OK!'
参考⽂献:
csdn的⽂章编辑器真烂啊,为什么没有离线编辑器呢。