ホームページ  >  記事  >  バックエンド開発  >  NLP 用 Python を使用して PDF ファイル内の日付と時刻を識別して処理するにはどうすればよいですか?

NLP 用 Python を使用して PDF ファイル内の日付と時刻を識別して処理するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-09-28 09:10:481373ブラウズ

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

NLP 用 Python を使用して PDF ファイル内の日付と時刻を識別して処理するにはどうすればよいですか?

NLP (自然言語処理) は、テキスト分類、固有表現認識、感情分析などの多くのタスクを含む広く使用されている研究分野です。 NLP では、多くのテキスト データに日付と時刻に関する情報が含まれているため、日付と時刻の処理は重要なタスクです。この記事では、Python for NLP を使用して PDF ファイル内の日付と時刻を識別して処理する方法を紹介し、具体的なコード例を示します。

始める前に、必要な Python ライブラリをいくつかインストールする必要があります。使用する主なライブラリには、PDF ファイルを解析するための pdfminer.six と、NLP タスク用の NLTK (Natural Language Toolkit) ライブラリが含まれます。これらのライブラリをインストールしていない場合は、次のコマンドを使用してインストールできます。

pip install pdfminer.six
pip install nltk

これらのライブラリをインストールした後、コードの作成を開始できます。まず、必要なライブラリをインポートする必要があります:

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

次に、PDF ファイルを解析し、その中のテキスト コンテンツを抽出する関数を定義する必要があります:

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

上記のコードでは、 pdfminer ライブラリは、PDF ファイルを解析し、解析されたテキスト コンテンツを文字列で保存する関数を提供します。

次に、テキストから日付と時刻のパターンを見つけて抽出する関数を定義する必要があります:

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

上記のコードでは、最初に提供されている nltk ライブラリを使用します。テキストを文に分割し、word_tokenize 関数を使用して各文を単語に分割します。次に、nltk の pos_tag 関数を使用して単語に品詞のタグを付け、日付と時刻を識別できるようにします。最後に、正規表現を使用して日付と時刻のパターンを照合し、結果リストに保存します。

最後に、上記の関数を呼び出し、抽出された日付と時刻を使用するコードを作成できます。

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)

上記のコードでは、PDF ファイルへのパスが「example.html」であると仮定します。 pdf" では、extract_text_from_pdf 関数を呼び出してテキスト コンテンツを取得し、extract_dates_and_times 関数を呼び出して日付と時刻を抽出します。最後に、抽出した日付と時刻を出力します。

実際のアプリケーションでは、抽出した日時を特定の形式に変換したり、日時を基にして後続の操作を実行したりするなど、必要に応じてさらに処理や分析を行うことができます。

概要:

この記事では、Python for NLP を使用して PDF ファイル内の日付と時刻を識別して処理する方法を紹介します。 pdfminer ライブラリを使用して PDF ファイルを解析し、NLP タスクには NLTK ライブラリを使用して、正規表現パターン マッチングを使用して日付と時刻を抽出します。対応するコード例を記述することで、PDF ファイルから日付と時刻を抽出し、その後の処理と分析を実行できます。これらのテクノロジと方法は、自動ドキュメント アーカイブ、情報抽出、データ分析などの分野など、多くの実用的なシナリオに適用できます。

以上がNLP 用 Python を使用して PDF ファイル内の日付と時刻を識別して処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。