pandas之中文分詞,詞雲,情感分析,語義分析2


抽取文檔關鍵詞

抽取文檔關鍵詞用於在一篇文章中獲取其核心內容(描述了什么?),又叫 生成摘要、打標簽、關鍵詞提取等

1:詞頻統計

  • 詞在文本中出現的次數(頻次),某種程度上能當做文本的標簽,表示文本內容
  • 不是很精准
  • 統計前最好先去完成自定義詞典和去停用詞的前期操作
略過自定義詞典、去停用詞
a = '哎,詹姆斯,聽說你超級喜歡玩籃球的!你是嗎?哎,詹姆斯'
x = jieba.lcut(a)
pd.DataFrame(x)
pd.DataFrame(x).groupby(0).size().sort_values(ascending=False)
pd.Series(x).value_counts()

案例:分析Python互聯網招聘信息中的需求關鍵字

# 載入文本數據
with open('data/work.txt', 'r', encoding='utf-8') as f:
    txt = f.read()
print(txt)
職位描述:

崗位職責:
負責公司互聯網產品的編碼、實施等工作。

任職要求:
1、大專及以上學歷,3年python開發經驗,1年以上大型服務器端開發經驗。
2、有良好的編碼習慣,熟悉git代碼管理工具。
3、熟練在Linux各發行版下進行開發,熟練使用vim、Sublime、eclipse等文本編輯器或IDE工具進行程序開發。
4、至少熟練使用Django、Flask、Web.py、Tornado等Web框架中的一種。
5、熟練運用MySQL、Oracle、Postgresql中的一項或多項進行數據庫開發。
6、熟悉和具有MongoDB、Redis、memecached等NoSQL數據庫開發經驗者優先。
7、熟悉RESTFul風格、Oauth協議、MQTT協議等框架或技術者優先。
8、具有大規模高並發訪問Web應用架構設計和開發經驗者優先。
9、對代碼有追求, 有分享精神者優先。

===========

職能類別:
軟件工程師互聯網軟件開發工程師
關鍵字:python
職位描述:
主要工作職責:
1、基於Linux的應用軟件開發,物聯網應用方向(工業自動化、智能樓宇、遠程監控等);
2、參與需求分析、系統架構設計;
3、根據設計文檔或需求說明完成代碼編寫、調試和維護;
4、協助配合其他人員實現系統在實際環境的可靠運行。

—————

職位要求:
1、扎實的C++基礎,具備OOP編程思想,精通Python語言,熟悉多線程應用開發;
2、有linux應用項目開發經歷(包括服務端、網絡通訊、web等);
3、熟悉數據庫及SQL,有MySQL等關系型數據庫開發經驗
4、良好的團隊合作精神,有責任感;

 

方式1:使用詞頻方式提取關鍵詞

# 1:自定義詞典
jieba.load_userdict('data/custom.txt')  # 應用自定義詞典
# 2:分詞
cut = jieba.lcut(txt)
# 3:去停用詞
# 3.1,載入停用詞表
stopword = []
with open('data/stopword.txt', 'r', encoding='utf-8') as f:
    for line in f.readlines():
        l = line.strip()
        if l == '\\n':
            l = '\n'
        if l == '\\u3000':
            l = '\u3000'

        stopword.append(l)
stopword

#3.2 去停用詞,第一步,求差集
x = np.array(cut)  # 將分好的詞列表轉為數組
y = np.array(stopword)  # 將停用詞轉為數組
z = x[~np.in1d(x, y)]  # x的元素是否包含於y
# 去掉一個字的詞
k = [i for i in z if len(i) > 1]

# 4:計算詞頻並排序
result = pd.Series(k).value_counts()[:20]
result

# 5: 保存結果
result.to_csv('temp/keyword_fig.csv', header=0)

統計詞頻作為文檔關鍵字的准確性不高,還可使用下面的方式

TF-IDF算法
Text-Rank算法
注:TF-IDF和Text-Rank算法運行都不需要手動去停用詞,可以用內置函數自動去停用詞

使用TF-IDF權重算法提取關鍵詞

TF-IDF權重:

詞頻和重要詞的綜合分數(權重)

重要詞:信息量大的詞

一個詞信息量大小的衡量

在本文章出現的次數多,在通用文檔庫出現的次數少,就是重要詞

如:你我他,你好再見 這些詞信息量很小
行業專有名詞,如Python/MySQL,信息量就很大
  • 首先,應用自定義詞典
  • 然后,去除停用詞,系統自帶,給抽取關鍵字用 
jieba.load_userdict('data/custom.txt')  # 應用自定義詞典
jieba.analyse.set_stop_words('data/stopword.txt') # 抽取關鍵詞前去掉自定義停用詞

# 詳細參數:
# 字符串
# 返回多少關鍵詞,默認20個
# 是否返回TF-IDF權重
# allowPOS=(),什么詞性可以做抽取,默認所有詞
k = jieba.analyse.extract_tags(txt, topK=50, withWeight=True)

Text-Rank算法

TextRank是在Google的PageRank算法啟發下,針對文本里的句子設計的權重算法,目標是自動摘要。

它利用投票的原理,讓每一個單詞給它的鄰居(術語稱窗口)投贊成票,票的權重取決於自己的票數。

效果比詞頻統計精准,和TF-IDF比各有千秋

jieba.load_userdict('data/custom.txt')  # 應用自定義詞典
jieba.analyse.set_stop_words('data/stopword.txt') # 抽取關鍵詞前去掉自定義停用詞
# 文本
# 顯示多少詞
# 是否返回關鍵字權重
# allowPOS=(),什么詞性可以做抽取,默認所有詞
t = jieba.analyse.textrank(txt, topK=50, withWeight=True, allowPOS=('ns', 'n', 'vn', 'v'))

附:詞性標注
后附詞性表
list(jieba.posseg.cut(a))

 


中科院ICTCLAS分詞漢語詞性標記集

1. 名詞 (1個一類,7個二類,5個三類)
名詞分為以下子類:

n 名詞

nr 人名

nr1 漢語姓氏

nr2 漢語名字

nrj 日語人名

nrf 音譯人名

ns 地名

nsf 音譯地名

nt 機構團體名

nz 其它專名

nl 名詞性慣用語

ng 名詞性語素

2. 時間詞(1個一類,1個二類)
t 時間詞

tg 時間詞性語素

3. 處所詞(1個一類)
s 處所詞

4. 方位詞(1個一類)
f 方位詞

5. 動詞(1個一類,9個二類)
v 動詞

vd 副動詞

vn 名動詞

vshi 動詞“是”

vyou 動詞“有”

vf 趨向動詞

vx 形式動詞

vi 不及物動詞(內動詞)

vl 動詞性慣用語

vg 動詞性語素

6. 形容詞(1個一類,4個二類)
a 形容詞

ad 副形詞

an 名形詞

ag 形容詞性語素

al 形容詞性慣用語

7. 區別詞(1個一類,2個二類)
b 區別詞

bl 區別詞性慣用語

8. 狀態詞(1個一類)
z 狀態詞

9. 代詞(1個一類,4個二類,6個三類)
r 代詞

rr 人稱代詞

rz 指示代詞

rzt 時間指示代詞

rzs 處所指示代詞

rzv 謂詞性指示代詞

ry 疑問代詞

ryt 時間疑問代詞

rys 處所疑問代詞

ryv 謂詞性疑問代詞

rg 代詞性語素

10. 數詞(1個一類,1個二類)
m 數詞

mq 數量詞

11. 量詞(1個一類,2個二類)
q 量詞

qv 動量詞

qt 時量詞

12. 副詞(1個一類)
d 副詞

13. 介詞(1個一類,2個二類)
p 介詞

pba 介詞“把”

pbei 介詞“被”

14. 連詞(1個一類,1個二類)
c 連詞

cc 並列連詞

15. 助詞(1個一類,15個二類)
u 助詞

uzhe 着

ule 了 嘍

uguo 過

ude1 的 底

ude2 地

ude3 得

usuo 所

udeng 等 等等 雲雲

uyy 一樣 一般 似的 般

udh 的話

uls 來講 來說 而言 說來

uzhi 之

ulian 連 (“連小學生都會”)

16. 嘆詞(1個一類)
e 嘆詞

17. 語氣詞(1個一類)
y 語氣詞(delete yg)

18. 擬聲詞(1個一類)
o 擬聲詞

19. 前綴(1個一類)
h 前綴

20. 后綴(1個一類)
k 后綴

21. 字符串(1個一類,2個二類)
x 字符串

xx 非語素字

xu 網址URL

22. 標點符號(1個一類,16個二類)
w 標點符號

wkz 左括號,全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <

wky 右括號,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >

wyz 左引號,全角:“ ‘ 『

wyy 右引號,全角:” ’ 』

wj 句號,全角:。

ww 問號,全角:? 半角:?

wt 嘆號,全角:! 半角:!

wd 逗號,全角:, 半角:,

wf 分號,全角:; 半角: ;

wn 頓號,全角:、

wm 冒號,全角:: 半角: :

ws 省略號,全角:…… …

wp 破折號,全角:—— -- ——- 半角:--- ----

wb 百分號千分號,全角:% ‰ 半角:%

wh 單位符號,全角:¥ $ £ ° ℃ 半角:$

 

  

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM