隨著資訊量的爆炸成長,如何快速從海量文字中提取有用資訊,成為一個重要的課題。今天我們要探索兩個實用的 自然語言處理(NLP)技術:
自動摘要(Text Summarization)
關鍵詞擷取(Keyword Extraction)
這些方法能幫助我們快速理解文件的核心內容,並在學術研究、新聞媒體、商業分析等領域廣泛應用。
一、什麼是自動摘要?
自動摘要是讓電腦從長篇文章中 自動生成精簡版本,主要有兩種方法:
抽取式摘要(Extractive Summarization)
直接挑選文章中最重要的句子,組合成摘要。
優點:快速、可解釋。
缺點:句子可能不連貫。
生成式摘要(Abstractive Summarization)
模型學習語意後,用自己的語言重寫摘要。
優點:更接近人類撰寫的摘要。
缺點:需要大量資料與運算資源。
二、關鍵詞擷取
關鍵詞擷取的目標是從文章中找出 最能代表主題的詞彙。常見方法有:
TF-IDF (Term Frequency - Inverse Document Frequency)
計算詞語在單一文件中出現的頻率,並同時考量它在所有文件中的普遍程度。
TextRank
一種基於圖論的演算法,模仿Google PageRank來挑選重要詞語。
三、Python 實作:自動摘要與關鍵詞擷取
我們使用sumy進行摘要,並用sklearn的TfidfVectorizer提取關鍵詞。
#安裝需要的套件(請在終端機執行)
#pip install sumy scikit-learn nltk
from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.lex_rank import LexRankSummarizer
from sklearn.feature_extraction.text import TfidfVectorizer
#測試文本
text = """
人工智慧(AI)正在迅速改變我們的生活。從醫療診斷到金融投資,AI技術正不斷突破。
然而,它也帶來了隱私、安全與倫理的挑戰。未來,如何在技術發展與社會責任之間取得平衡,將是全球需要共同面對的重要課題。
"""
#--- 自動摘要 ---
parser = PlaintextParser.from_string(text, Tokenizer("english"))
summarizer = LexRankSummarizer()
summary = summarizer(parser.document, 2) # 取 2 句作摘要
print("自動摘要:")
for sentence in summary:
print("-", sentence)
#--- 關鍵詞擷取 ---
vectorizer = TfidfVectorizer(stop_words="english")
X = vectorizer.fit_transform([text])
keywords = vectorizer.get_feature_names_out()
print("\n 關鍵詞擷取:")
print(sorted(keywords, key=lambda w: X[0, vectorizer.vocabulary_[w]], reverse=True)[:5])
範例輸出:
自動摘要:
四、應用場景
新聞摘要:快速掌握新聞重點。
學術論文摘要:幫助研究者快速篩選相關文獻。
客服聊天分析:提取顧客常見問題關鍵詞,提升服務效率。
學習了自動摘要與關鍵詞擷取的基本原理與Python實作。
這些工具能幫助我們在面對龐大的文字資料時更快提取重點,提升效率。