Terme Fréquence dans un fichier PDF

1

Je dois développer un moteur de recherche basé sur la fréquence des termes du document. J'ai un jeu de données de 17 000 documents PDF. Existe-t-il un moyen de compter tous les mots et leurs occurrences dans un document particulier?

Exemple: Souhaitez-vous avoir des réponses?

Sortie: Aurait = 1 vous = 1 comme = 1 à = 2 réponses = 1

Prithvi514
la source
Quel système d'exploitation utilisez-vous?
Indrek

Réponses:

3

Le problème général de get text from a PDFest plus compliqué qu'il n'y paraît. Une fois que vous avez résolu ce problème à votre satisfaction, le problème consiste simplement à déterminer la fréquence des termes dans un groupe de fichiers texte. Vous devriez être capable de le mettre en œuvre directement ou d’obtenir des conseils sur le stackoverflow.

Pour obtenir du texte à partir d'un fichier PDF, vous devez tenir compte de la manière dont les données sont structurées dans un fichier PDF.

"Texte" peut être l'un des éléments suivants dans un fichier PDF:

  • Caractères rendus sous forme d'images
  • Caractères de texte individuels séparés par des éléments d'espacement (ce qui peut rendre difficile la distinction entre "mots", car comment définir combien d'espace doit être placé entre les mots pour en faire un mot séparé?)
  • Portée du texte ordinaire
  • Contenu dynamique (HTML, liens, champs de formulaire, vidéos, etc.)

Si tous vos fichiers PDF source adhèrent à une structure similaire ou ont été créés à l'aide du même programme, il devrait être facile de créer un programme permettant d'analyser avec précision la structure et d'extraire le texte de manière semi-fiable. Cependant ... si vos fichiers PDF proviennent d'auteurs et de tiers différents dont vous ne contrôlez pas la production, il pourrait être un peu plus compliqué.

Les techniques suivantes peuvent s'appliquer à l'extraction de texte à partir de PDF:

  • Utilisation de la technologie de reconnaissance optique de caractères (OCR) pour afficher le fichier PDF au rendu final et extraire le texte de ce que le programme OCR "voit".
  • Utiliser des outils qui comprennent l’architecture de bas niveau du document PDF pour analyser les éléments logiques et déterminer lequel d’entre eux constitue du texte (cette méthode ne permettra pas à elle seule de récupérer du texte à partir d’images, mais elle pourrait bien fonctionner pour des documents simples où le texte est stocké en tant que texte brut ou texte légèrement formaté).
  • Utiliser des outils propriétaires ou à source ouverte permettant de combiner les deux techniques ci-dessus.

Donc, votre approche devrait ressembler à ceci:

  • Déterminez s'il existe des points communs entre les fichiers PDF d'entrée, tels que la présence (ou l'absence) cohérente de texte restitué dans des images, afin de définir l'étendue de vos besoins en termes de techniques d'extraction à utiliser. Si vous avez besoin de travailler avec le cas général de toute PDF d'entrée, vous devez planifier pour le pire et supposer qu'il y aura être un texte dans les images, et que vous aurez besoin de faire OCR.
  • En fonction de vos besoins distillés, déterminez s’il existe un logiciel (propriétaire, open source ou non, selon vos préférences) qui implémente la ou les techniques requises.
  • Parmi les logiciels disponibles, déterminez celui qui est le plus facile à intégrer dans l’architecture / l’environnement de programmation que vous utilisez pour votre moteur de recherche (s’agit-il de C? Java? .NET? Et ainsi de suite.)
  • Déterminez si vous avez besoin d'analyser ou d'analyser manuellement les fonctionnalités de la bibliothèque. Vous pouvez le faire en sélectionnant au hasard un petit lot de PDF (disons 25) dans votre pile; exécutez l'algorithme "PDF to text" sur eux; et vérifiez manuellement si la sortie extraite est exacte. Sinon, vous devrez peut-être personnaliser les bibliothèques implémentant les techniques ou créer les vôtres.
  • Une fois que la fonctionnalité PDF vers texte fonctionne à votre satisfaction, votre problème consiste à indexer la fréquence des termes en texte brut. Il existe de nombreuses techniques pour cela, allant de Mappage / Réduire (voir Hadoop) aux bases de données en passant par le stockage d'une mappe de hachage en mémoire. La technique que vous utiliserez dépendra de l'ampleur de votre programme. combien de matériel vous pouvez utiliser (un ordinateur de bureau? un cluster? un grand serveur? un ordinateur central?); et à quelle fréquence vous devez exécuter le travail (constamment? tous les soirs? une fois par an?).
allquixotic
la source