使用R从文本中提取说话人干预?或者是其他东西?

时间:2018-11-19 04:12:04

标签: r text-mining

我们正在为学校开展一个文本挖掘项目,以研究魁北克国民议会中面向环境的演讲所占的比例。我们想提取多年来所有发言人的干预措施清单。

我们的文档都采用这种格式:

Mr. Smith : Blablabla

Mrs. Jones : Blablabla

我想做的是写出最简单的东西,使我能够提取这些干预措施。我在考虑以下问题:

”“每次您看到[****先生:]或[****先生:]时,请提取所有文本,直到您再次看到[****先生:]或[****夫人:]。并且,理想情况下,将所有Smiths先生,Joneses夫人和Williams先生提取在单独的文件中,同时跟踪干预来自哪个文件。 < / p>

我开始写一个非常基本的gsub行,该行允许我用@替换要替换的出现,只是意识到我不想完全替换它们,而只是添加了{{ 1}}的前面,这样可能会更容易编写将@s分隔在不同文件中的内容。

@

我刚刚开始为这个项目自学R,我需要一些下一步的知识。还是我应该改用其他东西?

1 个答案:

答案 0 :(得分:0)

如果您不想替换发言人姓名,则可以使用“正向看”,如下所示:

# some example data:
bla <- c("Mr. X : blablabla bla bla bla. Mrs. Y : bla bla blablablab Mr. XY : bla bla balblabla blabl abl" )

# replace with look ahead:
gsub("(?=(Mr.|Mrs.))", "@ ", bla, perl = T)
"@ Mr. X : blablabla bla bla bla. @ Mrs. Y : bla bla blablablab @ Mr. XY : bla bla balblabla blabl abl"

@是提取单个干预的良好起点。可以这样完成:

pattern <- "@.[^@]*" 
matches <- gregexpr(pattern, bla)
interventions <- regmatches(bla, matches)
interventions <- unlist(interventions)
interventions
[1] "@ Mr. X : blablabla bla bla bla. "      "@ Mrs. Y : bla bla blablablab "         "@ Mr. XY : bla bla balblabla blabl abl"