2017-10-07 5 views
0

rstudio V1.0.153rstudio ou R: Text Mining vers Excel Projet

Ce sera un long post, je vais donc apprécier toute personne qui aura la patience de lire et de faire des suggestions. Je construis une base de données sur ~ 110 observations et une partie de celle-ci nécessitera des données malheureusement uniquement disponibles en format PDF. Je suis nouveau à R, mais je pensais que je prendrais un coup massif à ce sujet. Je préférerais essayer de cette façon que de parcourir des centaines de pages de PDF pour saisir manuellement les données d'intérêt.

Voici la source des données en format PDF PDF Pathology Report au format Excel comme indiqué ici Sample Excel Format Fondamentalement, mon but est d'obtenir la « viande » de ce chemin rapport des os aussi facilement que possible. Je comprends qu'un nettoyage sera toujours nécessaire, cependant! Jusqu'à présent, j'ai converti le PDF en PNG en utilisant un site Web open source, puis j'ai utilisé le paquet Tesseract qui renvoyait une chaîne de caractères de 1 affectée à l'objet "path". Ensuite, j'ai utilisé le paquet Tokenizers:

words <- tokenize_words(X, lowercase = TRUE) 

dput(words) 
c("appropriate", "controls", "specimen", "1", "2", "old", "liver", 
    "explant", "posit", "ve", "for", "malignancy", "hepatocellular", 
    "carcinoma", "see", "synoptic", "report", "below", "advanced", 
    "stage", "chronic", "liver", "disease", "fibrosis", "staging" 
) 

Je ne sais pas où aller? Peut-être y at-il une fonction dans le paquet TM qui peut être utilisée pour éliminer les phrases d'intérêt et les 3-4 mots suivant la phrase qui aura la description d'intérêt?

Un conseil serait apprécié!

+1

Avez-vous regarder dans le paquet 'pdftool' qui permet d'analyser pdf en R? C'est à partir de Ropensci et c'est un bon aperçu des outils pour l'analyse de texte. [voir article de blog] (https://ropensci.org/blog/blog/2017/06/13/ropensci_text_tools) – cderv

Répondre

1

Je ne sais pas d'un outil spécifique, mais ce que vous avez décrit est assez facile à faire avec des expressions régulières

contre les mauvaises herbes des phrases d'intérêt et les 3-4 mots l'expression

# words <- tokenize_words(X, lowercase = TRUE) 
words <- 
    c("appropriate", "controls", "specimen", "1", "2", "old", "liver", 
    "explant", "posit", "ve", "for", "malignancy", "hepatocellular", 
    "carcinoma", "see", "synoptic", "report", "below", "advanced", 
    "stage", "chronic", "liver", "disease", "fibrosis", "staging" 
) 


f <- function(x, phrase, n_words = 3L, upto = NULL) { 
    x <- paste0(x, collapse = ' ') 
    word <- '\\b\\w+\\b\\s*' 

    p <- if (!is.null(upto)) 
    sprintf('(?:%s)\\s*((%s)+)%s|.', phrase, word, upto) 
    else sprintf('(?:%s)\\s*((%s){1,%s})|.', phrase, word, n_words) 

    trimws(gsub(p, '\\1', x)) 
} 

paste0(words, collapse = ' ') 
# "appropriate controls specimen 1 2 old liver explant posit ve for malignancy 
# hepatocellular carcinoma see synoptic report below advanced stage chronic 
# liver disease fibrosis staging" 

f(words, 'carcinoma') 
# [1] "see synoptic report" 

f(words, 'old liver', 10) 
# [1] "explant posit ve for malignancy hepatocellular carcinoma see synoptic report" 

f(words, 'old liver', upto = 'carcinoma') 
# [1] "explant posit ve for malignancy hepatocellular" 

n_words est le nombre de mots retournés après phase est apparié; upto retournera fondamentalement tout entre phrase et upto