ホームページ  >  記事  >  バックエンド開発  >  NLP 用 Python: PDF ファイル内のテキストを自動的に整理および分類するにはどうすればよいですか?

NLP 用 Python: PDF ファイル内のテキストを自動的に整理および分類するにはどうすればよいですか?

王林
王林オリジナル
2023-09-28 09:12:161453ブラウズ

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

NLP 用 Python: PDF ファイル内のテキストを自動的に整理および分類するにはどうすればよいですか?

要約:
インターネットの発展と情報の爆発的な増加に伴い、私たちは毎日大量のテキストデータに直面しています。この時代では、テキストを自動的に整理および分類することがますます重要になっています。この記事では、Python とその強力な自然言語処理 (NLP) 機能を使用して、PDF ファイルからテキストを自動的に抽出し、整理、分類する方法を紹介します。

1. 必要な Python ライブラリをインストールします

始める前に、次の Python ライブラリがインストールされていることを確認する必要があります:

  • pdfplumber: 抽出に使用されます。 PDF テキストから。
  • nltk: 自然言語処理に使用されます。
  • sklearn: テキストの分類に使用されます。
    pip コマンドを使用してインストールできます。例: pip install pdfplumber

2. PDF ファイルからテキストを抽出する

まず、pdfplumber ライブラリを使用して 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

上記のコードでは、指定された PDF ファイルからテキストを抽出するための extract_text_from_pdf という名前の関数を定義します。この関数はファイル パスをパラメータとして受け取り、pdfplumber ライブラリを使用して PDF ファイルを開き、ループを通じて各ページを反復処理し、extract_text() メソッドを使用してテキストを抽出します。

3. テキストの前処理

テキストを分類する前に、通常、テキストを前処理する必要があります。これには、ストップワードの削除、トークン化、ステミングなどの手順が含まれます。この記事では、nltk ライブラリを使用してこれらのタスクを実行します。

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)

上記のコードでは、最初にテキストを小文字に変換し、次に word_tokenize() メソッドを使用してテキストを単語に分割します。次に、ストップワード ライブラリを使用してストップワードを削除し、SnowballStemmer をステミングに使用します。最後に、前処理されたテキストを返します。

4. テキストの分類

PDF ファイルからテキストを抽出して前処理したので、機械学習アルゴリズムを使用してテキストを分類できます。この記事では、Naive Bayes アルゴリズムを分類器として使用します。

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]

上記のコードでは、まず joblib ライブラリを使用して、トレーニング済みの単純ベイズ分類器モデルとバッグオブワード モデルを読み込みます。次に、前処理されたテキストを特徴ベクトルに変換し、分類器を使用してテキストを分類します。最後に、テキストの予測分類結果を返します。

5. コードを統合して PDF ファイルを自動的に処理する

これで、上記のコードを統合して、PDF ファイルを自動的に処理し、テキストを抽出して分類できるようになります。

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)

上記のコードでは、まず PDF フォルダー内のファイルを自動的に処理する process_pdf_files という名前の関数を定義します。次に、OS ライブラリの listdir() メソッドを使用して、フォルダー内の各ファイルを反復処理し、PDF ファイルのテキストを抽出して分類します。最後に、ファイル名と分類結果を出力します。

結論

Python と NLP 関数を使用すると、PDF ファイルからテキストを簡単に抽出し、整理および分類できます。この記事では、PDF ファイル内のテキストを自動的に処理する方法を読者が理解できるようにサンプル コードを提供しますが、特定のアプリケーション シナリオは異なる場合があり、実際の状況に応じて調整および変更する必要があります。

参考文献:

  • pdfplumber 公式ドキュメント: https://github.com/jsvine/pdfplumber
  • nltk 公式ドキュメント: https://www.nltk 。 org/
  • sklearn 公式ドキュメント: https://scikit-learn.org/

以上がNLP 用 Python: PDF ファイル内のテキストを自動的に整理および分類するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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