Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menandakan dan mengekstrak maklumat utama secara automatik daripada fail PDF dengan Python untuk NLP?

Bagaimana untuk menandakan dan mengekstrak maklumat utama secara automatik daripada fail PDF dengan Python untuk NLP?

PHPz
PHPzasal
2023-09-27 13:25:561237semak imbas

如何用Python for NLP自动标记和提取PDF文件中的关键信息?

Bagaimana untuk menandakan dan mengekstrak maklumat penting secara automatik daripada fail PDF dengan Python untuk NLP?

Abstrak:
Natural Language Processing (NLP) ialah satu disiplin yang mengkaji cara berinteraksi dengan bahasa semula jadi antara manusia dan komputer. Dalam aplikasi praktikal, kita selalunya perlu memproses sejumlah besar data teks, yang mengandungi pelbagai maklumat. Artikel ini akan memperkenalkan cara menggunakan teknologi NLP dalam Python, digabungkan dengan perpustakaan dan alatan pihak ketiga, untuk menanda dan mengekstrak maklumat penting secara automatik dalam fail PDF.

Kata kunci: Python, NLP, PDF, penanda, pengekstrakan

1 Tetapan persekitaran dan pemasangan pergantungan
Untuk menggunakan Python untuk NLP untuk menanda dan mengekstrak maklumat utama secara automatik dalam fail PDF, kami perlu menyediakan persekitaran yang sepadan dan memasangnya terlebih dahulu. Perpustakaan bergantung yang diperlukan. Berikut ialah beberapa perpustakaan dan alatan yang biasa digunakan:

  1. pdfplumber: digunakan untuk memproses fail PDF dan boleh mengekstrak maklumat seperti teks dan jadual.
  2. nltk: Kit alat pemprosesan bahasa semula jadi, menyediakan pelbagai fungsi pemprosesan dan analisis teks.
  3. scikit-learn: Pustaka pembelajaran mesin, termasuk beberapa pengekstrakan ciri teks dan algoritma pengelasan yang biasa digunakan.

Anda boleh menggunakan arahan berikut untuk memasang pustaka ini:

pip install pdfplumber
pip install nltk
pip install scikit-learn

2. Pengekstrakan teks PDF
Menggunakan pdfplumber library dengan mudah boleh mengekstrak maklumat pdfplumber. Berikut ialah kod contoh mudah:

import pdfplumber

def extract_text_from_pdf(file_path):
    with pdfplumber.open(file_path) as pdf:
        text = []
        for page in pdf.pages:
           text.append(page.extract_text())
    return text

file_path = "example.pdf"
text = extract_text_from_pdf(file_path)
print(text)

Kod di atas akan membuka fail PDF bernama "example.pdf" dan mengekstrak teks semua halamannya. Teks yang diekstrak dikembalikan sebagai senarai.

3. Prapemprosesan dan pelabelan teks
Sebelum pelabelan teks, kami biasanya perlu melakukan beberapa operasi prapemprosesan untuk meningkatkan ketepatan dan kesan pelabelan. Operasi prapemprosesan yang biasa digunakan termasuk mengalih keluar tanda baca, menghentikan perkataan, nombor, dsb. Kita boleh menggunakan perpustakaan nltk untuk melaksanakan fungsi ini. Berikut ialah contoh kod mudah:

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer

def preprocess_text(text):
    # 分词
    tokens = word_tokenize(text)
    
    # 去除标点符号和停用词
    tokens = [token for token in tokens if token.isalpha() and token.lower() not in stopwords.words("english")]
    
    # 词形还原
    lemmatizer = WordNetLemmatizer()
    tokens = [lemmatizer.lemmatize(token) for token in tokens]
    
    return tokens

preprocessed_text = [preprocess_text(t) for t in text]
print(preprocessed_text)

Kod di atas mula-mula menggunakan fungsi word_tokenize nltk untuk membahagikan teks, kemudian mengalih keluar tanda baca dan menghentikan perkataan, dan melemasikan perkataan. Akhir sekali, teks praproses dikembalikan dalam bentuk senarai.

4 Pengekstrakan maklumat utama
Selepas menanda teks, kami boleh menggunakan algoritma pembelajaran mesin untuk mengekstrak maklumat utama. Kaedah yang biasa digunakan termasuk pengelasan teks, pengecaman entiti, dsb. Berikut ialah kod sampel ringkas yang menunjukkan cara menggunakan perpustakaan scikit-learn untuk pengelasan teks:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline

# 假设我们有一个训练集,包含了已标记的文本和对应的标签
train_data = [("This is a positive text", "Positive"), 
              ("This is a negative text", "Negative")]

# 使用管道构建分类器模型
text_classifier = Pipeline([
    ("tfidf", TfidfVectorizer()),
    ("clf", MultinomialNB())
])

# 训练模型
text_classifier.fit(train_data)

# 使用模型进行预测
test_data = ["This is a test text"]
predicted_label = text_classifier.predict(test_data)
print(predicted_label)

Kod di atas mula-mula mencipta model pengelas teks berdasarkan pengekstrakan ciri TF-IDF dan algoritma pengelasan Naive Bayes. Data latihan kemudiannya digunakan untuk latihan dan model digunakan untuk membuat ramalan pada data ujian. Akhirnya, label yang diramalkan dicetak.

5 Ringkasan
Menggunakan Python untuk NLP untuk menanda dan mengekstrak maklumat penting secara automatik dalam fail PDF ialah teknologi yang sangat berguna. Artikel ini memperkenalkan cara menggunakan perpustakaan dan alatan seperti pdfplumber, nltk dan scikit-belajar untuk melaksanakan pengekstrakan teks PDF, prapemprosesan teks, penandaan teks dan pengekstrakan maklumat utama dalam persekitaran Python. Saya harap artikel ini dapat membantu pembaca dan menggalakkan pembaca untuk mengkaji lebih lanjut dan menggunakan teknologi NLP.

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

Kenyataan:
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