我目前正试图从网站上抓取一些数据,以便进行词法分析。我对使用R进行数据挖掘很陌生,我只是将它用于与大学相关的问题,所以很抱歉有点不高兴。 我正试图从网站上抓取文字,如上所述。为此,我使用了以下命令:
test <- strsplit(p_text, ":")
所以我现在有了文本对象中的所有段落。由于大多数这些文件都是对话,我只想保留来自某个人的行。示例:
我想找到一种方法来选择和提取保罗的部分(例如)。我尝试过这样使用 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);
}
}
但我对结果有点失落......
有人能帮助我吗?
答案 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")