【问题标题】:Extracting university names from affiliation in Pubmed data with R使用 R 从 Pubmed 数据中的隶属关系中提取大学名称
【发布时间】:2019-09-24 22:52:57
【问题描述】:

我一直在使用 R 中非常有用的rentrez 包从 Pubmed 数据库中获取有关作者、文章 ID 和作者隶属关系的信息。这工作正常,但现在我想从隶属关系字段中提取信息。不幸的是,隶属关系字段是广泛非结构化的,不是标准化的字符串,包含各种类型的信息,例如大学名称、部门名称、地址,更多由逗号分隔。因此,文本挖掘方法对于从该领域获取任何有用的信息是必要的。

我尝试了结合rentrez 的easyPubmed 包,尽管easyPubmed 包可以从附属字段中提取一些信息(例如电子邮件地址,这非常有用),但据我所知,它无法提取大学名称。我也尝试了 pubmed.mineR 包,但不幸的是,它也不提供大学名称提取。我开始尝试 grep 和 regex 函数,但由于我不是 R 专家,我无法完成这项工作。

我能够找到非常相似的线程来解决 python 的问题:

Regex for extracting names of colleges, universities, and institutes?

How to extract university/school/college name from string in python using regular expression?

但不幸的是我不知道如何将 python 正则表达式函数转换为 R 正则表达式函数,因为我不熟悉 python。

以下是一些示例数据:

PMID = c(121,122,123,124,125)
author=c("author1","author2","author3","author4","author5")
Affiliation = c("blabla,University Ghent,blablabla", "University Washington, blabla, blablabla, blablabalbalba","blabla,University of Florence,blabla", "University Chicago, Harvard University", "Oxford University")
df = as.data.frame(cbind(PMID,author,Affiliation))

df
PMID  author                                              Affiliation
1  121 author1                        blabla,University Ghent,blablabla
2  122 author2 University Washington, blabla, blablabla, blablabalbalba
3  123 author3                        blabla,University of Florence,blabla
4  124 author4                        University Chicago, Harvard University
5  125 author5                        Oxford University

我想得到什么:

PMID  author    Affiliation                        University
1  121 author1  blabla,University Ghent,blablabla  University Ghent
2  122 author2  University Washington,ba, bla, bla University Washington
3  123 author3  blabla,University Florence,blabla  University of Florence
4  124 author4  University Chicago, Harvard Univ   University Chicago, Harvard University
5  125 author5  Oxford University                  Oxford University

如果网上已经有解决方案,请抱歉,但老实说,我在 Google 上搜索了很多,并没有为 R 找到任何明确的解决方案。我将非常感谢您对此任务的任何提示和解决方案。

【问题讨论】:

    标签: r regex text text-mining pubmed


    【解决方案1】:

    一般来说,正则表达式可以通过一些更改移植到 R 中。例如,使用您包含的 php 链接,您可以使用该正则表达式创建一个包含提取文本的新变量,并且只更改转义字符(“\\”而不是“\”)。所以,使用dplyrstringr 包:

    library(dplyr)
    library(stringr)
    df <- df %>% 
      mutate(Organization=str_extract(Affiliation,
          "([A-Z][^\\s,.]+[.]?\\s[(]?)*(College|University|Institute|Law School|School of|Academy)[^,\\d]*(?=,|\\d)"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      相关资源
      最近更新 更多