Maison  >  Article  >  développement back-end  >  Python pour le NLP : Comment organiser et classer automatiquement le texte dans les fichiers PDF ?

Python pour le NLP : Comment organiser et classer automatiquement le texte dans les fichiers PDF ?

王林
王林original
2023-09-28 09:12:161453parcourir

Python for NLP:如何自动整理和分类PDF文件中的文本?

Python pour le NLP : Comment organiser et classer automatiquement le texte dans les fichiers PDF ?

Résumé :
Avec le développement d'Internet et la croissance explosive de l'information, nous sommes confrontés chaque jour à une grande quantité de données textuelles. À cette époque, l’organisation et la classification automatiques du texte sont devenues de plus en plus importantes. Cet article explique comment utiliser Python et ses puissantes fonctions de traitement du langage naturel (NLP) pour extraire automatiquement le texte des fichiers PDF, l'organiser et le classer.

1. Installez les bibliothèques Python nécessaires

Avant de commencer, nous devons nous assurer que les bibliothèques Python suivantes sont installées :

  • pdfplomber : utilisé pour extraire le texte d'un PDF.
  • nltk : pour le traitement du langage naturel.
  • sklearn : pour la classification de texte.
    Peut être installé à l'aide de la commande pip. Par exemple : pip install pdfplumber

2. Extraire le texte des fichiers PDF

Tout d'abord, nous devons utiliser la bibliothèque pdfplumber pour extraire le texte des fichiers PDF.

import pdfplumber

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

Dans le code ci-dessus, nous définissons une fonction appelée extract_text_from_pdf pour extraire le texte d'un fichier PDF donné. La fonction accepte un chemin de fichier comme paramètre et ouvre le fichier PDF à l'aide de la bibliothèque pdfplumber, puis parcourt chaque page via une boucle et extrait le texte à l'aide de la méthode extract_text().

3. Prétraitement du texte

Avant la classification du texte, nous devons généralement prétraiter le texte. Cela inclut des étapes telles que la suppression des mots vides, la tokenisation, la radicalisation, etc. Dans cet article, nous utiliserons la bibliothèque nltk pour accomplir ces tâches.

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

def preprocess_text(text):
    # 将文本转换为小写
    text = text.lower()
    
    # 分词
    tokens = word_tokenize(text)
    
    # 移除停用词
    stop_words = set(stopwords.words("english"))
    filtered_tokens = [word for word in tokens if word not in stop_words]
    
    # 词干提取
    stemmer = SnowballStemmer("english")
    stemmed_tokens = [stemmer.stem(word) for word in filtered_tokens]
    
    # 返回预处理后的文本
    return " ".join(stemmed_tokens)

Dans le code ci-dessus, nous convertissons d'abord le texte en minuscules, puis utilisons la méthode word_tokenize() pour tokeniser le texte. Ensuite, nous utilisons la bibliothèque stopwords pour supprimer les mots vides et SnowballStemmer pour la radicalisation. Enfin, nous renvoyons le texte prétraité.

4. Classification du texte

Maintenant que nous avons extrait le texte du fichier PDF et l'avons prétraité, nous pouvons utiliser des algorithmes d'apprentissage automatique pour classer le texte. Dans cet article, nous utiliserons l'algorithme Naive Bayes comme classificateur.

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

def classify_text(text):
    # 加载已训练的朴素贝叶斯分类器模型
    model = joblib.load("classifier_model.pkl")
    
    # 加载已训练的词袋模型
    vectorizer = joblib.load("vectorizer_model.pkl")
    
    # 预处理文本
    preprocessed_text = preprocess_text(text)
    
    # 将文本转换为特征向量
    features = vectorizer.transform([preprocessed_text])
    
    # 使用分类器预测文本类别
    predicted_category = model.predict(features)
    
    # 返回预测结果
    return predicted_category[0]

Dans le code ci-dessus, nous chargeons d'abord le modèle de classificateur Naive Bayes formé et le modèle de sac de mots à l'aide de la bibliothèque joblib. Ensuite, nous convertissons le texte prétraité en vecteurs de caractéristiques, puis utilisons un classificateur pour classer le texte. Enfin, nous renvoyons le résultat de classification prédit du texte.

5. Intégrez le code et traitez automatiquement les fichiers PDF

Maintenant, nous pouvons intégrer le code ci-dessus et traiter automatiquement les fichiers PDF, extraire le texte et le classer.

import os

def process_pdf_files(folder_path):
    for filename in os.listdir(folder_path):
        if filename.endswith(".pdf"):
            file_path = os.path.join(folder_path, filename)
            
            # 提取文本
            text = extract_text_from_pdf(file_path)
            
            # 分类文本
            category = classify_text(text)
            
            # 打印文件名和分类结果
            print("File:", filename)
            print("Category:", category)
            print("--------------------------------------")

# 指定待处理的PDF文件所在文件夹
folder_path = "pdf_folder"

# 处理PDF文件
process_pdf_files(folder_path)

Dans le code ci-dessus, nous définissons d'abord une fonction appelée process_pdf_files pour traiter automatiquement les fichiers du dossier PDF. Ensuite, utilisez la méthode listdir() de la bibliothèque os pour parcourir chaque fichier du dossier, extraire le texte du fichier PDF et le classer. Enfin, nous imprimons le nom du fichier et les résultats de la classification.

Conclusion

En utilisant les fonctions Python et NLP, nous pouvons facilement extraire le texte des fichiers PDF, l'organiser et le classer. Cet article fournit un exemple de code pour aider les lecteurs à comprendre comment traiter automatiquement le texte dans les fichiers PDF, mais les scénarios d'application spécifiques peuvent être différents et doivent être ajustés et modifiés en fonction de la situation réelle.

Références :

  • document officiel pdfplumber : https://github.com/jsvine/pdfplumber
  • document officiel nltk : https://www.nltk.org/
  • document officiel sklearn : https://scikit - learn.org/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn