Bagaimana untuk mengekstrak ayat utama daripada fail PDF menggunakan Python untuk NLP?

WBOY
Lepaskan: 2023-09-28 11:36:27
asal
1169 orang telah melayarinya

如何利用Python for NLP从PDF文件中提取关键句子?

Bagaimana cara menggunakan Python untuk NLP untuk mengekstrak ayat utama daripada fail PDF?

Pengenalan:
Dengan perkembangan pesat teknologi maklumat, Natural Language Processing (NLP) memainkan peranan penting dalam bidang seperti analisis teks, pengekstrakan maklumat dan terjemahan mesin. Dalam aplikasi praktikal, selalunya perlu untuk mengekstrak maklumat penting daripada sejumlah besar data teks, seperti mengekstrak ayat utama daripada fail PDF. Artikel ini akan memperkenalkan cara menggunakan pakej NLP Python untuk mengekstrak ayat utama daripada fail PDF, dan memberikan contoh kod terperinci.

Langkah 1: Pasang perpustakaan Python yang diperlukan
Sebelum kita mula, kita perlu memasang beberapa perpustakaan Python untuk memudahkan pemprosesan teks seterusnya dan penghuraian fail PDF.

1. Pasang perpustakaan nltk:
Masukkan arahan berikut pada baris arahan untuk memasang perpustakaan nltk:

pip install nltk
Salin selepas log masuk

2 Pasang perpustakaan pdfminer:
Masukkan arahan berikut pada baris arahan untuk memasang perpustakaan pdfminer:

.
pip install pdfminer.six
Salin selepas log masuk

Langkah 2: Menghuraikan fail PDF
Mula-mula, kita perlu menukar fail PDF kepada format teks biasa. Pustaka pdfminer memberikan kami fungsi untuk menghuraikan fail PDF.

Berikut ialah fungsi yang boleh menukar fail PDF kepada teks biasa:

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

def convert_pdf_to_text(file_path):
    resource_manager = PDFResourceManager()
    string_io = StringIO()
    laparams = LAParams()
    device = TextConverter(resource_manager, string_io, laparams=laparams)
    interpreter = PDFPageInterpreter(resource_manager, device)

    with open(file_path, 'rb') as file:
        for page in PDFPage.get_pages(file):
            interpreter.process_page(page)

    text = string_io.getvalue()
    device.close()
    string_io.close()

    return text
Salin selepas log masuk

Langkah 3: Ekstrak ayat utama
Seterusnya, kita perlu menggunakan perpustakaan nltk untuk mengekstrak ayat utama. nltk menyediakan fungsi yang kaya untuk tokenisasi, pembahagian perkataan dan pembahagian ayat teks.

Berikut ialah fungsi yang boleh mengekstrak ayat utama daripada teks yang diberikan:

import nltk

def extract_key_sentences(text, num_sentences):
    sentences = nltk.sent_tokenize(text)
    word_frequencies = {}
    for sentence in sentences:
        words = nltk.word_tokenize(sentence)
        for word in words:
            if word not in word_frequencies:
                word_frequencies[word] = 1
            else:
                word_frequencies[word] += 1

    sorted_word_frequencies = sorted(word_frequencies.items(), key=lambda x: x[1], reverse=True)
    top_sentences = [sentence for (sentence, _) in sorted_word_frequencies[:num_sentences]]

    return top_sentences
Salin selepas log masuk

Langkah 4: Lengkapkan kod contoh
Berikut ialah contoh kod lengkap yang menunjukkan cara mengekstrak ayat utama daripada fail PDF:

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

def convert_pdf_to_text(file_path):
    resource_manager = PDFResourceManager()
    string_io = StringIO()
    laparams = LAParams()
    device = TextConverter(resource_manager, string_io, laparams=laparams)
    interpreter = PDFPageInterpreter(resource_manager, device)

    with open(file_path, 'rb') as file:
        for page in PDFPage.get_pages(file):
            interpreter.process_page(page)

    text = string_io.getvalue()
    device.close()
    string_io.close()

    return text

def extract_key_sentences(text, num_sentences):
    sentences = nltk.sent_tokenize(text)
    word_frequencies = {}
    for sentence in sentences:
        words = nltk.word_tokenize(sentence)
        for word in words:
            if word not in word_frequencies:
                word_frequencies[word] = 1
            else:
                word_frequencies[word] += 1

    sorted_word_frequencies = sorted(word_frequencies.items(), key=lambda x: x[1], reverse=True)
    top_sentences = [sentence for (sentence, _) in sorted_word_frequencies[:num_sentences]]

    return top_sentences

# 示例使用
pdf_file = 'example.pdf'
text = convert_pdf_to_text(pdf_file)
key_sentences = extract_key_sentences(text, 5)
for sentence in key_sentences:
    print(sentence)
Salin selepas log masuk

Ringkasan :
Artikel ini memperkenalkan kaedah mengekstrak ayat utama daripada fail PDF menggunakan pakej NLP Python. Dengan menukar fail PDF kepada teks biasa melalui perpustakaan pdfminer, dan menggunakan tokenisasi dan fungsi segmentasi ayat perpustakaan nltk, kami boleh mengekstrak ayat utama dengan mudah. Kaedah ini digunakan secara meluas dalam bidang seperti pengekstrakan maklumat, rumusan teks dan pembinaan graf pengetahuan. Saya harap kandungan artikel ini berguna kepada anda dan boleh digunakan dalam aplikasi praktikal.

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak ayat utama daripada fail PDF menggunakan Python untuk NLP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!