Python3 文章標題關鍵字提取的例子
思路:
1.讀取所有文章標題;
2.用“結巴分詞”的工具包進行文章標題的詞語分割;
3.用“sklearn”的工具包計算Tf-idf(詞頻-逆文檔率);
4.得到滿足關鍵詞權重閾值的詞
結巴分詞詳見:結巴分詞Github
sklearn詳見:文本特征提取——4.2.3.4 Tf-idf項加權
import os
import jieba
import sys
from sklearn.feature_extraction.text import TfidfVectorizer
sys.path.append("../")
jieba.load_userdict('userdictTest.txt')
STOP_WORDS = set((
"基于", "面向", "研究", "系統(tǒng)", "設計", "綜述", "應用", "進展", "技術", "框架", "txt"
))
def getFileList(path):
filelist = []
files = os.listdir(path)
for f in files:
if f[0] == '.':
pass
else:
filelist.append(f)
return filelist, path
def fenci(filename, path, segPath):
# 保存分詞結果的文件夾
if not os.path.exists(segPath):
os.mkdir(segPath)
seg_list = jieba.cut(filename)
result = []
for seg in seg_list:
seg = ''.join(seg.split())
if len(seg.strip()) >= 2 and seg.lower() not in STOP_WORDS:
result.append(seg)
# 將分詞后的結果用空格隔開,保存至本地
f = open(segPath + "/" + filename + "-seg.txt", "w+")
f.write(' '.join(result))
f.close()
def Tfidf(filelist, sFilePath, path, tfidfw):
corpus = []
for ff in filelist:
fname = path + ff
f = open(fname + "-seg.txt", 'r+')
content = f.read()
f.close()
corpus.append(content)
vectorizer = TfidfVectorizer() # 該類實現(xiàn)詞向量化和Tf-idf權重計算
tfidf = vectorizer.fit_transform(corpus)
word = vectorizer.get_feature_names()
weight = tfidf.toarray()
if not os.path.exists(sFilePath):
os.mkdir(sFilePath)
for i in range(len(weight)):
print('----------writing all the tf-idf in the ', i, 'file into ', sFilePath + '/', i, ".txt----------")
f = open(sFilePath + "/" + str(i) + ".txt", 'w+')
result = {}
for j in range(len(word)):
if weight[i][j] >= tfidfw:
result[word[j]] = weight[i][j]
resultsort = sorted(result.items(), key=lambda item: item[1], reverse=True)
for z in range(len(resultsort)):
f.write(resultsort[z][0] + " " + str(resultsort[z][1]) + '\r\n')
print(resultsort[z][0] + " " + str(resultsort[z][1]))
f.close()
TfidfVectorizer( ) 類 實現(xiàn)了詞向量化和Tf-idf權重的計算
詞向量化:vectorizer.fit_transform是將corpus中保存的切分后的單詞轉為詞頻矩陣,其過程為先將所有標題切分的單詞形成feature特征和列索引,并在dictionary中保存了{‘特征':索引,……},如{‘農(nóng)業(yè)':0,‘大數(shù)據(jù)':1,……},在csc_matric中為每個標題保存了 (標題下標,特征索引) 詞頻tf……,然后對dictionary中的單詞進行排序重新編號,并對應更改csc_matric中的特征索引,以便形成一個特征向量詞頻矩陣,接著計算每個feature的idf權重,其計算公式為
其中是所有文檔數(shù)量,是包含該單詞的文檔數(shù)。最后計算tf*idf并進行正則化,得到關鍵詞權重。
以下面六個文章標題為例進行關鍵詞提取

Using jieba on 農(nóng)業(yè)大數(shù)據(jù)研究與應用進展綜述.txt
Using jieba on 基于Hadoop的分布式并行增量爬蟲技術研究.txt
Using jieba on 基于RPA的財務共享服務中心賬表核對流程優(yōu)化.txt
Using jieba on 基于大數(shù)據(jù)的特征趨勢統(tǒng)計系統(tǒng)設計.txt
Using jieba on 網(wǎng)絡大數(shù)據(jù)平臺異常風險監(jiān)測系統(tǒng)設計.txt
Using jieba on 面向數(shù)據(jù)中心的多源異構數(shù)據(jù)統(tǒng)一訪問框架.txt
----------writing all the tf-idf in the 0 file into ./keywords/ 0 .txt----------
農(nóng)業(yè) 0.773262366783
大數(shù)據(jù) 0.634086202434
----------writing all the tf-idf in the 1 file into ./keywords/ 1 .txt----------
hadoop 0.5
分布式 0.5
并行增量 0.5
爬蟲 0.5
----------writing all the tf-idf in the 2 file into ./keywords/ 2 .txt----------
rpa 0.408248290464
優(yōu)化 0.408248290464
服務中心 0.408248290464
流程 0.408248290464
財務共享 0.408248290464
賬表核對 0.408248290464
----------writing all the tf-idf in the 3 file into ./keywords/ 3 .txt----------
特征 0.521823488025
統(tǒng)計 0.521823488025
趨勢 0.521823488025
大數(shù)據(jù) 0.427902724969
----------writing all the tf-idf in the 4 file into ./keywords/ 4 .txt----------
大數(shù)據(jù)平臺 0.4472135955
異常 0.4472135955
監(jiān)測 0.4472135955
網(wǎng)絡 0.4472135955
風險 0.4472135955
----------writing all the tf-idf in the 5 file into ./keywords/ 5 .txt----------
多源異構數(shù)據(jù) 0.57735026919
數(shù)據(jù)中心 0.57735026919
統(tǒng)一訪問 0.57735026919
以上這篇Python3 文章標題關鍵字提取的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決Alexnet訓練模型在每個epoch中準確率和loss都會一升一降問題
這篇文章主要介紹了解決Alexnet訓練模型在每個epoch中準確率和loss都會一升一降問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python的selenium模塊使用find_element_by_id無效解決方案
這篇文章主要介紹了Python的selenium模塊使用find_element_by_id無效解決方案,find_element_by_id無效可能是因為版本問題,而4.5.0版本不支持頁面對象的定位find_element_by_id方法,以前版本支持這些進行元素定位,需要的朋友可以參考下2023-12-12
Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)
這篇文章介紹了Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05
Python多進程方式抓取基金網(wǎng)站內(nèi)容的方法分析
這篇文章主要介紹了Python多進程方式抓取基金網(wǎng)站內(nèi)容的方法,結合實例形式分析了Python多進程抓取網(wǎng)站內(nèi)容相關實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2019-06-06
使用 Visual Studio Code(VSCode)搭建簡單的Python+Djan
這篇文章主要介紹了使用 Visual Studio Code(VSCode)搭建簡單的Python+Django開發(fā)環(huán)境的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
Python實現(xiàn)統(tǒng)計給定列表中指定數(shù)字出現(xiàn)次數(shù)的方法
這篇文章主要介紹了Python實現(xiàn)統(tǒng)計給定列表中指定數(shù)字出現(xiàn)次數(shù)的方法,涉及Python針對列表的簡單遍歷、計算相關操作技巧,需要的朋友可以參考下2018-04-04

