Ciao a tutti,
Ho una tabella JMP che include il testo completo di un gruppo di articoli di riviste. Ogni record ha il titolo dell'articolo in una colonna (come ID) e il testo completo dell'articolo in un'altra. Vorrei creare una nuova colonna che contenga solo il testo della sezione Metodi di ogni articolo. Ho iniziato a pensare che ciò potesse essere possibile dopo aver guardato il tutorial "Recode Review" di @brady_brady https://community.jmp.com/t5/JMP-On-Air/Recode-Review/ta-p/261025 . La mia idea sarebbe quella di cercare nel campo di testo completo di ogni record la parola "methods" e poi sostituirla con un delimitatore arbitrario e insolito (ad esempio, $%^). Successivamente, cercherei nel campo di testo completo di ogni documento la parola "results" e la sostituirei con un delimitatore arbitrario diverso (ad esempio, !@#). A questo punto, potrei in qualche modo usare il testo in colonne o le espressioni regolari per sottoinsiemi solo del testo compreso tra questi due delimitatori. In teoria, questo sembra possibile. Tuttavia, immagino che diventerebbe complicato (se non addirittura impraticabile) quando le parole "Metodi" o "Risultati" sono presenti più di una volta nel documento (come spesso accade). Avete suggerimenti/avvertenze?
Ciao,
Ecco la formula più semplice che potresti usare per estrarre direttamente il testo tra la prima occorrenza della parola "Metodi" e la prima occorrenza della parola "Risultati".
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "METHODS" ),
Contains( Uppercase( :TEXT ), "RESULTS" )
-Contains( Uppercase( :TEXT ), "METHODS" )
)
Sono abbastanza sicuro che questo funzionerà solo per un sottoinsieme dei dati di testo completo perché queste due parole sono estremamente comuni nei documenti scientifici, ma ti dà un'idea di come usare le formule JMP senza dover inserire caratteri speciali e usare Regex .
Migliore,
TS
Come in molti (quasi tutti?) Di questi casi, "dipende". Se i dati sono ben strutturati, potrebbero esserci altre funzionalità che puoi utilizzare per tenerne conto. Ad esempio, se i documenti provengono tutti dalla stessa rivista, potresti essere in grado di trarre vantaggio da una coerenza strutturale tra di loro. A volte devi davvero essere creativo, ea volte è quasi impossibile trovare un modo per spezzare il testo che desideri con una regola di analisi omnibus. Più strumenti consentono più creatività e potere, ovviamente.
Assicurati di visualizzare la funzione "Estrai segmento" di Recode e, come hai detto, alcune espressioni regolari.
Mi dispiace di non poter essere più d'aiuto qui
Saluti,
Brady
Ciao di nuovo,
Dopo un po 'di sperimentazione, ho trovato un modo per raggiungere l'obiettivo di analisi del testo del mio articolo di giornale utilizzando la semplice formula fornita da @Thierry_S . La sfida nel mio caso è stata che i miei "articoli" provengono da un numero enorme di riviste diverse, tutte con formati ed etichette di sottotitoli diversi. Di conseguenza, nessun approccio standard orientato ai modelli funzionerebbe. Quello che ho finito per fare ha richiesto un po 'di modifica manuale dei PDF, ma non era poi così male e sembra essere efficace al 100%.
Per prima cosa, ho aperto ogni pdf e modificato il testo in modo che i diversi blocchi di contenuto standard avessero i propri delimitatori. Nel mio caso, volevo che fossero citate categorie standard di abstract, introduzione, metodi, risultati, discussione e letteratura. Quindi, all'interno di ogni articolo, ho trovato il primo titolo che corrispondeva al mio concetto di "metodi". In alcuni casi, questa era effettivamente la parola "metodi", ma in altri casi era qualcosa come "materiali e metodi" o "area di studio". In ogni caso, alla fine del sottotitolo desiderato ho aggiunto un delimitatore univoco (ad esempio, CCCCC). Poi, ho trovato il primo sottotitolo che corrispondeva al mio concetto di "risultati", che spesso era la parola "risultati", ma ogni giornale è diverso e, a volte, sono state usate altre parole. Indipendentemente dal sottotitolo, ho aggiunto un delimitatore univoco (ad esempio, DDDDD). Ho fatto lo stesso per ciascuno dei sei blocchi di contenuti standard che volevo nel mio intero corpus.
Successivamente, ho convertito tutti i miei file pdf modificati in file .txt (utilizzando un software diverso, al di fuori di JMP).
Quindi, ho utilizzato lo strumento FANTASTICO "Importa più file" in JMP per creare una tabella di dati che avesse una riga per articolo con il testo completo di ogni articolo in una singola colonna.
A questo punto, tutto ciò che dovevo fare era creare 6 nuove colonne, una per ogni intestazione, e utilizzare una variazione della formula fornita da Thierry_S per raccogliere i blocchi di contenuto desiderati. Ad esempio, per creare una colonna "metodi", ho utilizzato la formula
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "CCCCC" ),
Contains( Uppercase( :TEXT ), "DDDDD" )
-Contains( Uppercase( :TEXT ), "CCCCC" )
)
Quindi, per creare una colonna "risultati", ho utilizzato la formula
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "DDDDD" ),
Contains( Uppercase( :TEXT ), "EEEEE" )
-Contains( Uppercase( :TEXT ), "DDDDD" )
)
Alla fine, ho una tabella dati per 800 articoli in cui ogni articolo contiene informazioni nelle colonne standard di abstract, introduzione, metodi, risultati, discussione e letteratura citata. BINGO, Alleluia!
Sebbene questo approccio richiedesse il passaggio manuale di inserire i miei delimitatori nei file PDF, quel processo ha richiesto solo un giorno. Data l'enorme variazione nella formattazione degli articoli e l'assenza di metadati "tag" coerenti tra gli articoli, questo è stato un modo piuttosto infallibile. Forse c'è un modo per inserire questi tag automaticamente, cercando un elenco di parole che potrebbero soddisfare i criteri della sezione (ad esempio, "metodi", "risultati"), ma come menzionato altrove in questo thread, quelle sono parole molto comuni in articoli di giornale che probabilmente si trovano in quasi tutte le sezioni. L'approccio manuale mi ha permesso di catturare il testo da tutti i miei PDF, sia che provenissero come file PDF da riviste o rapporti scansionati male che sono stati sottoposti a OCR negli ultimi 30 anni.
Ancora una volta grazie @Thierry_S per il tuo post. La flessibilità di JMP colpisce ancora!
Casey