Maison  >  Article  >  développement back-end  >  Comment utiliser Python pour le NLP pour identifier et traiter les dates et heures dans les fichiers PDF ?

Comment utiliser Python pour le NLP pour identifier et traiter les dates et heures dans les fichiers PDF ?

PHPz
PHPzoriginal
2023-09-28 09:10:481441parcourir

如何利用Python for NLP识别和处理PDF文件中的日期和时间?

Comment utiliser Python pour le NLP pour identifier et traiter la date et l'heure dans les fichiers PDF ?

Le NLP (Natural Language Processing) est un domaine de recherche largement utilisé qui implique de nombreuses tâches, notamment la classification de textes, la reconnaissance d'entités nommées, l'analyse des sentiments, etc. En PNL, le traitement des dates et des heures est une tâche importante car de nombreuses données textuelles contiennent des informations sur les dates et les heures. Cet article explique comment utiliser Python pour le NLP pour identifier et traiter les dates et les heures dans les fichiers PDF, et fournit des exemples de code spécifiques.

Avant de commencer, nous devons installer certaines bibliothèques Python nécessaires. Les principales bibliothèques que nous utiliserons incluent pdfminer.six pour l'analyse des fichiers PDF et la bibliothèque NLTK (Natural Language Toolkit) pour les tâches NLP. Si vous n'avez pas encore installé ces bibliothèques, vous pouvez les installer à l'aide de la commande suivante :

pip install pdfminer.six
pip install nltk

Après avoir installé ces bibliothèques, nous pouvons commencer à écrire du code. Tout d'abord, nous devons importer les bibliothèques requises :

import re
import nltk
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO

Ensuite, nous devons définir une fonction pour analyser le fichier PDF et en extraire le contenu textuel :

def extract_text_from_pdf(pdf_path):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(pdf_path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos = set()

    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password, caching=caching, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue()

    fp.close()
    device.close()
    retstr.close()

    return text

Dans le code ci-dessus, nous utilisons les fonctions fournies par pdfminer. bibliothèque pour analyser le fichier PDF et enregistrer le contenu du texte analysé dans une chaîne.

Ensuite, nous devons définir une fonction pour trouver le modèle de date et d'heure à partir du texte et l'extraire :

def extract_dates_and_times(text):
    sentences = nltk.sent_tokenize(text)
    dates_and_times = []

    for sentence in sentences:
        words = nltk.word_tokenize(sentence)
        tagged_words = nltk.pos_tag(words)
        
        pattern = r"(?:[0-9]{1,2}(?:st|nd|rd|th)?s+ofs+)?(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:tember)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)(?:s*[0-9]{1,4})?(?:s*(?:a.?d.?|b.?c.?e.?))?|(?:(?:[0-9]+:)?[0-9]{1,2}(?::[0-9]{1,2})?(?:s*(?:a.?m.?|p.?m.?))?)"

        matches = re.findall(pattern, sentence, flags=re.IGNORECASE)
        dates_and_times.extend(matches)

    return dates_and_times

Dans le code ci-dessus, nous utilisons d'abord la fonction sent_tokenize fournie par la bibliothèque nltk pour diviser le texte en phrases , Utilisez ensuite la fonction word_tokenize pour diviser chaque phrase en mots. Ensuite, nous utilisons la fonction pos_tag de nltk pour marquer le mot avec une balise de partie du discours afin de nous aider à identifier la date et l'heure. Enfin, nous utilisons une expression régulière pour faire correspondre le modèle de date et d'heure et l'enregistrons dans la liste des résultats.

Enfin, nous pouvons écrire du code pour appeler la fonction ci-dessus et utiliser la date et l'heure extraites :

pdf_path = "example.pdf"
text = extract_text_from_pdf(pdf_path)
dates_and_times = extract_dates_and_times(text)

print("Dates and times found in the PDF:")
for dt in dates_and_times:
    print(dt)

Dans le code ci-dessus, nous supposons que le chemin du fichier PDF est "exemple.pdf", et nous appelons extract_text_from_pdf fonction pour obtenir le contenu du texte et appeler la fonction extract_dates_and_times pour extraire la date et l’heure. Enfin, nous imprimons la date et l’heure extraites.

Dans les applications réelles, nous pouvons effectuer un traitement et une analyse supplémentaires selon les besoins, tels que la conversion de la date et de l'heure extraites dans un format spécifique, ou l'exécution d'autres opérations ultérieures basées sur la date et l'heure.

Résumé :

Cet article explique comment utiliser Python pour le NLP pour identifier et traiter les dates et les heures dans les fichiers PDF. Nous utilisons la bibliothèque pdfminer pour analyser le fichier PDF, la bibliothèque NLTK pour la tâche NLP, puis utilisons la correspondance de modèles d'expressions régulières pour extraire la date et l'heure. En écrivant des exemples de code correspondants, nous pouvons extraire la date et l'heure des fichiers PDF et effectuer un traitement et une analyse ultérieurs. Ces technologies et méthodes peuvent être appliquées dans de nombreux scénarios pratiques, par exemple dans des domaines tels que l'archivage automatique de documents, l'extraction d'informations et l'analyse de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn