2012-04-05 5 views
0

Ich versuche, einen neuen Stemmer hinzuzufügen, der mit einer Tabellensuchmethode funktioniert. Wenn h der Hash ist, der die Stemming-Operation enthält, wird er wie folgt codiert: Schlüssel als Wörter vor dem Stemmen und Werte als Wörter nach dem Stemmen.Text Mining-Paket von R ... Hinzufügen einer neuen Funktion zu GetTransformation

würde Ich mag in idealer Weise einen benutzerdefinierten Hash hinzufügen, die mir die folgenden

tun können

myCorpus = tm_map (myCorpus, replaceWords, h)

die replaceWords Funktion zu jedem Dokument in myCorpus und Verwendungen angewendet wird der Hash des Inhalts des Dokuments

Hier einzudämmen ist der Beispielcode aus meinem replaceWords funktionieren

$hash_replace <- function(x,h) { 
if (length(h[[x]])>0) { 
    return(h[[x]]) 
} else { 
    return(x) 
} 
} 

replaceWords <- function(x,h) { 
y = tolower(unlist(strsplit(x," "))) 
y=y[which(as.logical(nchar(y)))] 
z = unlist(lapply(y,hash_replace,h)) 
return(paste(unlist(z),collapse=' ')) 
} 

Obwohl dies funktioniert, wird die transformierte Korpus enthält nicht mehr Inhalt des Typs „Textdocument“ oder „PlainTextDocument“, sondern vom Typ „Zeichen“

ich

versucht mit
return(as.PlainTextDocument(paste(unlist(z),collapse=' '))) 

aber das gibt mir einen Fehler beim versuchen zu rennen.

In den früheren Versionen des Rs tm-Pakets sah ich eine ReplaceWords-Funktion, die Synonym- und WORDNET-basierte Substitution ermöglichte. Aber ich sehe es nicht mehr in der aktuellen Version von tm-Paket (vor allem, wenn ich die Funktion getTransformations() aufrufen)

Hat jemand da draußen Ideen, wie ich das erreichen kann?

Jede Hilfe wird sehr geschätzt.

Cheers, Shivani

Danke, Shivani Rao

Antwort

1

Sie müssen nur statt as.PlainTextDocument die PlainTextDocument Funktion verwenden. R wird automatisch die letzte Anweisung in Ihrer Funktion zurückgeben, so dass es funktioniert, wenn Sie nur die letzte Zeile

PlainTextDocument(paste(unlist(z),collapse=' ')) 
Verwandte Themen