我想使用我在文本中使用R tm包识别的模式从txt(或HTML)文档中提取日期。我的电脑上有报纸文章data_X_txt和data_X(HTML格式)。每个文件夹都包含以公司命名的文档,该公司包含一个txt或html文档中的所有报纸文章。我从Lexis Nexis下载了这些HTML文档。
对于每个文档,我想知道所包含文章的上传日期。我发现在UPDATE后面的每篇文章都给出了Uploaddate:。
所以我发现这个问题与我的问题类似 Extract unknown words from a recurrent pattern
但我在解决方案方面遇到了一些问题 首先,我不知道如何正确地将我的数据从单个文档上传到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
答案 0 :(得分:0)
如果您需要的只是日期,文本挖掘包将无济于事,但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:
后跟一个空格,然后是一个0到10个字符的可选集合,对应于德语中一周的(可选)日期,一个可选空格, 1到2位数字,一个句号(由\\
转义,因为原因)大写字母,英文字母和ä的所有小写字母,以2到8个字母的顺序,后跟一个空格,后跟一个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"