Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk menggunakan Python untuk NLP untuk mengekstrak teks serupa dengan cepat daripada berbilang fail PDF?

Bagaimana untuk menggunakan Python untuk NLP untuk mengekstrak teks serupa dengan cepat daripada berbilang fail PDF?

王林
Lepaskan: 2023-09-27 15:24:28
asal
883 orang telah melayarinya

如何利用Python for NLP从多个PDF文件中快速提取相似的文本?

Bagaimana cara menggunakan Python untuk NLP untuk mengekstrak teks serupa dengan cepat daripada berbilang fail PDF?

Pengenalan:
Dengan perkembangan Internet dan kemajuan teknologi maklumat, orang ramai memproses sejumlah besar data teks dalam kehidupan dan kerja harian mereka. Pemprosesan Bahasa Semulajadi (NLP) ialah satu disiplin yang mengkaji cara membolehkan komputer memahami, memproses dan menjana bahasa semula jadi. Sebagai bahasa pengaturcaraan yang popular, Python mempunyai perpustakaan dan alatan NLP yang kaya yang boleh membantu kami memproses data teks dengan cepat. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Python untuk NLP untuk mengekstrak teks yang serupa daripada berbilang fail PDF.

Langkah 1: Pasang perpustakaan dan alatan yang diperlukan
Pertama, kami perlu memasang beberapa perpustakaan dan alatan Python yang diperlukan untuk mencapai matlamat kami. Berikut ialah beberapa perpustakaan dan alatan yang biasa digunakan:

  1. PyPDF2: Perpustakaan untuk mengekstrak maklumat teks daripada fail PDF.
  2. nltk: Kit alat bahasa semula jadi, menyediakan pelbagai fungsi untuk memproses data teks.
  3. gensim: Perpustakaan untuk pemodelan topik dan mendapatkan semula persamaan.

Anda boleh menggunakan arahan berikut untuk memasang perpustakaan ini:

pip install PyPDF2 nltk gensim
Salin selepas log masuk

Langkah 2: Muatkan fail PDF dan ekstrak teks
Dalam langkah ini, kami akan memuatkan berbilang fail PDF dan mengekstrak teks daripadanya. Kita boleh menggunakan perpustakaan PyPDF2 untuk mencapai matlamat ini. Berikut ialah contoh kod mudah:

import PyPDF2

def extract_text_from_pdf(file_path):
    with open(file_path, 'rb') as file:
        reader = PyPDF2.PdfFileReader(file)
        text = []
        for page_num in range(reader.numPages):
            page = reader.getPage(page_num)
            text.append(page.extract_text())
        return ' '.join(text)

# 示例用法
file_path = 'path/to/pdf/file.pdf'
text = extract_text_from_pdf(file_path)
print(text)
Salin selepas log masuk

Langkah 3: Praproses data teks
Sebelum pengekstrakan teks yang serupa, kita perlu praproses data teks untuk menghapuskan hingar dan menormalkan teks. Langkah prapemprosesan biasa termasuk mengalih keluar perkataan henti, tanda baca dan nombor, menukar kepada huruf kecil, dsb. Kita boleh menggunakan perpustakaan nltk untuk melaksanakan fungsi ini. Berikut ialah contoh kod:

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

def preprocess_text(text):
    # 分词
    tokens = word_tokenize(text)
    
    # 转换为小写字母
    tokens = [token.lower() for token in tokens]
    
    # 去除停用词
    stop_words = set(stopwords.words('english'))
    tokens = [token for token in tokens if token not in stop_words]

    # 去除标点符号和数字
    tokens = [token for token in tokens if token not in string.punctuation and not token.isdigit()]

    # 词形还原
    lemmatizer = WordNetLemmatizer()
    tokens = [lemmatizer.lemmatize(token) for token in tokens]
    
    # 合并词汇
    text = ' '.join(tokens)
    
    return text

# 示例用法
preprocessed_text = preprocess_text(text)
print(preprocessed_text)
Salin selepas log masuk

Langkah 4: Kira persamaan teks
Dalam langkah ini, kami akan menggunakan perpustakaan gensim untuk mengira persamaan antara teks. Kita boleh menggunakan model Bag of Words (Bag of Words) atau TF-IDF (Term Frequency-Inverse Document Frequency) untuk mewakili teks dan mencari teks yang serupa dengan mengira matriks persamaan. Berikut ialah kod sampel:

from gensim import corpora, models, similarities

def compute_similarity(texts):
    # 创建词袋模型
    dictionary = corpora.Dictionary(texts)
    corpus = [dictionary.doc2bow(text) for text in texts]
    
    # 计算TF-IDF
    tfidf = models.TfidfModel(corpus)
    tfidf_corpus = tfidf[corpus]
    
    # 计算相似度矩阵
    index = similarities.MatrixSimilarity(tfidf_corpus)
    
    # 计算相似文本
    similarities = index[tfidf_corpus]
    
    return similarities

# 示例用法
texts = [preprocess_text(text1), preprocess_text(text2), preprocess_text(text3)]
similarity_matrix = compute_similarity(texts)
print(similarity_matrix)
Salin selepas log masuk

Langkah 5: Cari teks yang serupa
Akhir sekali, dalam matriks persamaan yang dikira dalam Langkah 4, kita boleh mencari teks yang serupa mengikut keperluan kita. Berikut ialah contoh kod:

def find_similar_texts(texts, threshold):
    similar_texts = []
    for i in range(len(texts)):
        for j in range(i+1, len(texts)):
            if similarity_matrix[i][j] > threshold:
                similar_texts.append((i, j))
    return similar_texts

# 示例用法
similar_texts = find_similar_texts(texts, 0.7)
for i, j in similar_texts:
    print(f'Text {i+1} is similar to Text {j+1}')
Salin selepas log masuk

Kesimpulan:
Melalui langkah di atas, kami memperkenalkan cara menggunakan Python untuk NLP untuk mengekstrak teks serupa dengan cepat daripada berbilang fail PDF. Dengan perpustakaan PyPDF2, kami boleh memuatkan dan mengekstrak data teks dengan mudah. Menggunakan perpustakaan nltk, kita boleh melakukan prapemprosesan teks, termasuk pembahagian perkataan, penyingkiran perkataan henti, tanda baca, nombor, penukaran huruf kecil dan lemmatisasi. Akhirnya, melalui perpustakaan gensim, kami mengira matriks persamaan dan menemui teks yang serupa. Saya harap artikel ini akan membantu anda menggunakan teknologi NLP dalam amalan.

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

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