如何在R中查找文本中的特定句子?

时间:2016-04-26 23:07:54

标签: r text

我有一个数据集,很多人都在为某些工作提供帮助。关键是我想从每个评论中检索一些.txt文件中的特定句子。到目前为止,我还没有成功地做到这一点。

score.sentiment <- function(sentences, pos.words, .progress='none')
{
  require(plyr)
  require(stringr)
  scores <- laply(sentences, function(sentence, pos.words){
sentence <- gsub('[[:punct:]]', "", sentence)
    sentence <- gsub('[[:cntrl:]]', "", sentence)
    sentence <- gsub('\\d+', "", sentence)
    sentence <- tolower(sentence)
    word.list <- str_split(sentence, '\\s+')
    words <- unlist(word.list)
     pos.matches <- match(words, pos.words)
     score <- pos.matches
    return(score)
  }, pos.words, .progress=.progress)
  scores.df <- data.frame(text=sentences)
  return(scores.df)
}
results <- score.sentiment(sentences = serv$service_description, pos.words)

文本文件名为pos.words,它包含西班牙语句子:

 tengo 25 años
 tengo 47 años
 tengo 34 años

另一个文件包含一个名为services的变量,其中包含每个人的评论,解释他们的能力,教育程度等。而我想做的就是从他们写的文本中获取他们的年龄。

来自服务文件的示例:

"Me llamo Adrián y tengo 24 años. He estudiado Data Science y me gusta trabajar en el sector tecnológico"

所以从这个样本中我想要达到我的年龄。到目前为止,我的想法是创建一个pos.words.txt,其中包含西班牙语中所有可能的句子,说明年龄并将其与评论文件相匹配。

到目前为止出现的主要问题是我无法创造正确的功能;我不知道如何让R从pos.words.txt中识别整个句子,因为目前它将每个单词都作为一个字符。除此之外,我在这里发布的解释我的功能的代码片段没有用(暴徒生活......)

我真的很感激帮助解决这个问题!!

非常感谢你的帮助!!

阿德里安

1 个答案:

答案 0 :(得分:1)

这会分成句子并捕获“tengoaños”的最后一个例子:

inp <- "blah blah blah tengo 25 años more blah.
  Even more blha then tengo 47 años.
  Me llamo Adrián y tengo 34 años."
rl <- readLines(textConnection(inp))  # might need to split at periods
     # Then use a capture class to get the digits flanked by "tengo" and "años"
gsub("^.+tengo[ ](\\d+)[ ]años.+$", "\\1", rl)
[1] "25" "47" "34"