2016-04-26 8 views
0

Ich habe ein Dataset, das viele Leute bietet sich für einige Jobs. Der Punkt ist, dass ich von jedem Kommentar einige sehr spezifische Sätze in einer TXT-Datei abrufen möchte. Bisher habe ich es nicht richtig geschafft.Wie kann ich nach bestimmten Sätzen in einem Text in R suchen?

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) 

Die Textdatei wird pos.words genannt und enthält Sätze in Spanisch, so dass:

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

Die andere Datei eine Variable namens Dienste enthält, die einen Kommentar pro Person enthält, ihre Fähigkeiten zu erklären, ihre Bildung und so weiter. Und ich möchte ihr Alter anhand des Textes, den sie geschrieben haben, erreichen.

Beispiel von Servicedatei:

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

So aus dieser Probe würde Ich mag mein Alter bekommen. Meine Idee war bisher, eine Pos.words.txt mit allen möglichen Sätzen in Spanisch zu erstellen, die das Alter angibt und mit der Kommentardatei übereinstimmt.

Die Hauptprobleme, die bisher aufgetreten sind, sind, dass ich keine korrekte Funktion dafür erstellen kann; Ich weiß nicht, wie man R dazu bringt, ganze Sätze aus pos.words.txt zu identifizieren, denn im Moment braucht es jedes einzelne Wort als Zeichen. Darüber hinaus funktioniert das Stück Code, das ich hier geschrieben habe und erklärt meine Funktion nicht (Verbrecherleben ...)

Ich würde wirklich einige Hilfe schätzen, um dieses Problem anzugehen !!

Vielen Dank für Ihre Hilfe !!

Adrian

+1

Es wäre hilfreich, wenn Sie einige reproduzierbare Beispiele dafür, was Ihre Eingabe txt-Datei zur Verfügung stellen könnte und die TXT-Dateien, nach denen Sie suchen, sehen aus, als ob sie in R importiert wurden. – AOGSTA

+0

Lesen Sie dies, um Ihr reproduzierbares Beispiel zu verdeutlichen: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r- reproduzierbares Beispiel - es hilft auch, wenn Sie Ihren Code konsistent formatiert haben. –

Antwort

1

Diese in Sätze spaltet und fängt die letzte Instanz von `„tengo añ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" 
Verwandte Themen