Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich Python für NLP, um Datums- und Uhrzeitangaben in PDF-Dateien zu identifizieren und zu verarbeiten?

Wie verwende ich Python für NLP, um Datums- und Uhrzeitangaben in PDF-Dateien zu identifizieren und zu verarbeiten?

PHPz
PHPzOriginal
2023-09-28 09:10:481446Durchsuche

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

Wie verwende ich Python für NLP, um Datum und Uhrzeit in PDF-Dateien zu identifizieren und zu verarbeiten?

NLP (Natural Language Processing) ist ein weit verbreitetes Forschungsgebiet, das viele Aufgaben umfasst, darunter Textklassifizierung, Erkennung benannter Entitäten, Stimmungsanalyse usw. Im NLP ist die Verarbeitung von Datums- und Uhrzeitangaben eine wichtige Aufgabe, da viele Textdaten Informationen über Datums- und Uhrzeitangaben enthalten. In diesem Artikel wird erläutert, wie Sie Python für NLP verwenden, um Datums- und Uhrzeitangaben in PDF-Dateien zu identifizieren und zu verarbeiten, und es werden spezifische Codebeispiele bereitgestellt.

Bevor wir beginnen, müssen wir einige notwendige Python-Bibliotheken installieren. Zu den Hauptbibliotheken, die wir verwenden werden, gehören pdfminer.six zum Parsen von PDF-Dateien und die NLTK-Bibliothek (Natural Language Toolkit) für NLP-Aufgaben. Wenn Sie diese Bibliotheken noch nicht installiert haben, können Sie sie mit dem folgenden Befehl installieren:

pip install pdfminer.six
pip install nltk

Nach der Installation dieser Bibliotheken können wir mit dem Schreiben von Code beginnen. Zuerst müssen wir die erforderlichen Bibliotheken importieren:

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

Als nächstes müssen wir eine Funktion definieren, um die PDF-Datei zu analysieren und den darin enthaltenen Textinhalt zu extrahieren:

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

Im obigen Code verwenden wir die vom pdfminer bereitgestellten Funktionen Bibliothek, um die PDF-Datei zu analysieren und den analysierten Textinhalt in einer Zeichenfolge zu speichern.

Als nächstes müssen wir eine Funktion definieren, um das Muster von Datum und Uhrzeit aus dem Text zu finden und es zu extrahieren:

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

Im obigen Code verwenden wir zunächst die von der nltk-Bibliothek bereitgestellte Funktion sent_tokenize, um den Text in Sätze aufzuteilen , Verwenden Sie dann die Funktion word_tokenize, um jeden Satz in Wörter aufzuteilen. Als Nächstes verwenden wir die pos_tag-Funktion von nltk, um das Wort mit einer Wortart zu markieren, die uns hilft, Datum und Uhrzeit zu identifizieren. Abschließend verwenden wir einen regulären Ausdruck, um das Muster für Datum und Uhrzeit abzugleichen und es in der Ergebnisliste zu speichern.

Schließlich können wir Code schreiben, um die obige Funktion aufzurufen und das extrahierte Datum und die extrahierte Uhrzeit zu verwenden:

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)

Im obigen Code gehen wir davon aus, dass der Pfad der PDF-Datei „example.pdf“ ist, und rufen extract_text_from_pdf auf Funktion zum Abrufen des Textinhalts und Aufrufen der Funktion extract_dates_and_times zum Extrahieren von Datum und Uhrzeit. Abschließend drucken wir das extrahierte Datum und die extrahierte Uhrzeit aus.

In tatsächlichen Anwendungen können wir bei Bedarf weitere Verarbeitungen und Analysen durchführen, z. B. die Konvertierung des extrahierten Datums und der Uhrzeit in ein bestimmtes Format oder die Durchführung anderer Folgevorgänge basierend auf Datum und Uhrzeit.

Zusammenfassung:

In diesem Artikel wird erläutert, wie Sie Python für NLP verwenden, um Datums- und Uhrzeitangaben in PDF-Dateien zu identifizieren und zu verarbeiten. Wir verwenden die pdfminer-Bibliothek, um die PDF-Datei zu analysieren, die NLTK-Bibliothek für die NLP-Aufgabe und verwenden dann den Mustervergleich regulärer Ausdrücke, um Datum und Uhrzeit zu extrahieren. Durch das Schreiben entsprechender Codebeispiele können wir Datum und Uhrzeit aus PDF-Dateien extrahieren und eine anschließende Verarbeitung und Analyse durchführen. Diese Technologien und Methoden können in vielen praktischen Szenarien eingesetzt werden, beispielsweise in Bereichen wie der automatischen Dokumentenarchivierung, der Informationsextraktion und der Datenanalyse.

Das obige ist der detaillierte Inhalt vonWie verwende ich Python für NLP, um Datums- und Uhrzeitangaben in PDF-Dateien zu identifizieren und zu verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn