TextRankを使用したPythonによるキーワード抽出と要約の実装方法


  1. ライブラリのインストール: まず、Pythonのパッケージマネージャー(pip)を使用して、必要なライブラリをインストールします。以下のコマンドを実行してください。
pip install gensim
pip install sumy
  1. テキストの前処理: キーワード抽出と要約を行う前に、テキストデータを前処理する必要があります。これには、テキストのクリーニング、トークン化、ストップワードの除去などが含まれます。以下は、テキストを前処理するための基本的なコード例です。
import re
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
def preprocess_text(text):
    # テキストのクリーニング
    text = re.sub(r'\d+', '', text)  # 数字の削除
    text = text.lower()  # 小文字化
    text = re.sub(r'\s+', ' ', text)  # 余分な空白の削除
    # トークン化
    tokens = word_tokenize(text)
    # ストップワードの除去
    stop_words = set(stopwords.words('english'))
    tokens = [token for token in tokens if token not in stop_words]
    return tokens
  1. TextRankアルゴリズムの実装: TextRankアルゴリズムは、グラフベースのランキングアルゴリズムであり、テキスト内の重要なキーワードやフレーズを抽出するために使用されます。以下は、gensimライブラリを使用してTextRankアルゴリズムを実装する基本的なコード例です。
from gensim.summarization import keywords
def extract_keywords(text):
    tokens = preprocess_text(text)
    keyword_list = keywords(' '.join(tokens), scores=True, lemmatize=True)
    return [keyword for keyword, score in keyword_list]
  1. 要約の実装: 要約は、テキストの重要な内容を短くまとめるプロセスです。sumyライブラリは、TextRankを使用してテキストを要約するための便利なツールを提供しています。以下は、sumyライブラリを使用してテキストを要約する基本的なコード例です。
from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.text_rank import TextRankSummarizer
def summarize_text(text, num_sentences=3):
    parser = PlaintextParser.from_string(text, Tokenizer('english'))
    summarizer = TextRankSummarizer()
    summary_sentences = summarizer(parser.document, num_sentences)
    return ' '.join([str(sentence) for sentence in summary_sentences])

これらのコード例を使用することで、テキストデータからキーワードを抽出し、要約を作成することができます。また、必要に応じてコードをカスタマイズして拡張することもできます。