2016-04-12 8 views
5

qdapパッケージを使用して、特定のアプリケーションの各コメントコメントの感情を判断します。私はCSVファイルからレビューコメントを読んで、それをqdapの極性機能に渡しました。すべて正常に動作し、すべてのレビューコメントの極性が得られますが、問題はすべての文章の極性(CSVファイルに存在する文の総数は779です)を計算するのに7-8秒かかることです。私は以下のコードを貼り付けています。qdapを使用したレビューコメントのセンチメント分析が遅い

temp_csv <- filePath() 
    attach(temp_csv) 
    text_data <- temp_csv[,c('Content')] 
    print(Sys.time()) 
    polterms <- list(neg=c('wtf')) 
    POLKEY <- sentiment_frame(positives=c(positive.words),negatives=c(polterms[[1]],negative.words))  
    polarity <- polarity(sentences, polarity.frame = POLKEY) 
    print(Sys.time()) 

次のように撮影した時刻:

[1] "2016年4月12日午後04時43分01秒IST"

[1]「2016年4月12日16時43分: 09 IST "

私が何か間違っていることを誰かに教えてもらえますか? パフォーマンスを向上させるにはどうすればよいですか?

答えて

9

私はqdapの著者です。 polarity関数は、はるかに小さなデータセット用に設計されています。私の役割が変わったので、より大きなデータセットで作業を始めました。私は速く正確である必要がありました(これらの2つの事柄はお互いに反対です)。それ以来、破産パッケージsentimentrを開発しました。このアルゴリズムは、qdapの極性よりも速く正確になるように最適化されています。

これは、5つの辞書ベース(または訓練されたアルゴリズムベース)のセンチメント検出に近づいています。それぞれには欠点( - )とプラス(+)があり、特定の状況で役立ちます。

  1. qdap + on CRAN; -slow
  2. syuzhet + on CRAN; +高速; +素晴らしいプロット; - 非文学の使用については正確ではない
  3. sentimentr +高速; +高い精度; -GitHubのみ
  4. stansent (stanford port) +最も正確です。 -slower
  5. tm.plugin.sentiment-CRANでアーカイブ。 - 私はそれが簡単に働くことができませんでした

私は下のコードで上記の最初の4つの選択肢のサンプルデータのタイムテストを表示します。

パッケージをインストールし、タイミングが、それは読者だけでコードを実行することができますので、私はパックマンを使う

を機能させます。あなたはinstall.packages & libraryコールと置き換えることができますが。それは便利だ場合

if (!require("pacman")) install.packages("pacman") 
pacman::p_load(qdap, syuzhet, dplyr) 
pacman::p_load_current_gh(c("trinker/stansent", "trinker/sentimentr")) 

pres_debates2012 #nrow = 2912 

tic <- function (pos = 1, envir = as.environment(pos)){ 
    assign(".tic", Sys.time(), pos = pos, envir = envir) 
    Sys.time() 
} 

toc <- function (pos = 1, envir = as.environment(pos)) { 
    difftime(Sys.time(), get(".tic", , pos = pos, envir = envir)) 
} 

id <- 1:2912 

タイミングタイミングと精度の詳細について
## qdap 
tic() 
qdap_sent <- pres_debates2012 %>% 
    with(qdap::polarity(dialogue, id)) 
toc() # Time difference of 18.14443 secs 


## sentimentr 
tic() 
sentimentr_sent <- pres_debates2012 %>% 
    with(sentiment(dialogue, id)) 
toc() # Time difference of 1.705685 secs 


## syuzhet 
tic() 
syuzhet_sent <- pres_debates2012 %>% 
    with(get_sentiment(dialogue, method="bing")) 
toc() # Time difference of 1.183647 secs 


## stanford 
tic() 
stanford_sent <- pres_debates2012 %>% 
    with(sentiment_stanford(dialogue)) 
toc() # Time difference of 6.724482 mins 

は私 sentimentr README.mdとしてください 星レポを参照してください。すなわち、以下READMEからの試験の一つキャプチャ:

私はタイラーに同意

enter image description here

+0

が、私はスニペット/レビューのサイズのテキストチャンクの非常に大きなセットにsyuzhetとの良好な結果がありました。 – Awhstin

+0

様々な感想パッケージの詳細な分析のために@Tyler Rinkerに感謝します。ちょうどあなたが作成したセンチメントパッケージをチェックアウトしました。これはまさに私が必要としていたものです。しかし、私はそれぞれの文から肯定的な単語と否定的な単語のリストが必要です。私はqdapを使っている間にこれを得ていましたが、センチメントは単語数だけを返します。感情を使っている間にそれらを得ることは可能ですか? – VenuSathya20

+0

@ VenuSathya20いいえ、それはもう私には意味がありませんでした。あなたは彼らと一緒にやりたいことを尋ねることはできますか? –

関連する問題