Python第三方庫jieba(中文分詞女阀、詞性標注)特點
支持三種分詞模式:
1.精確模式受葛,試圖將句子最精確地切開拥知,適合文本分析具滴;
2.全模式盆偿,把句子中所有的可以成詞的詞語都掃描出來, 速度非郴匆埃快痊远,但是不能解決歧義伸头;
3.搜索引擎模式塘雳,在精確模式的基礎上陆盘,對長詞再次切分,提高召回率败明,適合用于搜索引擎分詞隘马。
4.支持繁體分詞
5.支持自定義詞典
jieba中文分詞的安裝:
pip3 install jieba
python文件里通過import jieba來引用
"""
import jieba
import jieba.analyse
import jieba.posseg
'''
1. 分詞
中文分詞就是將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列的過程。
我們知道妻顶,在英文的行文中酸员,單詞之間是以空格作為自然分界符的,
而中文只是字讳嘱、句和段能通過明顯的分界符來簡單劃界幔嗦,唯獨詞沒有一個形式上的分界符,
雖然英文也同樣存在短語的劃分問題沥潭,不過在詞這一層上邀泉,中文比之英文要復雜得多、困難得多钝鸽。
1)jieba.cut 方法接受三個輸入參數(shù):
需要分詞的字符串汇恤;cut_all 參數(shù)用來控制是否采用全模式;HMM 參數(shù)用來控制是否使用 HMM 模型
2)jieba.cut_for_search 方法接受兩個參數(shù):
需要分詞的字符串拔恰;是否使用 HMM 模型因谎。該方法適合用于搜索引擎構建倒排索引的分詞,粒度比較細
3)待分詞的字符串可以是 unicode 或 UTF-8 字符串颜懊、GBK 字符串蓝角。
注意:不建議直接輸入 GBK 字符串阱穗,可能無法預料地錯誤解碼成 UTF-8
4)jieba.cut 以及 jieba.cut_for_search 返回的結構都是一個可迭代的 generator,
可以使用 for 循環(huán)來獲得分詞后得到的每一個詞語(unicode)使鹅,或者用
5)jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
6)jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定義分詞器揪阶,
可用于同時使用不同詞典。jieba.dt 為默認分詞器患朱,所有全局分詞相關函數(shù)都是該分詞器的映射鲁僚。
'''
import jieba
seg_list = jieba.cut("我來到北京清華大學", cut_all=True)
print("【全模式】: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("充電了么App是專注上班族職業(yè)技能提升充電學習的在線教育平臺", cut_all=True)
print("【全模式】: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我來到北京清華大學", cut_all=False)
print("【默認精確模式】: " + "/ ".join(seg_list)) # 精確模式
seg_list = jieba.cut("我來到北京清華大學") # 默認是精確模式
print("【精確模式】"+", ".join(seg_list))
seg_list = jieba.cut("充電了么App是專注上班族職業(yè)技能提升充電學習的在線教育平臺") # 默認是精確模式
print("【精確模式】"+", ".join(seg_list))
# 搜索引擎模式
seg_list = jieba.cut_for_search("我來到北京清華大學")
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("充電了么App是專注上班族職業(yè)技能提升充電學習的在線教育平臺")
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國科學院計算所,后在日本京都大學深造")
print(", ".join(seg_list))
print("分詞完畢裁厅。")
'''
【全模式】:
我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學
【精確模式】:
我/ 來到/ 北京/ 清華大學
【搜索引擎模式】:
小明, 碩士, 畢業(yè), 于, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, 后, 在, 日本,
京都, 大學, 日本京都大學, 深造
'''
'''
分詞應用場景:
比如搜索引擎冰沙,拿我們充電了么官網的搜索舉例。
'''
'''
詞性標注:
例子:充電了么App是專注上班族職業(yè)技能提升充電學習的在線教育平臺
充電/v,了/ul,么/y,App/eng,是/v,專注/v,
上班族/nz,職業(yè)技能/n,提升/v,充電/v,學習/v,的/uj,在線教育/l,平臺/n
詞性表如下所示:
Ag
形語素
形容詞性語素执虹。形容詞代碼為 a拓挥,語素代碼g前面置以A。
a
形容詞
取英語形容詞 adjective的第1個字母袋励。
ad
副形詞
直接作狀語的形容詞侥啤。形容詞代碼 a和副詞代碼d并在一起。
an
名形詞
具有名詞功能的形容詞茬故。形容詞代碼 a和名詞代碼n并在一起盖灸。
b
區(qū)別詞
取漢字“別”的聲母。
c
連詞
取英語連詞 conjunction的第1個字母磺芭。
dg
副語素
副詞性語素赁炎。副詞代碼為 d,語素代碼g前面置以D钾腺。
d
副詞
取 adverb的第2個字母徙垫,因其第1個字母已用于形容詞。
e
嘆詞
取英語嘆詞 exclamation的第1個字母放棒。
f
方位詞
取漢字“方”
g
語素
絕大多數(shù)語素都能作為合成詞的“詞根”姻报,取漢字“根”的聲母。
h
前接成分
取英語 head的第1個字母哨查。
i
成語
取英語成語 idiom的第1個字母。
j
簡稱略語
取漢字“簡”的聲母剧辐。
k
后接成分
l
習用語
習用語尚未成為成語寒亥,有點“臨時性”,取“臨”的聲母荧关。
m
數(shù)詞
取英語 numeral的第3個字母溉奕,n,u已有他用忍啤。
Ng
名語素
名詞性語素加勤。名詞代碼為 n仙辟,語素代碼g前面置以N。
n
名詞
取英語名詞 noun的第1個字母鳄梅。
nr
人名
名詞代碼 n和“人(ren)”的聲母并在一起叠国。
ns
地名
名詞代碼 n和處所詞代碼s并在一起。
nt
機構團體
“團”的聲母為 t戴尸,名詞代碼n和t并在一起粟焊。
nz
其他專名
“專”的聲母的第 1個字母為z孙蒙,名詞代碼n和z并在一起项棠。
o
擬聲詞
取英語擬聲詞 onomatopoeia的第1個字母。
p
介詞
取英語介詞 prepositional的第1個字母挎峦。
q
量詞
取英語 quantity的第1個字母香追。
r
代詞
取英語代詞 pronoun的第2個字母,因p已用于介詞。
s
處所詞
取英語 space的第1個字母坦胶。
tg
時語素
時間詞性語素透典。時間詞代碼為 t,在語素的代碼g前面置以T。
t
時間詞
取英語 time的第1個字母迁央。
u
助詞
取英語助詞 auxiliary
vg
動語素
動詞性語素掷匠。動詞代碼為 v。在語素的代碼g前面置以V岖圈。
v
動詞
取英語動詞 verb的第一個字母讹语。
vd
副動詞
直接作狀語的動詞。動詞和副詞的代碼并在一起蜂科。
vn
名動詞
指具有名詞功能的動詞顽决。動詞和名詞的代碼并在一起。
w
標點符號
x
非語素字
非語素字只是一個符號导匣,字母 x通常用于代表未知數(shù)才菠、符號。
y
語氣詞
取漢字“語”的聲母贡定。
z
狀態(tài)詞
取漢字“狀”的聲母的前一個字母赋访。
un
未知詞
不可識別詞及用戶自定義詞組。取英文Unkonwn首兩個字母缓待。(非北大標準蚓耽,CSW分詞中定義)
'''
def dosegment_all(sentence):
'''
帶詞性標注,對句子進行分詞旋炒,不排除停用詞等
:param sentence:輸入字符
:return:
'''
sentence_seged = jieba.posseg.cut(sentence.strip())
outstr = ''
for x in sentence_seged:
outstr+="{}/{},".format(x.word,x.flag)
#上面的for循環(huán)可以用python遞推式構造生成器完成
# outstr = ",".join([("%s/%s" %(x.word,x.flag)) for x in sentence_seged])
return outstr
str = dosegment_all("充電了么App是專注上班族職業(yè)技能提升充電學習的在線教育平臺")
print(str)
print("詞性標注")
關鍵詞抽取基于TF-IDF算法
基于 TF-IDF(term frequency–inverse document frequency) 算法的關鍵詞抽取:
import jieba.analyse
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence :為待提取的文本
topK:為返回幾個 TF/IDF 權重最大的關鍵詞步悠,默認值為 20
withWeight :為是否一并返回關鍵詞權重值,默認值為 False
allowPOS :僅包括指定詞性的詞瘫镇,默認值為空鼎兽,即不篩選
TF-IDF原理介紹
TF-IDF(term frequency–inverse document frequency)
是一種用于資訊檢索與文本挖掘的常用加權技術答姥。
TF-IDF是一種統(tǒng)計方法,用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度谚咬。
字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加鹦付,
但同時會隨著它在語料庫中出現(xiàn)的頻率成反比下降。
TF-IDF加權的各種形式常被搜索引擎應用序宦,作為文件與用戶查詢之間相關程度的度量或評級睁壁。
除了TF-IDF以外,互聯(lián)網上的搜尋引擎還會使用基于連結分析的評級方法互捌,
以確定文件在搜尋結果中出現(xiàn)的順序潘明。
原理
在一份給定的文件里,詞頻(term frequency秕噪,TF)指的是某一個給定的詞語在該文件中出現(xiàn)的次數(shù)钳降。
這個數(shù)字通常會被正規(guī)化,以防止它偏向長的文件腌巾。
同一個詞語在長文件里可能會比短文件有更高的詞頻遂填,而不管該詞語重要與否。
逆向文件頻率(inverse document frequency澈蝙,IDF)是一個詞語普遍重要性的度量吓坚。
某一特定詞語的IDF,可以由總文件數(shù)目除以包含該詞語之文件的數(shù)目灯荧,再將得到的商取對數(shù)得到礁击。
高權重的TF-IDF:某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率逗载,
可以產生出高權重的TF-IDF哆窿。
因此,TF-IDF傾向于過濾掉常見的詞語厉斟,保留重要的詞語挚躯。
'''
import jieba.analyse
sentence = """
充電了么是專注上班族職業(yè)培訓充電學習的在線教育平臺。
免費學習職業(yè)技能擦秽,提高工作效率码荔,帶來經濟效益!今天你充電了么感挥?
充電了么官網:http://www.chongdianleme.com
充電了么App下載:https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app
功能特色如下:
【全行業(yè)職位】 - 上班族職業(yè)技能提升
覆蓋所有行業(yè)和職位缩搅,不管你是上班族,高管链快,還是創(chuàng)業(yè)都有你要學習的免費視頻和文章誉己。其中大數(shù)據人工智能AI眉尸、區(qū)塊鏈域蜗、深度學習是互聯(lián)網一線工業(yè)級的實戰(zhàn)經驗巨双。
除了專業(yè)技能學習,還有通用職場技能霉祸,比如企業(yè)管理筑累、股權激勵和設計、職業(yè)生涯規(guī)劃丝蹭、社交禮儀慢宗、溝通技巧、演講技巧奔穿、開會技巧镜沽、發(fā)郵件技巧、工作壓力如何放松贱田、人脈關系等等缅茉,全方位提高你的專業(yè)水平和整體素質。
【牛人課堂】 - 學習牛人工作經驗
1.智能個性化推薦引擎:
海量免費視頻課程男摧,覆蓋所有行業(yè)蔬墩、所有職位,通過不同行業(yè)職位的技能詞偏好挖掘分析耗拓,智能推薦匹配你目前職位最感興趣的技能學習課程拇颅。
2.聽課全網搜索
輸入關鍵詞搜索海量視頻課程,應有盡有乔询,總有適合你的免費課程樟插。
3.聽課播放詳情
視頻播放詳情,除了播放當前視頻哥谷,更有相關視頻課程和文章閱讀推薦岸夯,對某個技能知識點強化,讓你輕松成為某個領域的資深專家们妥。
【精品閱讀】 - 技能文章興趣閱讀
1.個性化閱讀推薦引擎:
千萬級免費文章閱讀猜扮,覆蓋所有行業(yè)、所有職位监婶,通過不同行業(yè)職位的技能詞偏好挖掘分析旅赢,智能推薦匹配你目前職位最感興趣的技能學習文章。
2.閱讀全網搜索
輸入關鍵詞搜索海量文章閱讀惑惶,應有盡有煮盼,總有你感興趣的技能學習文章。
【機器人老師】 - 個人提升趣味學習
基于搜索引擎和人工智能深度學習訓練带污,為您打造更懂你的機器人老師僵控,用自然語言和機器人老師聊天學習,寓教于樂鱼冀,高效學習报破,快樂人生悠就。
【精短課程】 - 高效學習知識
海量精短牛人課程,滿足你的時間碎片化學習充易,快速提高某個技能知識點梗脾。
充電了么官網:http://www.chongdianleme.com
充電了么App下載:https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app
"""
keywords = jieba.analyse.extract_tags(sentence,
topK=36,
withWeight=True,
allowPOS=('n', 'nr', 'ns'))
print("TF-IDF算法提取關鍵詞:-------------------------------------------")
for item in keywords:
print(item[0], item[1])
基于TextRank算法的關鍵詞抽取
jieba.analyse.textrank(sentence, topK=20, withWeight=False,
allowPOS=(‘ns’, ‘n’, ‘vn’, ‘v’)) 僅包括指定詞性的詞,默認值為空盹靴,即不篩選炸茧。
jieba.analyse.TextRank() 新建自定義 TextRank 實例
基本思想:
將待抽取關鍵詞的文本進行分詞
以固定窗口大小(默認為5,通過span屬性調整)稿静,詞之間的共現(xiàn)關系梭冠,構建圖
計算圖中節(jié)點的PageRank,注意是無向帶權圖
textRank算法原理介紹
將原文本拆分為句子改备,在每個句子中過濾掉停用詞(可選)妈嘹,并只保留指定詞性的單詞(可選)。
由此可以得到句子的集合和單詞的集合绍妨。
每個單詞作為pagerank中的一個節(jié)點润脸。設定窗口大小為k,假設一個句子依次由下面的單詞組成:
w1, w2, w3, w4, w5, ..., wn
w1, w2, ..., wk他去、w2, w3, ...,wk+1毙驯、w3, w4, ...,wk+2等都是一個窗口。
在一個窗口中的任兩個單詞對應的節(jié)點之間存在一個無向無權的邊灾测。
基于上面構成圖爆价,可以計算出每個單詞節(jié)點的重要性。最重要的若干單詞可以作為關鍵詞媳搪。
'''
keywords = jieba.analyse.textrank(sentence,
topK=36,
withWeight=True,
allowPOS=('n', 'nr', 'ns'))
print("TextRank算法提取關鍵詞:==============================")
for item in keywords:
print(item[0], item[1])
除了自然語言處理NLP之中文分詞和詞性標注?https://ke.qq.com/course/474976?flowToken=1028976
其它深度學習框架也有不錯的開源實現(xiàn)铭段,比如MXNet,后面請大家關注充電了么app秦爆,課程序愚,微信群,更多內容請看新書《分布式機器學習實戰(zhàn)(人工智能科學與技術叢書)》
【新書介紹】
《分布式機器學習實戰(zhàn)》(人工智能科學與技術叢書)【陳敬雷編著】【清華大學出版社】https://item.jd.com/12743009.html
新書特色:深入淺出等限,逐步講解分布式機器學習的框架及應用配套個性化推薦算法系統(tǒng)爸吮、人臉識別、對話機器人等實戰(zhàn)項目
【新書介紹視頻】
分布式機器學習實戰(zhàn)(人工智能科學與技術叢書)新書【陳敬雷】https://ke.qq.com/course/3067704?flowToken=1029963
視頻特色:重點對新書進行介紹望门,最新前沿技術熱點剖析形娇,技術職業(yè)規(guī)劃建議!聽完此課你對人工智能領域將有一個嶄新的技術視野筹误!職業(yè)發(fā)展也將有更加清晰的認識桐早!
【精品課程】
《分布式機器學習實戰(zhàn)》大數(shù)據人工智能AI專家級精品課程https://ke.qq.com/course/393750?flowToken=1028919
【免費體驗視頻】
人工智能百萬年薪成長路線/從Python到最新熱點技術?https://ke.qq.com/course/package/31251?flowToken=1029962
從Python編程零基礎小白入門到人工智能高級實戰(zhàn)系列課
https://ke.qq.com/course/package/29782?flowToken=1028733
視頻特色:本系列專家級精品課有對應的配套書籍《分布式機器學習實戰(zhàn)》,精品課和書籍可以互補式學習,彼此相互補充哄酝,大大提高了學習效率所灸。本系列課和書籍是以分布式機器學習為主線,并對其依賴的大數(shù)據技術做了詳細介紹炫七,之后對目前主流的分布式機器學習框架和算法進行重點講解,本系列課和書籍側重實戰(zhàn)钾唬,最后講幾個工業(yè)級的系統(tǒng)實戰(zhàn)項目給大家万哪。課程核心內容有互聯(lián)網公司大數(shù)據和人工智能那些事、大數(shù)據算法系統(tǒng)架構抡秆、大數(shù)據基礎奕巍、Python編程、Java編程儒士、Scala編程的止、Docker容器、Mahout分布式機器學習平臺着撩、Spark分布式機器學習平臺诅福、分布式深度學習框架和神經網絡算法、自然語言處理算法拖叙、工業(yè)級完整系統(tǒng)實戰(zhàn)(推薦算法系統(tǒng)實戰(zhàn)氓润、人臉識別實戰(zhàn)、對話機器人實戰(zhàn))薯鳍、就業(yè)/面試技巧/職業(yè)生涯規(guī)劃/職業(yè)晉升指導等內容咖气。
【充電了么App】
本書在充電了么App里有對應的視頻課程,更多學習資源也可以通過下載充電了么App客戶端挖滤,也可以從各大應用商店里搜索“充電了么”自行下載崩溪。充電了么是專注上班族職業(yè)技能提升的在線教育平臺。這里有海量免費課程斩松,在這里你可以學習牛人的實際工作經驗伶唯,也能夠大幅提升職業(yè)技能,提高工作效率惧盹,帶來經濟效益抵怎!除了陳敬雷老師的課以外,還有上千萬好課免費分享岭参。全都在充電了么App上反惕。充電了么APP是專注上班族職業(yè)培訓充電學習的在線教育平臺。各大安卓商店和蘋果App Store搜索“充電了么”即可下載演侯。按照下圖輸入網址也可以下載哦~
充電了么官網:http://www.chongdianleme.com/
充電了么App官網下載地址:https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app
功能特色如下:
【全行業(yè)職位】 - 專注職場上班族職業(yè)技能提升
覆蓋所有行業(yè)和職位姿染,不管你是上班族,高管,還是創(chuàng)業(yè)都有你要學習的視頻和文章悬赏。其中大數(shù)據智能AI狡汉、區(qū)塊鏈、深度學習是互聯(lián)網一線工業(yè)級的實戰(zhàn)經驗闽颇。
除了專業(yè)技能學習盾戴,還有通用職場技能,比如企業(yè)管理兵多、股權激勵和設計尖啡、職業(yè)生涯規(guī)劃、社交禮儀剩膘、溝通技巧衅斩、演講技巧、開會技巧怠褐、發(fā)郵件技巧畏梆、工作壓力如何放松、人脈關系等等奈懒,全方位提高你的專業(yè)水平和整體素質奠涌。
【牛人課堂】 - 學習牛人的工作經驗
1.智能個性化引擎:
海量視頻課程,覆蓋所有行業(yè)磷杏、所有職位铣猩,通過不同行業(yè)職位的技能詞偏好挖掘分析,智能匹配你目前職位最感興趣的技能學習課程茴丰。
2.聽課全網搜索
輸入關鍵詞搜索海量視頻課程达皿,應有盡有,總有適合你的課程贿肩。
3.聽課播放詳情
視頻播放詳情峦椰,除了播放當前視頻,更有相關視頻課程和文章閱讀汰规,對某個技能知識點強化汤功,讓你輕松成為某個領域的資深專家。
【精品閱讀】 - 技能文章興趣閱讀
1.個性化閱讀引擎:
千萬級文章閱讀溜哮,覆蓋所有行業(yè)滔金、所有職位,通過不同行業(yè)職位的技能詞偏好挖掘分析茂嗓,智能匹配你目前職位最感興趣的技能學習文章餐茵。
2.閱讀全網搜索
輸入關鍵詞搜索海量文章閱讀,應有盡有述吸,總有你感興趣的技能學習文章忿族。
【機器人老師】 - 個人提升趣味學習
基于搜索引擎和智能深度學習訓練,為您打造更懂你的機器人老師,用自然語言和機器人老師聊天學習道批,寓教于樂错英,高效學習,快樂人生隆豹。
【精短課程】 - 高效學習知識
海量精短牛人課程椭岩,滿足你的時間碎片化學習,快速提高某個技能知識點璃赡。