我们正在为学校开展一个文本挖掘项目,以研究魁北克国民议会中面向环境的演讲所占的比例。我们想提取多年来所有发言人的干预措施清单。
我们的文档都采用这种格式:
Mr. Smith : Blablabla
Mrs. Jones : Blablabla
我想做的是写出最简单的东西,使我能够提取这些干预措施。我在考虑以下问题:
”“每次您看到[****先生:]或[****先生:]时,请提取所有文本,直到您再次看到[****先生:]或[****夫人:]。并且,理想情况下,将所有Smiths先生,Joneses夫人和Williams先生提取在单独的文件中,同时跟踪干预来自哪个文件。 < / p>
我开始写一个非常基本的gsub
行,该行允许我用@替换要替换的出现,只是意识到我不想完全替换它们,而只是添加了{{ 1}}的前面,这样可能会更容易编写将@s分隔在不同文件中的内容。
@
我刚刚开始为这个项目自学R,我需要一些下一步的知识。还是我应该改用其他东西?
答案 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"