使用 R 从 txt/HTML 文件中提取未知日期

Extracting unknown dates from txt/HTML files using R

我想使用我在文本中使用 R tm 包识别的模式从 txt(或 HTML)文档中提取日期。我的 PC 上的文件夹 data_X_txt 和 data_X(在 HTML 中)有报纸文章。每个文件夹都包含以公司命名的文档,其中包含一个 txt 或 html 文档中的所有报纸文章。我在 HTML 中从 Lexis Nexis 下载了这些文档。

对于每个文档,我想知道所包含文章的上传日期。我确定在 UPDATE:.

一词之后为每篇文章提供了 Uploaddate

所以我发现这个问题和我的问题很相似

但我在解决问题时遇到了几个问题。
首先,我不知道如何将我的数据从单个文档正确上传到 R 中,以便使用正则表达式公式进行进一步处理。

其次,我自己在理解和应用子公式方面存在问题。请参阅我发现的这个公式:

sub("^(?:https?:\/\/)?[^\/]+\/([^\/]+).*$", "\1", tmp[,5])

我很难使 sub 的模式部分(我假设的第一部分)适应我的问题。 我也不知道第二部分是什么意思。对于第三部分,我知道这是文本的来源,但我不知道 [5] 是什么意思。

这里是完整的代码:

tmp <- read.csv("LaVanguardia_facebook_statuses.csv")
sub("^(?:https?:\/\/)?[^\/]+\/([^\/]+).*$", "\1", tmp[,5])

还有一个我用的txt文件: https://www.dropbox.com/s/e24ywni8z3s8wqk/SolarWorldAG_25.03.2008_1.HTML.txt?dl=0

我目前对 R 的了解是 Swirl 课程,特别是关于文本挖掘的课程 https://rstudio-pubs-static.s3.amazonaws.com/31867_8236987cf0a8444e962ccd2aec46d9c3.html

如果您只需要日期,文本挖掘包将无济于事,但 R 的正则表达式功能非常有用。

要具体实现您的要求,请尝试 gregexpr w/ regmatches:

fileName <- "~/Downloads/SolarWorldAG_25.03.2008_1.HTML.txt"
mytxt <- readChar(fileName, file.info(fileName)$size)
regmatches(mytxt, regexec("UPDATE:",mytxt))

regmatches(mytxt, gregexpr(
"UPDATE: [A-Za-z]{0,10} ?[0-9]{1,2}\. [A-Z]{1}[a-z|ä]{2,8} [0-9]{4}", 
mytxt))

它用英语表示:查找文字 UPDATE: 后跟 space,然后是可选的 0 到 10 个字符集,对应于一周中的(可选)日期德语,一个可选的 space,一个 1 到 2 位数字,一个句点(由于某些原因被 \ 转义)一个大写字母,英文字母表中的所有小写字母和 ä,按以下顺序排列2 到 8 个字母,后跟 space,然后是 4 位数字。

你得到:

[1] "UPDATE: 18. März 2008"      "UPDATE: 14. März 2008"     
[3] "UPDATE: 13. März 2008"      "UPDATE: 14. März 2008"     
[5] "UPDATE: 28. Februar 2008"   "UPDATE: 20. Februar 2008" 
...
[189] "UPDATE: 31. Dezember 2004"      "UPDATE: 3. Januar 2005"        
[191] "UPDATE: 9. Dezember 2004"       "UPDATE: 23. November 2004"