【问题标题】:R extracting job titles from list of sentencesR从句子列表中提取职位
【发布时间】:2018-12-01 18:28:17
【问题描述】:

我目前正在编写一个脚本(R 语言),以从来自各种公司高管传记的句子中提取职称。我有一个职位列表和传记中的句子列表,我想知道如何提取每个句子中的职位列表。我已经尝试将句子分解成单词(与职位名称相同)并使用 %in% 匹配它们,它可以工作,但它不会提取整个短语(董事会只是“董事会”和“董事”我不能包含“of”,因为一堆不想要的会被拉出来”

job_title <- list("board of directors", "VP of sales")
sentences <- list("He was a member of the board of directors", "He joined as 
VP of sales", "He was born in 1968")

所以基本上我想要一些代码来查看每个句子,将其与 job_title 匹配并提取职位名称,结果是: “董事会”和“销售副总裁”的名单。 非常感谢!

【问题讨论】:

  • 试用包stringrstringr::str_extract(unlist(sentences), unlist(job_title)) .
  • 这就是我目前用于单个单词的!这可以从句子中提取整个短语吗?
  • @Dyem 我建议您包含您尝试过的部分代码以及您用来寻找合适解决方案的库。
  • @Rui Barradas,我尝试了您的建议并收到警告:“警告消息:在 stri_extract_first_regex(string, pattern, opts_regex = opts(pattern)) 中:较长的对象长度不是较短的倍数对象长度”
  • 当我在更大的数据集上使用它时,它似乎也只是出于某种原因从句子中提取了一些职位(一两个)。

标签: r list nlp feature-extraction sentence-similarity


【解决方案1】:

也许你可以这样做:

for (i in 1:2) {
  if(i == 1) {
    # check for board of directors
    dir_list <- as.integer(grepl(job_title[1], sentences, fixed=TRUE))
  } else {
    # check for vp sales
    cp_list <- as.integer(grepl(job_title[2], sentences, fixed=TRUE))
  }
}

这给出:

dir_list as 1, 0, 0 and cp_list as 0, 1, 0

其中 1 表示在相关句子中找到了您要查找的字符串。例如,在第 1 句中找到了 board of board,在第 2 句中找到了 vp sales。因此,如果您在一个句子中同时拥有这两个列表,则两个列表都为 1,如果没有找到,则为 0。您现在可以根据自己的要求选择要对这些值执行的操作。

【讨论】:

  • 嗯,这很接近,也许我可以凑合。理想情况下,我希望输出是出现的所有职位的列表
  • 我无法理解您的第二句话,但很高兴知道它与您的要求足够接近,如果属实的话。
  • 理想情况下,输出将是一个列表类型的对象,其中包含(“董事会”、“销售副总裁”)
  • 您能否将您的示例输出发布为表格/数据框,我不太能理解您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2020-07-23
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-03-06
相关资源
最近更新 更多