2014-08-27 20 views
6

numaralı büyük verilerle kullanın. tm ile R'deki büyük veride metin madenciliği yapmaya çalışıyorum. Farklı işletim sistemlerinin çalışıyor 64 bit R tm's Corpus işlevini R

  • kullanarak bu tür

    • olarak

      ben, (örneğin can not allocation vector of size.... gibi) sık sık hafıza sorunları çalıştırmak ve bu sorunları giderme yerleşik yöntemleri kullanın (Windows, Linux, Solaris , vs)

    • hale maksimum
    • için memory.limit() ayar yeterli RAM ve bilgi işlem (var olan)
    • mak sunucusu geçerli olduğundan emin Bir milyon kadar metin alanlarının bir vektör üzerine Corpus çalıştırmak çalışırken,

    Ancak birden fazla küçük operasyonlar

  • içine büyük operasyonlar kesiliyor
  • ben karşılaşmak, darboğazları için kod profilleme gc()
  • liberal kullanımını ing her zamankinden biraz farklı bir hafıza hatası ve sorun etrafında nasıl çalışacağından emin değilim. hatadır:

    > ds <- Corpus(DataframeSource(dfs)) 
    Error: memory exhausted (limit reached?) 
    

    (ve) O kaynak dataframe gelen sıraların bloklarının üzerinde aşamalı Corpus çalıştırmak sonra sonuçları birleştirebilir miyiz? Bunu çalıştırmak için daha verimli bir yolu var mı?

    Bu hatayı üretecek verilerin boyutu, onu çalıştıran bilgisayara bağlıdır, ancak yerleşik crude veri kümesini alır ve belgeleri yeterince büyük olana kadar çoğaltırsanız, bu hatayı çoğaltabilirsiniz.

    GÜNCELLEME

    Ben küçük Corpa birleştirmeye çalışıyor deneme oldum, yani

    test1 <- dfs[1:10000,] 
    test2 <- dfs[10001:20000,] 
    
    ds.1 <- Corpus(DataframeSource(test1)) 
    ds.2 <- Corpus(DataframeSource(test2)) 
    

    ve ben başarılı olmamıştır ederken, ben supposed to solve this exact problem olduğunu tm_combine keşfetmek yaptı. Tek yakalama, bazı nedenlerle, tm'un en yeni sürümüyle R 3.1.1 64 bit yapmam tm_combine işlevini bulamıyor. Belki de bir sebepten dolayı paketten çıkarıldı? Ben tm_combine kullanımdan kaldırıldı dönüşürse veya tm ad alanında bulunmayan neden

    > require(tm) 
    > ds.12 <- tm_combine(ds.1,ds.2) 
    Error: could not find function "tm_combine" 
    
  • +0

    Tüm kodunuz tek bir işlevde mi? Ya da bir senaryo? –

    +0

    o anda bir komut dosyası şu anda –

    +0

    Kodunuzun çok fazla kopya çekiyor olabileceğini tahmin ediyorum ... ama uzmanları bekleyeceğim. –

    cevap

    2

    Bilmiyorum ... araştırıyorum ama daha sonra birleştirerek dataframe küçük parçalar üzerinde Corpus kullanarak yoluyla çözüm buldunuz onlar.

    This StackOverflow yazılan yapmak için basit bir yol olduğunu tm_combine olmadan: verir

    test1 <- dfs[1:100000,] 
    test2 <- dfs[100001:200000,] 
    
    ds.1 <- Corpus(DataframeSource(test1)) 
    ds.2 <- Corpus(DataframeSource(test2)) 
    
    #ds.12 <- tm_combine(ds.1,ds.2) ##Error: could not find function "tm_combine" 
    ds.12 <- c(ds.1,ds.2) 
    

    :

    ds.12

    <<VCorpus (documents: 200000, metadata (corpus/indexed): 0/0)>> 
    

    Maalesef istemeden önce başıma bu anlamaya değil. Nesneleri birleştirmenin başka yollarını denedim ve başarısız oldum.