
NLP 用 Python を使用して PDF ファイルから構造化情報を抽出するにはどうすればよいですか?
1. はじめに
ビッグデータ時代の到来により、大量の PDF ファイルを含む膨大なテキスト データが蓄積され続けています。ただし、PDF ファイルはバイナリ形式であり、テキストの内容や構造化された情報を直接抽出するのは簡単ではありません。この記事では、Python および関連する自然言語処理 (NLP) ツールを使用して PDF ファイルから構造化情報を抽出する方法を紹介します。
2. Python と関連ライブラリのインストール
開始する前に、Python と関連ライブラリをインストールする必要があります。 Python 公式 Web サイトから最新バージョンの Python をダウンロードしてインストールします。 Python をインストールした後、pip コマンドを使用して次の関連ライブラリをインストールする必要があります:
- PyPDF2: PDF ファイル処理用
- nltk: Python の自然言語処理ツールキット
- pandas: データ分析と処理に使用されます
##インストールが完了したら、Python コードの作成を開始できます。
3. 必要なライブラリをインポートします
まず、PyPDF2、nltk、pandas などの必要なライブラリをインポートする必要があります:
1 2 3 | import PyPDF2
import nltk
import pandas as pd
|
ログイン後にコピー
4. PDF ファイルを読み取る
接続次に、 PDF ファイルを読む必要があります。 PyPDF2 ライブラリの PdfReader クラスを使用してファイルを読み取ります。
1 2 | pdf_file = open( 'file.pdf' , 'rb' )
pdf_reader = PyPDF2.PdfReader(pdf_file)
|
ログイン後にコピー
ここでは、「file.pdf」を読み取りたい実際の PDF ファイル名に置き換える必要があります。
5. テキスト コンテンツの抽出
PDF ファイルを読み込んだ後、PyPDF2 ライブラリが提供する API を使用して、PDF 内のテキスト コンテンツを抽出できます:
1 2 3 | text_content = ''
for page in pdf_reader.pages:
text_content += page.extract_text()
|
ログイン後にコピー
この方法では、すべてのページのテキスト コンテンツが連結され、text_content 変数に保存されます。
6. データ処理と前処理
テキスト コンテンツを抽出した後、それを処理および前処理する必要があります。まず、その後の分析と処理のためにテキストを文に分割します。これを実現するには、nltk ライブラリを使用します:
1 | sentence_tokens = nltk.sent_tokenize(text_content)
|
ログイン後にコピー
次に、後続のテキスト分析と処理のために、各文を再度セグメント化します:
1 | word_tokens = [nltk.word_tokenize(sentence) for sentence in sentence_tokens]
|
ログイン後にコピー
7. テキスト分析と処理
完了後データの前処理が完了したら、テキストの分析と処理を開始できます。ここでは、キーワード抽出を例に具体的なコード例を示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from collections import Counter
# 停用词
stop_words = set(stopwords.words( 'english' ))
# 词形还原
lemmatizer = WordNetLemmatizer()
# 去除停用词,词形还原,统计词频
word_freq = Counter()
for sentence in word_tokens:
for word in sentence:
if word.lower() not in stop_words and word.isalpha():
word = lemmatizer.lemmatize(word.lower())
word_freq[word] += 1
# 提取前20个关键词
top_keywords = word_freq.most_common(20)
|
ログイン後にコピー
このコードでは、nltk ライブラリによって提供されるストップワード クラスと WordNetLemmatizer クラスを使用して、ストップ ワードと見出し語化をそれぞれ処理します。次に、Counter クラスを使用して各単語の単語頻度をカウントし、頻度の高い上位 20 個のキーワードを抽出します。
8. 結果の表示と保存
最後に、抽出したキーワードを表に表示し、CSV ファイルとして保存できます:
1 2 | df_keywords = pd.DataFrame(top_keywords, columns=[ 'Keyword' , 'Frequency' ])
df_keywords.to_csv( 'keywords.csv' , index=False)
|
ログイン後にコピー
このようにして、表を取得できます。キーワードはフォームに表示され、「keywords.csv」という名前の CSV ファイルとして保存されます。
9. 概要
Python と関連する NLP ツールを使用すると、PDF ファイルから構造化情報を簡単に抽出できます。実際のアプリケーションでは、固有表現認識やテキスト分類などの他の NLP テクノロジーを使用して、必要に応じてより複雑なテキスト分析や処理を実行することもできます。この記事が、読者が PDF ファイルを処理する際に有益な情報を抽出するのに役立つことを願っています。
以上がNLP 用 Python を使用して PDF ファイルから構造化情報を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。