会话挖掘处理

时间:2017-05-21 15:04:36

标签: r

我目前正试图从网站上抓取一些数据,以便进行词法分析。我对使用R进行数据挖掘很陌生,我只是将它用于与大学相关的问题,所以很抱歉有点不高兴。 我正试图从网站上抓取文字,如上所述。为此,我使用了以下命令:

 test <- strsplit(p_text, ":")

所以我现在有了文本对象中的所有段落。由于大多数这些文件都是对话,我只想保留来自某个人的行。示例:

  • Alice:你好
  • 保罗:你好吗?

我想找到一种方法来选择和提取保罗的部分(例如)。我尝试过这样使用 strsplit()函数:

public static class ModifyProgressBarColor
{
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
    static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr w, IntPtr l);
    public static void SetState(this ProgressBar pBar, int state)
    {
        SendMessage(pBar.Handle, 1040, (IntPtr)state, IntPtr.Zero);
    }
}

但我对结果有点失落......

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法可能是细分每行文字。一旦你有人们说出事情的每一行,在开头就有他们的名字,你可以使用

str_extract(a, "(?<=Paul: ).*")

在每个行中"Paul: "之后提取所有内容。

答案 1 :(得分:0)

假设您的文本输入是一个包含按照示例

格式化的字符串的数组
text_array <- c(
  "Alice: Hello",
  "Paul: How are you doing ?",
  "Alice: Good, you ?",
  "Paul: Awesome: thx"
)
speaker <- "Paul"

parsed_lines <- sapply(text_array,
      function(txt){
        delimiter_pos <- regexpr(":",txt)[[1]] # returns the position of first semi column, you may have to deal with exceptions, like chapter names and other irregular lines
        speaker <-substr(txt,1,delimiter_pos-1) # text before delimiter
        speaker_line <- substr(txt,delimiter_pos+1,nchar(txt)) # text after delimiter
        return(list(speaker,speaker_line))
        })

parsed_df <- as.data.frame(matrix(unlist(parsed_lines),ncol=2,byrow=TRUE,dimnames=list(NULL,c("speaker","speaker_line")))) # reformat as a 2 columns data.frame, as parsed_lines was a list

parsed_df
#   speaker         speaker_line
# 1   Alice                Hello
# 2    Paul  How are you doing ?
# 3   Alice          Good, you ?
# 4    Paul         Awesome: thx

# Paul's lines
subset(parsed_df,speaker == "Paul")