NLP 用 Python: PDF ファイル内のテキストを自動的に整理および分類するにはどうすればよいですか?
要約:
インターネットの発展と情報の爆発的な増加に伴い、私たちは毎日大量のテキストデータに直面しています。この時代では、テキストを自動的に整理および分類することがますます重要になっています。この記事では、Python とその強力な自然言語処理 (NLP) 機能を使用して、PDF ファイルからテキストを自動的に抽出し、整理、分類する方法を紹介します。
始める前に、次の Python ライブラリがインストールされていることを確認する必要があります:
まず、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() メソッドを使用してテキストを抽出します。
テキストを分類する前に、通常、テキストを前処理する必要があります。これには、ストップワードの削除、トークン化、ステミングなどの手順が含まれます。この記事では、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 をステミングに使用します。最後に、前処理されたテキストを返します。
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 ライブラリを使用して、トレーニング済みの単純ベイズ分類器モデルとバッグオブワード モデルを読み込みます。次に、前処理されたテキストを特徴ベクトルに変換し、分類器を使用してテキストを分類します。最後に、テキストの予測分類結果を返します。
これで、上記のコードを統合して、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 ファイル内のテキストを自動的に処理する方法を読者が理解できるようにサンプル コードを提供しますが、特定のアプリケーション シナリオは異なる場合があり、実際の状況に応じて調整および変更する必要があります。
参考文献:
以上がNLP 用 Python: PDF ファイル内のテキストを自動的に整理および分類するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。