【发布时间】:2015-06-04 05:06:45
【问题描述】:
我有许多具有以下基本组成的大型文本文件:
text<-"this is a speech text. FIRST PERSON: hi all, thank you for coming. SECOND PERSON: thank you for inviting us"
如您所见,它由以下部分组成:1) 随机文本,2) 大写人物,3) 语音。
我已经设法在一个列表中分离出所有的单词:
textw<-unlist(strsplit(text," "))
然后我找到所有大写单词的位置:
grep(pattern = "^[[:upper:]]*$",x = textw)
我已经把人名分成了一个向量;
upperv<-textw[grep(pattern = "^[[:upper:]]*$",x = textw)]
期望的结果是这样的数据框或表格:
Result<-data.frame(person=c(" ","FIRST PERSON","SECOND PERSON"),
message=c("this is a speech test.","hi all, thank you for coming.","thank you for inviting us"))
Result
person message
1 this is a speech test.
2 FIRST PERSON hi all, thank you for coming.
3 SECOND PERSON thank you for inviting us
我无法将每条消息“链接”到其作者。
另请注意:有些不是作者的大写单词,例如“I”。如何仅在 2 个或多个大写单词彼此相邻的情况下指定分隔符?
换句话说,如果位置 2 和 3 是大写字母,则将位置 4 直到下一次出现双大写字母的所有内容都作为消息放置。
任何帮助表示赞赏。
【问题讨论】:
-
最后一个问题,可以在:upper:后面加一个分隔符{2},这样一排至少要有两个大写字母(至少可以避免“I”的问题。
标签: r text text-mining uppercase