tm
kitaplığında bunun için önceden oluşturulmuş bir işlev var mı, yoksa güzel bir şekilde mi çalıyor?Rm t'si paketi ile okunabilirlik nasıl hesaplanır
Bulunduğum korpus, tm yüklenir şöyle gibi bir şey:
Ben koRpus kullanarak çalıştıs1 <- "This is a long, informative document with real words and sentence structure: introduction to teaching third-graders to read. Vocabulary is key, as is a good book. Excellent authors can be hard to find."
s2 <- "This is a short jibberish lorem ipsum document. Selling anything to strangers and get money! Woody equal ask saw sir weeks aware decay. Entrance prospect removing we packages strictly is no smallest he. For hopes may chief get hours day rooms. Oh no turned behind polite piqued enough at. "
stuff <- rbind(s1,s2)
d <- Corpus(VectorSource(stuff[,1]))
ama ben zaten kullanıyorum farklı bir pakette retokenize saçma görünüyor. Dönüş nesnesini, sonuçları tm
'a yeniden dahil etmeme izin verecek şekilde vektörleştirerek sorunlarım da vardı. (Yani, hatalardan dolayı, genellikle koleksiyonumdaki belge sayısından daha fazla veya daha az okunabilirlik puanları döndürürdü.)
Anlamak, hece olarak sesli harfleri ayrıştırmak için bir naif hesaplama yapabilirdim, ancak daha kapsamlı bir paket istiyor kenar durumlarını zaten ele alır (adres sessiz e'ler, vs.).
Seçebileceğiniz okunabilirlik puanlarım Flesch-Kincaid veya Fry'dır.
d 100 belgelerinin benim korpus nerede olduğunu başlangıçta çalıştı Ne:
f <- function(x) tokenize(x, format="obj", lang='en')
g <- function(x) flesch.kincaid(x)
x <- foreach(i=1:length(d), .combine='c',.errorhandling='remove') %do% g(f(d[[i]]))
Maalesef x 100'den az dokümanları döndürür, bu yüzden doğru belgeyle başarıları ilişkilendiremiyoruz. (Bu kısmen “foreach” ile “for lapply” kelimesinin yanlış anlamında R '' lapply 'dir, ama ben bir metin nesnesinin yapısını yeterince zorlaştırdığım, flesch.kincaid'i uygulayamayacağımı ve hataları makul bir sırayla başarılı bir şekilde kontrol edebildiğimi buldum. ifadeleri.)
GÜNCELLEME ben denedim
iki başka şeyler, tm nesnesine Korpus fonksiyonlarını uygulamak için çalışıyor ... tm_map nesnesine
Geçiş argümanlar kullanılarak varsayılan jeton:
tm_map(d,flesch.kincaid,force.lang="en",tagger=tokenize)
bu geçiş, bir dizgeciklerini tanımlama bu döndürülen bir
f <- function(x) tokenize(x, format="obj", lang='en') tm_map(d,flesch.kincaid,force.lang="en",tagger=f)
Hem.
Error: Specified file cannot be found:
Ardından [
1] d tam metni listeler. Onu buldu mu? Fonksiyonu doğru bir şekilde iletmek için ne yapmalıyım?
Bu garip bir hata gibi görünüyor
> lapply(d,tokenize,lang="en")
Error: Unable to locate
Introduction to teaching third-graders to read. Vocabulary is key, as is a good book. Excellent authors can be hard to find.
--- Neredeyse sanmıyorum: Ben lapply doğrudan Korpus fonksiyonlarını harita çalıştığınızda İşte GÜNCELLEME 2
alıyorum hata var metnin yerini bulamadığı anlamına gelir, ancak bulunan metni dökmeden önce bazı boş hata kodlarını ('tokenizer' gibi) bulamaz.koRpus
kullanılarak yeniden etiketleme ile
UPDATE 3
bir başka problem (tm konu etiketlerinin karşı) yeniden etiketleme standart çıktıya dizgeciklere ilerleme son derece yavaş ve çıkış oldu. Burada
f <- function(x) capture.output(tokenize(x, format="obj", lang='en'),file=NULL)
g <- function(x) flesch.kincaid(x)
x <- foreach(i=1:length(d), .combine='c',.errorhandling='pass') %do% g(f(d[[i]]))
y <- unlist(sapply(x,slot,"Flesch.Kincaid")["age",])
Niyetim meta verileri meta(d, "F-KScore") <- y
olarak benim tm(d)
korpusuna arka üstünde y
nesneyi yeniden bağlamanız olacaktır: Neyse, şu denedim.
Error in FUN(X[[1L]], ...) :
cannot get a slot ("Flesch.Kincaid") from an object of type "character"
benim gerçek külliyatın bir öğesi, bir NA, ya da çok uzun, başka yasaklayıcı bir şey olmalı bence --- ve:
Maalesef benim gerçek veri setine uygulanan, şu hata mesajını alıyorum Yuvalanmış işlevselleştirmeye bağlı olarak, tam olarak nerede olduğunu izlemekte sorun yaşıyorum.
Yani, şu anda, tm
kitaplığı ile güzelce oynayan puanları okumak için önceden oluşturulmuş bir işlev yok gibi görünüyor. Birisi kolay bir hata yakalama çözümü görmedikçe, görünüşte hatalı, hatalı biçimlendirilmiş belgelerin bazılarının belirtilememesiyle uğraşmak için işlev çağrılarımda sandviç yapabilir miyim?
Eğer tm gelen 'tm_map' ile Korpus gelen' flesh.kincaid' kullanamaz mıyız? –
Göremiyorum. "Hata: Dil belirtilmedi!" Yazıyor. tm_map (dd, flesch.kincaid) 'in her varyasyonu için, tm_map (dd, flesch.kincaid, "en") vb. gibi düşünebilirim. – Mittenchops
Başka bir SO sorusuna danıştım (http:/İç içe geçmiş işlevlere argümanların nasıl iletileceği hakkında /stackoverflow.com/questions/6827299/r-apply-function-with-multiple-parameters). Bunu denedim tm_map (d, flesch.kincaid, force.lang = "en", tagger = tokenize) 'ancak" belirtilen dosyayı "bulamadığı bir hatayı al, sonra da belge 1'in içeriğini çıkarıyor. – Mittenchops