1. 程式人生 > >jieba--做最好用的中文分片語件詳解【3】

jieba--做最好用的中文分片語件詳解【3】

寫在最前面:

null

基於TF-IDF演算法的關鍵詞抽取

import jieba.analyse

  • jieba.analyse.extract_tags(句子,topK = 20,withWeight = False,allowPOS =())
    • 句為待提取的文字
    • topK為返回幾個TF / IDF權重最大的關鍵詞,預設值為20
    • withWeight為是否一併返回關鍵詞權重值,預設值為False
    • allowPOS僅包括指定詞性的詞,預設值為空,即不篩選
  • jieba.analyse.TFIDF(idf_path = None)新建TFIDF例項,idf_path為IDF頻率檔案
import jieba.analyse

jieba.load_userdict("userdict.txt")

test_sent = (
    "習近平指出,黨的十八大以來,在新中國成立特別是改革開放以來我國發展取得的重大成就基礎上,"
    "黨和國家事業發生歷史性變革,我國發展站到了新的歷史起點上,中國特色社會主義進入了新的發展階段。"
    "中國特色社會主義不斷取得的重大成就,意味著近代以來久經磨難的中華民族實現了從站起來、富起來到強起來的歷史性飛躍,"
    "意味著社會主義在中國煥發出強大生機活力並不斷開闢發展新境界,"
    "意味著中國特色社會主義拓展了發展中國家走向現代化的途徑,為解決人類問題貢獻了中國智慧、提供了中國方案。"
    "全黨要提高戰略思維能力,不斷增強工作的原則性、系統性、預見性、創造性,按照新要求制定黨和國家大政方針,完善發展戰略和各項政策,以新的精神狀態和奮鬥姿態把中國特色社會主義推向前進。"
)

'''newwords = jieba.analyse.extract_tags(test_sent,topK=20,withWeight=True,allowPOS=())
print(newwords)
print(len(newwords))'''


tags = jieba.analyse.extract_tags(test_sent,topK = 100,withWeight=True)
for i in tags:
    print(i[0],i[1])
社會主義 0.30347065067857143
特色 0.2494810583969524
中國 0.23065300469790476
重大成就 0.19999010038666665
黨和國家 0.17205987050514285
發展 0.17024116906857145
意味著 0.166825010784
歷史性 0.16414236044266667
不斷 0.13729106061942858
以來 0.13348870033542856
以新 0.11385492859904761
起來 0.11318115561571429
戰略思維 0.10872162859238095
預見性 0.10339195442190476
取得 0.10109781234819049
大政方針 0.09852694848095239
習近平 0.09439708195628572
原則性 0.09422232825466667
我國 0.09401383695733333
久經 0.09339364847380953
各項政策 0.09308136444695238
磨難 0.08881873022352382
煥發 0.08843387747742858
精神狀態 0.0877079025690476
全黨 0.08539241637
生機 0.08518905327971428
飛躍 0.08411212809295238
創造性 0.08146257258342857
推向 0.080151244938
奮鬥 0.07845444925561905
系統性 0.07698634754295239
中華民族 0.07695804496780953
十八 0.07599142126028571
境界 0.07581434665961904
改革開放 0.07459287679742857
姿態 0.07213836360780952
活力 0.07198624984047619
起點 0.07135379867542857
智慧 0.07039912871428572
變革 0.06999616492314285
拓展 0.06876021879228572
開闢 0.06722916357619048
發展中國家 0.06629927338980952
途徑 0.06503908845485715
前進 0.0642184968355238
現代化 0.0642110824252381
近代 0.06232151818685714
事業 0.0605467076692381
強大 0.06005038450590476
走向 0.05808065081647619
貢獻 0.05754320948904762
完善 0.05675601981971429
制定 0.05639370244485714
方案 0.05573532293628571
增強 0.05521127022466667
戰略 0.05478316176885714
人類 0.053625377044761904
解決 0.05085571831942857
階段 0.05067867730838095
成立 0.04868071007142857
指出 0.04839481708952381
按照 0.04784224015219048
能力 0.04700326741114286
基礎 0.04536410100495238
特別 0.04521671000828571
提高 0.045087473140761905
提供 0.04461101353257143
實現 0.04454028834847619
要求 0.043871883374000005
歷史 0.04384040545857143
進入 0.04344876173523809
發生 0.04141855788190476
工作 0.040026088974761904
問題 0.03774774831504762

這裡返回了20個權重最大的詞,並不區分詞性。

關鍵詞提取所使用逆向檔案頻率(IDF)文字語料庫可以切換成自定義語料庫的路徑

jieba.analyse.set_idf_path(file_name)#file_name為自定義語料庫的路徑
import jieba.analyse

jieba.load_userdict("userdict.txt")
jieba.analyse.set_idf_path("./jieba-master/extra_dict/idf.txt.big")

test_sent = (
    "李小福是創新辦主任也是雲端計算方面的專家\n"
    "時至今日,滑雪運動已經成為一項越來越受歡迎的運動專案\n"
    "例如我輸入一個帶“韓玉賞鑑”的標題,在自定義詞庫中也增加了此詞為N類\n"
    "「臺中」正確應該不會被切開。mac上可分出「石墨烯」;此時又可以分出來凱特琳了。"
)

'''newwords = jieba.analyse.extract_tags(test_sent,topK=20,withWeight=True,allowPOS=())
print(newwords)
print(len(newwords))'''



tags = jieba.analyse.extract_tags(test_sent,topK = 100,withWeight=True)
print(tags)
中國 0.9108394287923809
發展 0.569274642995238
社會主義 0.569274642995238
以來 0.34156478579714283
不斷 0.34156478579714283
起來 0.34156478579714283
特色 0.2494810583969524
我國 0.22770985719809522
取得 0.22770985719809522
黨和國家 0.22770985719809522
歷史性 0.22770985719809522
重大成就 0.19999010038666665
意味著 0.166825010784
指出 0.11385492859904761
十八 0.11385492859904761
成立 0.11385492859904761
改革開放 0.11385492859904761
基礎 0.11385492859904761
發生 0.11385492859904761
變革 0.11385492859904761
歷史 0.11385492859904761
起點 0.11385492859904761
近代 0.11385492859904761
久經 0.11385492859904761
磨難 0.11385492859904761
實現 0.11385492859904761
煥發 0.11385492859904761
強大 0.11385492859904761
生機 0.11385492859904761
活力 0.11385492859904761
境界 0.11385492859904761
拓展 0.11385492859904761
發展中國家 0.11385492859904761
現代化 0.11385492859904761
解決 0.11385492859904761
人類 0.11385492859904761
方案 0.11385492859904761
全黨 0.11385492859904761
戰略思維 0.11385492859904761
能力 0.11385492859904761
增強 0.11385492859904761
工作 0.11385492859904761
原則性 0.11385492859904761
預見性 0.11385492859904761
按照 0.11385492859904761
制定 0.11385492859904761
戰略 0.11385492859904761
以新 0.11385492859904761
奮鬥 0.11385492859904761
推向 0.11385492859904761
大政方針 0.09852694848095239
習近平 0.09439708195628572
各項政策 0.09308136444695238
精神狀態 0.0877079025690476
飛躍 0.08411212809295238
創造性 0.08146257258342857
系統性 0.07698634754295239
中華民族 0.07695804496780953
姿態 0.07213836360780952
智慧 0.07039912871428572
開闢 0.06722916357619048
途徑 0.06503908845485715
前進 0.0642184968355238
事業 0.0605467076692381
走向 0.05808065081647619
貢獻 0.05754320948904762
完善 0.05675601981971429
階段 0.05067867730838095
特別 0.04521671000828571
提高 0.045087473140761905
提供 0.04461101353257143
要求 0.043871883374000005
進入 0.04344876173523809
問題 0.03774774831504762

可以看出使用了自定義的語料庫後詞頻發生明顯變化。

先到這兒,一邊上英語課一邊寫的,晚上還有最優化,阿西吧