文献计量学系列29:关键词中的同/近义词合并

导读
系列27探索了如何把作者关键词(DE)和数据库添加关键词(ID)进行合并,并做简单的清洗。本期将介绍合并后的关键词中的同/近义词的合并,即用同一个词来表示所有意思相近的词。该过程需要一定的专业背景知识,因为,我们需要知道在专业范围内题录数据库中哪些关键词是同/近义词。同/近义词合并过程是相当繁琐的,数据量越大,工作量越多,往往需要反复合并或是逐步合并。本期先向大家介绍带有符号的关键词中的同/近义词清洗与合并。
<<<<<<<<<课程推荐>>>>>>>>>
R文献计量学基础篇已上线!

内容涵盖文档作者期刊研究机构国家等相关文献计量学指标分析

更多自定义函数

一次性获取较多文献计量指标

让学习更轻松!

学习力,才是最大的竞争力!扫码约我吧!

<

一、数据导入与处理

pacman::p_load(bibliometrix, tidyverse, pluralize, do) D <- "E:/精鼎统计/savedrecs.txt "M <- convert2df(D, dbsource = 'wos', format = 'plaintext')M$DEID <- merge_field(M$DE,M$ID)#合并DE和ID,系列27内容封装成函数,具有简单清洗功能,如去重,复数变单数m <- M[-which(is.na(M$DEID)),]#去除DEID为空值的行,并赋值给新数据m

二、自定义函数构建

由于我们需要逐步合并,需要多次运行相同的代码。如果一段代码需要重复运行三次及以上,那么我们就可以考虑封装这段代码,使其成为一个函数。

(一)合并函数Synonyms_merge
Synonyms_merge <- function(Terms, synonyms, sep = ';'){ listTERMS = strsplit(Terms,split= sep) synonyms = toupper(synonyms) listTERMS = lapply(listTERMS,function(l){ s = strsplit(synonyms,split=";") for (i in 1:length(synonyms)){ ind = which(l %in% trim(s[[i]])) if (length(ind)>0){l[ind] = trim(s[[i]][1])} } return(l) }) TM = unlist(lapply(listTERMS,function(l){ l = paste0(l,collapse=";") })) return(TM)}
Terms:关键词向量
synonyms: 同/近义词向量,大小写均可
sep: 关键词和同/近义词分隔符
(二)关键词词组转为多个关键词函数Phrases2keywords
Phrases2keywords <- function(Terms, phrases2keywords, sep = ';'){ listTERMS = strsplit(Terms,split= sep) phrases2keywords = toupper(phrases2keywords) listTERMS = lapply(listTERMS,function(l){ l = Replace(l,pattern = phrases2keywords) l = unique(l) return(l) }) TM = unlist(lapply(listTERMS,function(l){ l = paste0(l,collapse=";") })) return(TM)}
Terms:关键词向量
phrases2keywords:词组转为多个关键词向量,大小写均可
sep: 关键词分隔符

三、特殊的同/近义词合并

所谓特殊的同/近义词即其带有特殊的字符,比如“AND”、“&”、“/”,或者是带有数字等。不同的专业特殊字符可能不一样,这些字符在专业内是有意义的,在清洗当中不能去除。接下来专门针对这些关键词进行处理。
m$DEID <- gsub("[^[:alnum:][:blank:]\\/\\;\\&]", "", m$DEID) #除字母数字、空格、“/”、“;”、“&”外,去除其他所有字符
除分隔符“;”一定也要保留外,其他符号是否需要保留,根据专业或需要确定。一般“AND”或“&”可以保留。因为,带有“AND”或“&”符号的关键词词组可能是多个关键词的组合,需要分开。接下来探索将带有“AND”的关键词分开。
DEID[grep(' AND ',DEID$Tab),]#查看带有“AND”的词组 # Tab Freq# 397 O AND H ISOTOPE 2# 441 STABLE HYDROGEN AND OXYGEN ISOTOPE 2# 495 18O 2H AND 3H 1# 686 DELTA D AND DELTA O 18 1# 692 DEUTERIUM AND OXYGEN ISOTOPE 1# 766 EVENT AND PRE EVENT WATER 1# 851 GROUNDWATER AND SURFACE 1# 895 HYDROGEN AND OXYGEN 1# 937 INFILTRATION AND INFLOW 1# 956 ISOTOPIC AND GEOCHEMICAL TRACER 1# 959 ISOTOPIC EXCHANGE BETWEEN LIQUID AND ICE 1# 1009 LOW TECH AND LOW COST 1# 1282 SNOW AND ICE MELT 1# 1291 SNOWMELT AND GLACIER MELT DYNAMIC 1# 1335 STABLE AND RADIOACTIVE ISOTOPE 1# 1341 STABLE OXYGEN AND HYDROGEN ISOTOPE 1# 1405 TEMPORAL AND SPATIAL VARIATION 1# 1498 WATER ISOTOPES AND ELECTRICAL CONDUCTIVITY 1
我们发现“STABLE HYDROGEN AND OXYGEN ISOTOPE”、“O AND H ISOTOPE”、“DELTA D AND DELTAO 18”、“DEUTERIUM AND OXYGEN ISOTOPE”、“STABLE OXYGEN AND HYDROGEN ISOTOPE”词组代表了相同的意思,均是由“DEUTERIUM”和“OXYGEN STABLEISOTOPE”关键词及其同/近义词组成的。因此,我们先要将这些词合并,然后再将其分开成这2个关键词。
synonyms_and <- 'STABLE HYDROGEN AND OXYGEN ISOTOPE;O AND H ISOTOPE;DELTA D AND DELTA O 18;DEUTERIUM AND OXYGEN ISOTOPE;STABLE OXYGEN AND HYDROGEN ISOTOPE'#需要合并的关键词向量m$DEID <- Synonyms_merge(Terms = m$DEID, synonyms = synonyms_and) #所有的关键词统一转化为第一个“;”之前的关键词,即“STABLE HYDROGEN AND OXYGEN ISOTOPE”
然后将带有“AND”的关键词词组分开成多个关键词。
phrase2words <- c('STABLE HYDROGEN AND OXYGEN ISOTOPE:DEUTERIUM;OXYGEN STABLE ISOTOPE', '18O 2H AND 3H:OXYGEN STABLE ISOTOPE;DEUTERIUM;TRITIUM', 'EVENT AND PRE EVENT WATER:ENENT WATER;PRE EVENT WATER', 'GROUNDWATER AND SURFACE:GROUNDWATER;SURFACE-WATER', 'ISOTOPIC AND GEOCHEMICAL TRACER:ISOTOPIC TRACER;GEOCHEMICAL TRACER', 'LOW TECH AND LOW COST:LOW TECH;LOW COST', 'SNOW AND ICE MELT:SNOWMELT;ICE MELT', 'SNOWMELT AND GLACIER MELT DYNAMIC:SNOWMELT;GLACIER MELT', 'STABLE AND RADIOACTIVE ISOTOPE:STABLE ISOTOPE;RADIOACTIVE ISOTOPE', 'TEMPORAL AND SPATIAL VARIATION:TEMPORAL VARIATION;SPATIAL VARIATION', 'WATER ISOTOPES AND ELECTRICAL CONDUCTIVITY:WATER ISOTOPES;ELECTRICAL CONDUCTIVITY' ) #构建词组转多个关键词向量
m$DEID <- Phrases2keywords(Terms = m$DEID, phrases2keywords = phrase2words)#“:”前面的关键词转为“:”后面的关键词,即“STABLE HYDROGEN AND OXYGEN ISOTOPE”转变为“DEUTERIUM;OXYGEN STABLE ISOTOPE”。
至此,我们完成了带有“AND”特殊关键词的处理与合并。在此,我们再进一步探索带有数字的特殊关键词的处理。做此类关键词处理时,我们先看数字是否具有特殊意义,有意义的需要根据专业背景知识进行转换,没有意义的或不是专业内主要的或词频较低的关键词均可暂时保留,之后再统一处理。
DEID[grep('\\d',DEID$Tab),]#查看带有数字的关键词# Tab Freq# 23 O 18 32# 25 OXYGEN 18 30# 53 DELTA O 18 14# 130 2 COMPONENT 6# 136 HYDROGEN 2 6# 178 3 COMPONENT 4# 186 DELTA H 2 4# 321 CARBON 13 2# 356 GLACIER NO 1 2# 492 1/F 1# 493 18O 1# 494 2 AGRICULTURAL HILLSLOPE 1# 495 2 FORESTED 1# 496 3 COMPONENT TRACER MODEL 1# 606 CARBON 14 1# 648 CO2 OUTGASSING 1# 684 DELTA18O 1# 888 HYDROGEN 3 1# 1090 NO 1 1# 1106 O 18 ISOTOPE 1# 1119 OXYGEN 18 COMPOSITION 1# 1127 PART 2 1# 1218 RN 222 1# 1247 SEAWATER SR 87/SR 86 1# 1258 SF6 1# 1327 SR 87/SR 86 RATIO 1# 1376 SURFACE PARAMETERIZATION SIB2 1
带有数字的关键词多数是我们需要的,我们据此构建一个带数字的关键词转换向量。
# Synonyms_number <- c("OXYGEN STABLE ISOTOPE;O 18;OXYGEN 18;DELTA O 18;18O;DELTA18O;O 18 ISOTOPE;OXYGEN 18 COMPOSITION",# "TWO COMPONET;2 COMPONENT", # "DEUTERIUM;HYDROGEN 2;DELTA H 2", # "THREE COMPONENT;3 COMPONENT;3 COMPONENT TRACER MODEL", # "CARBON STABLE ISOTOPE;CARBON 13", # "CARBON FOURTEEN;CARBON 14", # "TRITIUM;HYDROGEN 3", # "RADON ISOTOPE;RN 222", # "SR ISOTOPE;SEAWATER SR 87/SR 86;SR 87/SR 86 RATIO")#数字关键词转换向量# # m$DEID <- Synonyms_merge(Terms = m$DEID,synonyms = Synonyms_number)#所有数字关键词均转换为第一个关键词

至此,带有“AND”和数字的特殊关键词已做处理。同时,大家可以根据研究的需要,对带有其他符号的特殊关键词做类似的处理。

五、小结

本节我们讲解了带有特殊符号的同/近义词合并过程。如果特殊同/近义词数量较多,可以在Excel中排版,然后通过rio包的import函数导入,再将其格式转换为向量。下一期,我们将讲解bibliometrix包中关键词处理与清洗函数termExtraction,并改造该函数,尽可能地清洗关键词,使之符合数据分析要求。

(0)

相关推荐