0

我已阅读以下文本文件并遇到以下问题,


文件名:QnA.txt


问:你叫什么名字?

答案:XXX

问:请告诉我你的地址?

答案:XXX, xxxx-ssss, 00000

问题:告诉我其他细节

答案:当然,......


txt <- "directory path"
QuesAnsFiles <- Corpus(DirSource(txt, encoding = "UTF-8"),readerControl = list(language = "lat"))

我已经在语料库中阅读了这个文本文件,现在我必须在该文件中进行一些文本挖掘,为此我必须将每个语料库文件创建到一个数据帧中,例如:

df <- data.frame(Question='',Answer='')

我怎样才能阅读每个语料库并转换成我想要的数据框......?

更多理解说明:

df$Question会显示所有问题,相应地df$Answer会显示对应问题的答案

请提出解决此问题的适当方法,稍后我将重点关注速度...

4

2 回答 2

2

使用 将文件读入字符向量readLines,然后使用正则表达式提取您需要的部分。

library(stringr)
lines <- readlines("your file")
questions <- str_match(lines, "Question: (.*)")[, 2]
answers <- str_match(lines, "Answer: (.*)")[, 2]
data.frame(
  Question = questions[!is.na(questions)],
  Answer   = answers[!is.na(answers)]
)
于 2013-06-20T12:28:32.103 回答
1

我认为您可以使用qdap 版本 1.1.0轻松完成这项任务。首先 qdap 具有read.transcript读取您拥有的成绩单数据的功能。然后通过重新排序,sentCombine我们可以按人组合:

dat <- read.transcript(text="Question: What is your name?
Answer: XXXX
Question: Please tell me your address?
Answer: XXX, xxxx-ssss, 00000
Question: Tell me other details
Answer: sure, ................", col.names =qcv(person, text))


with(dat[order(dat$person), ], sentCombine(text, person))

##     person                                                   text.var
## 1   Answer                     XXXX XXX, xxxx-ssss, 00000 sure, .....
## 2 Question What is your name? Please tell me your address? Tell me...

另请注意,qdap 版本 1.1.0添加了许多功能以与 tm 包集成。查看?tdm更多。

我也直接在这里读取数据。实际上,您想使用read.transcript("directory path"). 这适用于 txt、csv、xlsx 和 docx 文件。

于 2014-02-28T04:26:45.103 回答