【问题标题】:Adding columns that are results of (contextual) text mining operations添加作为(上下文)文本挖掘操作结果的列
【发布时间】:2016-03-31 14:41:25
【问题描述】:

我正在处理带有序数变量的数据集以及带有文本的列。一般来说,我想添加作为文本挖掘练习结果的列,以维护表结构。

例如,我导入了一个CSV文件data-subset.csv,得到了一个名为datacsv的数据框

datacsv=read.csv("data-subset.csv", header=TRUE,sep=";")

第三列tekst 包含文本。我想在“fte”的上下文中搜索该文本中的数字(通常位于 0 和 1 之间)并将这些数字添加为列 fte。见:

>  luid  titel            tekst
>1 47300 docent wiskunde  De Stichting Openbaar Voortgezet Onderwijs 0,65
                          fte voltijd niveau: havo vwo
>2 43701 docent natuurkunde Speciaal onderwijs fulltime 2015 2016 fte 0,77 Haarlem
>3 43702 assistent        basisonderwijs Amsterdam fte 0,5 

我已经安装了 tmquanteda 之类的软件包

install.packages("tm", "quantada") library ("tm") library ("quanteda")

没有令人满意的结果,我尝试使用各种kwic语句,例如

datacsv ["fte"]<- kwic(datacsv$"tekst", "fte", 4)

有谁知道如何挖掘文本列并将结果添加为一列(或多列)?

谢谢!

【问题讨论】:

  • 所以它有带数字的字符串,你想提取数字吗?您应该在问题中包含可重现的示例。看看this
  • 欢迎来到 Stackoverflow!请提供minimal reproducible example
  • 谢谢你们俩。我已经编辑了我的问题。希望它现在更有用。

标签: r csv text-mining tm


【解决方案1】:

也许这行得通?

    library(dplyr)       
    mutate(datacsv, 
           fte = as.numeric(regmatches(tekst,regexpr("[[:digit:]]+\\.[[:digit:]]+", 
                                                     tekst))))

【讨论】:

    【解决方案2】:

    这个?

    library(stringr) 
    datacsv$fte <- str_extract_all(sapply(strsplit(datacsv$tekst, "fte "), "[", 2), '\\d+\\.*\\d*') 
    

    【讨论】:

    • 这是正确的方向。但是,我目前面临的问题是其他案例包含多个数字。因此,例如,变量tekst 也包含一年。这意味着 R 只提取那些位于术语“fte”周围的数字是必不可少的。另请参阅fte 位于案例之间的随机位置。
    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2019-05-05
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多