最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+Sklearn實現(xiàn)英文文本關鍵詞提取的完整代碼

 更新時間:2026年03月12日 09:31:26   作者:Westward-sun.  
在自然語言處理(NLP)的文本分析領域,TF-IDF 是實現(xiàn)關鍵詞提取的經(jīng)典加權算法,能精準篩選出文本中兼具單篇高頻和語料庫低頻的核心詞匯,本文將基于Python+Sklearn,針對英文文本實現(xiàn) TF-IDF 的全流程實戰(zhàn),需要的朋友可以參考下

前言

在自然語言處理(NLP)的文本分析領域,TF-IDF 是實現(xiàn)關鍵詞提取的經(jīng)典加權算法,能精準篩選出文本中兼具單篇高頻語料庫低頻的核心詞匯。本文將基于Python+Sklearn,針對英文文本實現(xiàn) TF-IDF 的全流程實戰(zhàn),使用真實的英文語料文件完成語料加載、TF-IDF 矩陣計算、關鍵詞排序,代碼注釋詳盡、可直接復制運行,零基礎也能快速上手,完美適配英文文本的關鍵詞提取需求。

一、實戰(zhàn)目標與環(huán)境準備

1.1 實戰(zhàn)目標

基于本地task2_1.txt英文語料文件構建語料庫,通過 Sklearn 的TfidfVectorizer自動完成英文分詞、停用詞過濾、TF-IDF 計算,最終提取語料中每篇文檔的關鍵詞并按 TF-IDF 值降序排列。

1.2 環(huán)境準備

本次實戰(zhàn)僅需兩個核心 Python 庫,通過pip一鍵安裝,無額外依賴:

# 核心:TF-IDF計算與向量化
pip install scikit-learn
# 輔助:TF-IDF結果可視化與數(shù)據(jù)處理
pip install pandas

注意:sklearn 版本建議≥0.24.0,避免get_feature_names_out()方法出現(xiàn)版本警告;Python 版本推薦 3.7 及以上。

二、實戰(zhàn)語料文件說明

本次實戰(zhàn)使用的語料文件為task2_1.txt,每行對應一篇獨立的英文文檔,共 6 篇文檔,語料內(nèi)容如下:

This is the first document
This document is the second document
And this is the third one
Is this the first document
This line has several words
This is the final document

將該文件放在代碼同一目錄下,即可直接運行代碼,無需額外修改路徑。

三、完整實戰(zhàn)代碼(可直接復制運行)

以下代碼為最終可運行版本,基于核心實戰(zhàn)邏輯編寫,注釋詳盡,包含語料加載、TF-IDF 計算、結果可視化、關鍵詞排序全流程,直接復制到本地即可執(zhí)行:

# 導入TF-IDF向量化器(Sklearn核心工具,內(nèi)置英文分詞/去停用詞功能)
from sklearn.feature_extraction.text import TfidfVectorizer
# 導入pandas庫,用于將TF-IDF結果轉換為表格,直觀展示
import pandas as pd
# 步驟1:讀取語料庫文件,構建語料列表
# 以只讀模式打開英文語料文件,指定utf-8編碼避免亂碼
inFile = open('task2_1.txt', 'r', encoding='utf-8')
# 按行讀取文件,每行作為一篇獨立文檔,形成語料列表corpus
corpus = inFile.readlines()
# 關閉文件,釋放系統(tǒng)資源,避免內(nèi)存占用
inFile.close()
# 步驟2:初始化TF-IDF向量化器,擬合語料并計算TF-IDF稀疏矩陣
# TfidfVectorizer默認實現(xiàn):英文分詞、過濾英文停用詞(the/is/this等)、TF-IDF計算
vectorizer = TfidfVectorizer()
# fit_transform:擬合語料+轉換為TF-IDF稀疏矩陣,行=文檔,列=詞匯,值=TF-IDF值
tfidf = vectorizer.fit_transform(corpus)
# 步驟3:打印TF-IDF稀疏矩陣,查看原始計算結果
print("===== TF-IDF稀疏矩陣 =====")
print(tfidf)
# 稀疏矩陣解讀:(行索引, 列索引)  TF-IDF值,僅存儲非0值,節(jié)省內(nèi)存
# 步驟4:獲取語料庫中的所有有效詞匯列表(已過濾停用詞)
# get_feature_names_out():替代舊版get_feature_names(),解決版本兼容警告
wordlist = vectorizer.get_feature_names_out()
print("\n===== 語料庫有效詞匯列表(已過濾停用詞) =====")
print(wordlist)
# 步驟5:將稀疏矩陣轉換為DataFrame表格,更直觀展示各詞匯的TF-IDF值
# tfidf.T:矩陣轉置,行=詞匯,列=文檔;todense():稀疏矩陣轉稠密矩陣(小語料適用)
tfidf_df = pd.DataFrame(tfidf.T.todense(), index=wordlist)
print("\n===== TF-IDF值數(shù)據(jù)表格(行=詞匯,列=文檔) =====")
print(tfidf_df)
# 步驟6:提取每篇文檔的關鍵詞,按TF-IDF值從高到低降序排列
print("\n===== 各文檔關鍵詞(按TF-IDF值降序排列) =====")
# 遍歷語料庫中的每一篇文檔,j為文檔索引
for j in range(len(corpus)):
    # 獲取第j篇文檔中所有詞匯的TF-IDF值,轉換為列表
    tfidf_values = tfidf_df.iloc[:, j].to_list()
    # 構建“詞匯-TF-IDF值”的字典,便于后續(xù)排序
    word_tfidf_dict = {}
    for i in range(len(wordlist)):
        word_tfidf_dict[wordlist[i]] = tfidf_values[i]
    # 按TF-IDF值降序排序,x[1]表示按字典的值排序
    sorted_keywords = sorted(word_tfidf_dict.items(), key=lambda x: x[1], reverse=True)
    # 打印第j+1篇文檔的關鍵詞,序號從1開始更符合閱讀習慣
    print(f"第{j+1}篇文檔:{sorted_keywords}")

四、核心代碼模塊逐行解析

4.1 語料加載模塊

inFile = open('task2_1.txt', 'r', encoding='utf-8')
corpus = inFile.readlines()
inFile.close()
  • 核心作用:將本地 TXT 語料文件轉換為 Python 可處理的列表格式,corpus中每個元素對應一篇英文文檔;
  • 關鍵細節(jié):指定encoding='utf-8'確保文件讀取無亂碼,即使是純英文文件,該配置也能避免特殊字符解析錯誤;
  • 路徑說明:若文件不在代碼同目錄,需填寫完整絕對路徑,如r'C:\NLP\data\task2_1.txt',路徑前加r避免轉義字符問題。

4.2 TF-IDF 矩陣計算模塊

vectorizer = TfidfVectorizer()
tfidf = vectorizer.fit_transform(corpus)
  • TfidfVectorizer:Sklearn 封裝的 TF-IDF 專用工具,對英文原生支持,默認完成「英文分詞→過濾英文停用詞(the/is/this/and 等)→詞頻統(tǒng)計→TF-IDF 歸一化計算」全流程,無需手動實現(xiàn)任何公式;
  • fit_transform():一站式完成 “語料分析” 和 “矩陣轉換”,fit分析語料庫的詞匯分布、文檔數(shù)等基礎信息,transform將語料轉換為TF-IDF 稀疏矩陣;
  • 稀疏矩陣優(yōu)勢:僅存儲非 0 值(即詞匯在文檔中出現(xiàn)的 TF-IDF 值),大幅節(jié)省內(nèi)存,適合處理大規(guī)模英文語料庫。

4.3 有效詞匯提取模塊

wordlist = vectorizer.get_feature_names_out() 
  • 提取語料庫中所有有效詞匯,自動過濾 Sklearn 內(nèi)置的英文停用詞(如 the、is、this、and 等),這些停用詞無實際語義價值,無需參與關鍵詞提??;
  • 替代舊版get_feature_names()方法,解決高版本 Sklearn 的版本警告,提升代碼兼容性。

4.4 TF-IDF 結果可視化模塊

tfidf_df = pd.DataFrame(tfidf.T.todense(), index=wordlist) 
  • tfidf.T:將原始 “行 = 文檔、列 = 詞匯” 的矩陣轉置為 “行 = 詞匯、列 = 文檔”,更符合 “按詞匯查看各文檔 TF-IDF 值” 的閱讀習慣;
  • todense():將稀疏矩陣轉換為稠密矩陣,僅適用于小語料庫(如本次 6 篇文檔),大規(guī)模語料庫無需轉換,避免內(nèi)存溢出;
  • DataFrame 表格:以表格形式展示 TF-IDF 值,直觀看到每個詞匯在不同文檔中的權重,便于結果分析。

4.5 關鍵詞排序模塊

sorted_keywords = sorted(word_tfidf_dict.items(), key=lambda x: x[1], reverse=True) 
  • 核心邏輯:TF-IDF 值越高,代表該詞匯在對應文檔中的重要性越強,越適合作為核心關鍵詞;
  • sorted 排序key=lambda x: x[1]表示按字典的值(TF-IDF 值)排序,reverse=True表示降序排列
  • 結果特點:排序后列表中,靠前的為核心關鍵詞,TF-IDF 值為 0 的詞匯表示該詞匯未出現(xiàn)在對應文檔中

五、實戰(zhàn)運行結果解讀

運行上述代碼后,將得到稀疏矩陣、有效詞匯列表、TF-IDF 表格、關鍵詞排序四部分結果,以下為核心結果的詳細解讀,貼合本次task2_1.txt語料的實際運行情況:

5.1 有效詞匯列表(已過濾停用詞)

['and', 'document', 'final', 'first', 'has', 'line', 'one', 'several', 'second', 'third', 'words']
  • 解讀:Sklearn 自動過濾了 the、is、this 等無意義停用詞,僅保留具有實際語義的詞匯,共 11 個有效詞匯參與 TF-IDF 計算。

5.2 關鍵文檔關鍵詞排序結果

第1篇文檔:[('first', 0.7959605415421216), ('document', 0.6053485081062916), ('and', 0.0), ...]
第2篇文檔:[('second', 0.8532257383914493), ('document', 0.521848223009785), ('and', 0.0), ...]
第5篇文檔:[('line', 0.4472135955), ('has', 0.4472135955), ('several', 0.4472135955), ('words', 0.4472135955), ...]
  • 第 1 篇文檔核心關鍵詞為first(TF-IDF 值最高),其次是document,符合文檔主題This is the first document;
  • 第 2 篇文檔核心關鍵詞為second,貼合文檔主題This document is the second document;
  • 第 5 篇文檔中line/has/several/wordsTF-IDF 值相同,因該文檔為This line has several words,所有詞匯均為首次出現(xiàn)且無重復,權重均等。

5.3 結果核心規(guī)律

  • 某詞匯僅在單篇文檔中出現(xiàn),則其在該文檔的 TF-IDF 值顯著偏高(如 final/third/second 等);
  • 某詞匯在多篇文檔中重復出現(xiàn)(如 document),則其 TF-IDF 值會被稀釋,在各文檔中權重相對偏低;
  • 停用詞全程被過濾,TF-IDF 值始終為 0,不參與關鍵詞排序。

六、實戰(zhàn)拓展與優(yōu)化

6.1 提取 TopN 核心關鍵詞

若無需展示所有詞匯的 TF-IDF 值,可僅提取前 N 個核心關鍵詞(如 Top3/Top5),修改步驟 6 的代碼即可,示例如下:

# 提取每篇文檔的Top3核心關鍵詞
for j in range(len(corpus)):
    tfidf_values = tfidf_df.iloc[:, j].to_list()
    word_tfidf_dict = {}
    for i in range(len(wordlist)):
        word_tfidf_dict[wordlist[i]] = tfidf_values[i]
    sorted_keywords = sorted(word_tfidf_dict.items(), key=lambda x: x[1], reverse=True)
    # 僅取前3個核心關鍵詞
    top3_keywords = sorted_keywords[:3]
    print(f"第{j+1}篇文檔Top3關鍵詞:{top3_keywords}")

6.2 自定義過濾停用詞

Sklearn 內(nèi)置的停用詞庫可滿足基礎需求,若需自定義過濾額外詞匯,可在初始化TfidfVectorizer時配置stop_words參數(shù),示例如下:

# 自定義停用詞列表,在默認基礎上額外過濾'document'
custom_stop_words = ['the', 'is', 'this', 'document']
vectorizer = TfidfVectorizer(stop_words=custom_stop_words)

6.3 調(diào)整詞匯過濾規(guī)則

通過max_dfmin_df參數(shù)過濾高頻 / 低頻詞匯,提升關鍵詞提取的精準度:

# max_df=0.8:過濾在80%以上文檔中出現(xiàn)的詞匯
# min_df=2:過濾僅在1篇文檔中出現(xiàn)的詞匯
vectorizer = TfidfVectorizer(max_df=0.8, min_df=2)

七、實戰(zhàn)核心總結

本次基于task2_1.txt英文語料的 TF-IDF 實戰(zhàn),核心要點可總結為以下 5 點,適配所有英文文本的關鍵詞提取場景:

  1. Sklearn 對英文原生友好TfidfVectorizer可自動完成英文分詞、停用詞過濾,無需額外引入分詞庫,代碼簡潔高效;
  2. 核心流程固定語料加載→TF-IDF 計算→詞匯提取→結果可視化→關鍵詞排序,五步即可實現(xiàn)英文文本關鍵詞提取;
  3. 稀疏矩陣是關鍵:Sklearn 默認返回稀疏矩陣,大幅節(jié)省內(nèi)存,小語料可轉 DataFrame 表格,大語料直接操作稀疏矩陣;
  4. TF-IDF 值的意義:值越高代表詞匯在文檔中的重要性越強,僅在單篇文檔出現(xiàn)的詞匯權重遠高于多篇重復出現(xiàn)的詞匯;
  5. 代碼可直接復用:僅需修改語料文件路徑,即可將本代碼應用到任意英文文本的關鍵詞提取任務中。

八、結尾

本文基于真實的英文語料文件task2_1.txt,實現(xiàn)了 TF-IDF 算法的完整實戰(zhàn),代碼可直接復制運行,且適配各類英文文本的關鍵詞提取需求。TF-IDF 作為 NLP 的經(jīng)典基礎算法,簡單高效、可解釋性強,是文本檢索、文本分類、輿情分析等任務的重要基礎。

以上就是Python+Sklearn實現(xiàn)英文文本關鍵詞提取的完整代碼的詳細內(nèi)容,更多關于Python Sklearn英文文本關鍵詞提取的資料請關注腳本之家其它相關文章!

相關文章

  • opencv實現(xiàn)答題卡識別

    opencv實現(xiàn)答題卡識別

    這篇文章主要為大家詳細介紹了opencv實現(xiàn)答題卡識別,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python Popen 獲取輸出,等待運行完成示例

    python Popen 獲取輸出,等待運行完成示例

    今天小編就為大家分享一篇python Popen 獲取輸出,等待運行完成示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python使用opencv實現(xiàn)馬賽克效果示例

    python使用opencv實現(xiàn)馬賽克效果示例

    這篇文章主要介紹了python使用opencv實現(xiàn)馬賽克效果,結合實例形式分析了Python使用cv2模塊操作圖片實現(xiàn)馬賽克效果的相關技巧,需要的朋友可以參考下
    2019-09-09
  • Python實現(xiàn)將圖像轉換為ASCII字符圖

    Python實現(xiàn)將圖像轉換為ASCII字符圖

    使用Python進行圖像處理,非??旖莘奖悖喍處仔写a就可以實現(xiàn)功能強大的效果。在這篇文章中,我們將使用Python將圖像轉換為ASCII字符照,感興趣的可以了解一下
    2022-08-08
  • python入門語句基礎之if語句、while語句

    python入門語句基礎之if語句、while語句

    本文介紹了python入門語句基礎之if語句、while語句,if?語句讓你能夠檢查程序的當前狀態(tài),并據(jù)此采取相應的措施,而for?循環(huán)用于針對集合中的每個元素都一個代碼塊,而?while?循環(huán)不斷地運行,直到指定的條件不滿足為止,本文通過示例代碼詳解介紹,需要的朋友參考下吧
    2022-04-04
  • python解決空間模擬與時間預測問題及分析

    python解決空間模擬與時間預測問題及分析

    本課程系統(tǒng)講解機器學習原理、Python編程與數(shù)據(jù)處理,涵蓋數(shù)據(jù)清洗、隨機森林與LSTM算法,結合生態(tài)水文場景,通過土地利用分類、徑流預測等實踐案例,掌握空間模擬與時間預測技術
    2025-08-08
  • 通過Python解析和執(zhí)行JavaScript代碼的完整指南

    通過Python解析和執(zhí)行JavaScript代碼的完整指南

    在Web開發(fā)、數(shù)據(jù)抓取或自動化測試中,我們經(jīng)常需要處理JavaScript代碼,本文將介紹如何通過Python解析和執(zhí)行JavaScript代碼,并提供多種實用方法及代碼示例,需要的朋友可以參考下
    2025-09-09
  • Python多重分派multipledispatch庫的使用

    Python多重分派multipledispatch庫的使用

    multipledispatch庫為Python帶來了完整的多重分派能力,顯著提升了代碼的表達力和可維護性,本文就來詳細Python多重分派multipledispatch庫的使用,感興趣的可以了解一下
    2026-05-05
  • PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample?Dropout方式

    PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample?Dropout方式

    這篇文章主要介紹了PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample?Dropout方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Pandas groupby方法中的group_keys屬性使用及說明

    Pandas groupby方法中的group_keys屬性使用及說明

    groupby方法在pandas 1.5.3中,group_keys=True時保留groupby字段為第一級索引,同時原索引作為第二級索引,當設置group_keys=False時,groupby的字段不在返回結果中,可以直接作為原DataFrame的一列
    2026-01-01

最新評論

澎湖县| 肇州县| 南华县| 周口市| 海阳市| 玛多县| 通辽市| 麦盖提县| 沭阳县| 通州市| 托里县| 正蓝旗| 哈巴河县| 五华县| 澄江县| 准格尔旗| 铜川市| 西畴县| 壶关县| 确山县| 高阳县| 平和县| 和顺县| 东安县| 五华县| 天气| 新兴县| 吉林市| 大渡口区| 镇巴县| 高密市| 建瓯市| 宣恩县| 汉川市| 万年县| 德钦县| 互助| 蒙阴县| 镇巴县| 桂阳县| 张家港市|