0

私は4つの言葉を持っています。それらは、wordA、wordB、wordX、および wordY です。1列(メッセージ)で構成されるデータセットがあり、メッセージ列のデータ型は因子です。(wordX および wordY) の出現回数の合計をカウントし、それを各行の (wordA および wordB) の出現回数から減算し、その結果を行の新しい列に入れたいと考えています。

たとえば、メッセージ列のテキストが「wordD wordA wordX wordA wordC wordA wordB wordY」の場合、値は wordA-wordX+wordA+wordA+wordB-wordY= 1-1+1+1+1-1= と等しくなります。 +2 .

このコードを書きましたが、重複した単語はカウントされません。助けていただければ幸いです。

for(i in 1:nrow(dataset){
counter=0

if(length(grep("wordA",dataset[i,1],)==1)){
counter=counter+1;
}
if(length(grep("wordB",dataset[i,1])==1)){
counter=counter+1;
}
if(length(grep("wordX",dataset[i,1])==1)){
counter=counter-1;
}
if(length(grep("wordY",dataset[i,1])==1)){
counter=counter-1;
}
dataset[i,2]=counter;
}   
4

2 に答える 2

1

これがあなたが探しているものかどうかは完全にはわかりませんが、あなたが尋ねていると思われるものは次のとおりです。文または句のベクトルの各要素にスコアを付けたい (たとえばmess<-c("some stuff here", "some stuff not here", "most stuff here")、どの単語が存在するかに応じて)。いくつかの単語の存在はスコアに +1 を追加し、他の単語の存在はスコアに -1 を追加します。私の例では+1 を加える単語は「here」と「stuff」で、-1 を加える単語は「some」と「most」です。

# vector  
mess <- c("some stuff here", "some stuff not here", "most stuff here")

positiveword <- lapply(strsplit(mess," "), function(x)grepl("here|stuff",x))
positiveword <- lapply(positiveword, sum)

negativeword <- lapply(strsplit(mess," "), function(x)grepl("some|most",x))
negativeword <- lapply(negativeword, sum)
score <- unlist(positiveword) - unlist(negativeword)
于 2013-11-07T05:24:51.283 に答える