2016-04-26 19 views
0

私はいくつかの仕事に自分自身を提供している多くの人々であるデータセットを持っています。そのポイントは、私が各コメントから.txtファイルにある非常に特定の文章を検索したいということです。これまで私は適切にそれをすることはできませんでした。Rのテキスト内の特定の文章を検索するにはどうすればよいですか?

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 

他のファイルには、自分の能力を説明する人あたりのコメントを含む変数と呼ばれるサービスが含まれ、その教育など。私がしたいのは、彼らが書いたテキストから年を取ることです。私は私の年齢を取得したいのですが、このサンプルからそう

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

:servicesファイルから

例。これまでの私の考え方は、スペイン語ですべての可能な文章とpos.words.txtを作成し、年齢を記述し、それをコメントファイルと照合することでした。

これまでに発生した主な問題は、正しい機能を作成できないことです。 pos.words.txtからすべての文章を特定するにはRをどのようにして作成するのか分かりません。これに加えて、私がここに投稿したコードは、私の機能がうまくいかないことを説明しています(人生は...)

私は本当にこの問題に取り組んでいくつかの助けに感謝します!

ありがとうございました!

エイドリアン

+1

あなたは何をお使いの入力txtファイルのいくつかの再現性の例を提供し、できればそれが役立つだろうあなたが探しているtxtファイルは、Rにインポートされた後のように見えます。 – AOGSTA

+0

再生可能な例を導くためにこれを読んでください:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-再現可能な例 - コードが一貫してフォーマットされている場合にも役立ちます。 –

答えて

1

これは文章に分割し、 `「テンゴANOS」の最後のインスタンスをキャプチャ:

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" 
関連する問題