2012-11-13 26 views
7

mam dwie następujące DTM-s:lista kontroli R DocumentTermMatrix nie działa, po cichu ignoruje nieznanych parametrów

dtm <- DocumentTermMatrix(t) 

dtmImproved <- DocumentTermMatrix(t, 
       control=list(minWordLength = 4, minDocFreq=5)) 

Kiedy wdrożyć to, widzę dwie równe DTM-s i jeśli otworzę dtmImproved, istnieją słowa z 3 symbolami. Dlaczego parametr minWordLength nie działa? Dziękuję Ci!

> dtm 
A document-term matrix (591 documents, 10533 terms) 

Non-/sparse entries: 43058/6181945 
Sparsity   : 99% 
Maximal term length: 135 
Weighting   : term frequency (tf) 
> dtmImproved 
A document-term matrix (591 documents, 10533 terms) 

Non-/sparse entries: 43058/6181945 
Sparsity   : 99% 
Maximal term length: 135 
Weighting   : term frequency (tf) 
+0

Ponadto, kiedy dodać coś do "listy (...)" nic się nie dzieje, żadnych ostrzeżeń lub sth else –

Odpowiedz

23
dtmImproved <- DocumentTermMatrix(t, control=list(wordLengths=c(4, 15), 
            bounds = list(global = c(5,Inf)))) 

To rozwiązuje problem! Brak odpowiedniej dokumentacji naprawdę mads mnie w dół (:

+1

Która wersja 'tm' używasz. Pomoc dla 'TermDocumentMatrix' określa globalne opcje i podaje link do lokalnych opcji. 'minWordLength' nigdy nie jest wymienione jako opcja, ale' wordLengths' jest opisane szczegółowo. Dokumentacja wydaje się dobrze napisana i łatwa do naśladowania. – mnel

+0

Tak, to było to, które pomogło, niestety, nie udało się znaleźć google, ale jest bardziej jak moja wina) –

+1

@mnel: dyskretnie ignoruje każdy parametr, którego nie rozpoznaje, nawet np. '(control = list (bounds = list (c (0, Inf)))) zamiast' (control = list (bounds = list (global = c (0, Inf)))) '. To duży problem. Czy zauważyłeś brakującą etykietę "globalny"? Nie ... – smci

0

Zawsze jest dobrze, aby przeczytać kod źródłowy, jeśli jest dostępny.Zobacz kod źródłowy funkcji wordcloud @ GitHub, tutaj jest to, co mówi:
# Autor : ianfellows
.....
if (min.freq> max (częstotliwość))
min.freq < - 0

Więc DocumentTermMatrix, wrócił do max (freq) < min.freq związany że ustawiłeś, tzn. nie-z terminów pojawiło się w więcej niż ustalonym przez Ciebie ograniczeniu min.freq.

Hope this helps MJJ