Supponiamo che disponga di dati di addestramento basati su testo e dati di test. Per essere più precisi, ho due set di dati - addestramento e test - e entrambi hanno una colonna che contiene del testo ed è interessante per il lavoro da svolgere.Come ricreare DocumentTermMatrix con nuovi dati (test)
Ho usato il pacchetto tm in R per elaborare la colonna di testo nel set di dati di allenamento. Dopo aver rimosso gli spazi bianchi, la punteggiatura e le parole di stop, ho arginato il corpus e finalmente creato una matrice di termini di documento di 1 grammo contenente la frequenza/il conteggio delle parole in ciascun documento. Ho quindi preso un limite predeterminato di, diciamo, 50 e ho mantenuto solo quei termini con un conteggio superiore a 50.
In seguito, alleno un modello GLMNET utilizzando il DTM e il dipendente variabile (che era presente nei dati di addestramento). Tutto funziona liscio e facile fino ad ora.
Tuttavia, come procedo quando voglio segnare/prevedere il modello sui dati di test o eventuali nuovi dati che potrebbero arrivare in futuro?
In particolare, quello che sto cercando di scoprire è come faccio a creare il DTM esatto sui nuovi dati?
Se il nuovo set di dati non contiene parole simili ai dati di allenamento originali, tutti i termini devono avere un conteggio pari a zero (che va bene). Ma voglio essere in grado di replicare esattamente lo stesso DTM (in termini di struttura) su qualsiasi nuovo corpus.
Qualche idea/pensiero?
Se ho capito bene la tua domanda (e io non sono sicuro di avere, senza un esempio riproducibile che dimostra quello che si sta provando a fare.), sembra che il modo più semplice per farlo sarebbe quello di creare la matrice term-documento usando tutti i dati, e quindi dividere quella matrice in un set di test e addestramento. In questo modo, hai tutti i termini rappresentati in entrambe le matrici, anche se una matrice ha solo zeri per diversi termini. Stai riscontrando problemi perché stai dividendo i dati prima di creare le matrici dei documenti termine. – SchaunW
Sono d'accordo Schaun, ma posso farlo solo con i dati di test che ho attualmente. Sto cercando una soluzione che funzionerà quando avrò nuovi dati domani. Altrimenti, sarebbe un problema aggiungere sempre nuovi dati a quelli esistenti, ricreare il DTM e riqualificare il modello ogni volta. – Godel
Anche in questo caso, disporre di dati di esempio con cui lavorare potrebbe rendere più semplice la risposta alla domanda. Che ne dici di questo: trasforma i tuoi nuovi dati in una matrice di term-document, quindi legalo ai vecchi dati usando la funzione 'rbind.fill' del pacchetto' plyr', che creerebbe una nuova matrice con tutte le colonne di entrambe le matrici originali. I tuoi dati di allenamento avrebbero colonne di NA per qualsiasi termine nei tuoi nuovi dati che non erano nei tuoi dati di allenamento. Potresti quindi eliminare quelle colonne. I tuoi nuovi dati avrebbero colonne di NA per qualsiasi termine nei tuoi dati di allenamento, ma non nei tuoi nuovi dati, Potresti sostituire questi NA con zeri. – SchaunW