本文目錄一覽:
- 1、python數據挖掘——文本分析
- 2、如何用Python和機器學習訓練中文文本情感分類模
- 3、如何利用Python對中文進行分詞處理
- 4、在python中如何根據已有詞典對文本進行分類
- 5、python語言中有哪些數據類型
python數據挖掘——文本分析
作者 | zhouyue65
來源 | 君泉計量
文本挖掘:從大量文本數據中抽取出有價值的知識,並且利用這些知識重新組織信息的過程。
一、語料庫(Corpus)
語料庫是我們要分析的所有文檔的集合。
二、中文分詞
2.1 概念:
中文分詞(Chinese Word Segmentation):將一個漢字序列切分成一個一個單獨的詞。
eg:我的家鄉是廣東省湛江市–我/的/家鄉/是/廣東省/湛江市
停用詞(Stop Words):
數據處理時,需要過濾掉某些字或詞
√泛濫的詞,如web、網站等。
√語氣助詞、副詞、介詞、連接詞等,如 的,地,得;
2.2 安裝Jieba分詞包:
最簡單的方法是用CMD直接安裝:輸入pip install jieba,但是我的電腦上好像不行。
後來在這裡:下載了jieba0.39解壓縮後 放在Python36Libsite-packages裡面,然後在用cmd,pip install jieba 就下載成功了,不知道是是什麼原因。
然後我再anaconda 環境下也安裝了jieba,先在Anaconda3Lib這個目錄下將jieba0.39的解壓縮文件放在裡面,然後在Anaconda propt下輸入 pip install jieba,如下圖:
2.3 代碼實戰:
jieba最主要的方法是cut方法:
jieba.cut方法接受兩個輸入參數:
1) 第一個參數為需要分詞的字符串
2)cut_all參數用來控制是否採用全模式
jieba.cut_for_search方法接受一個參數:需要分詞的字符串,該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細
注意:待分詞的字符串可以是gbk字符串、utf-8字符串或者unicode
jieba.cut以及jieba.cut_for_search返回的結構都是一個可迭代的generator,可以使用for循環來獲得分詞後得到的每一個詞語(unicode),也可以用list(jieba.cut(…))轉化為list代碼示例( 分詞 )
輸出結果為: 我 愛
Python
工信處
女幹事
每月 經過 下屬 科室 都 要 親口
交代
24 口 交換機 等 技術性 器件 的 安裝
工作
分詞功能用於專業的場景:
會出現真武七截陣和天罡北斗陣被分成幾個詞。為了改善這個現象,我們用導入詞庫的方法。
但是,如果需要導入的單詞很多,jieba.add_word()這樣的添加詞庫的方法就不高效了。
我們可以用jieba.load_userdict(‘D:PDM2.2金庸武功招式.txt’)方法一次性導入整個詞庫,txt文件中為每行一個特定的詞。
2.3.1 對大量文章進行分詞
先搭建語料庫:
分詞後我們需要對信息處理,就是這個分詞來源於哪個文章。
四、詞頻統計
3.1詞頻(Term Frequency):
某個詞在該文檔中出現的次數。
3.2利用Python進行詞頻統計
3.2.1 移除停用詞的另一種方法,加if判斷
代碼中用到的一些常用方法:
分組統計:
判斷一個數據框中的某一列的值是否包含一個數組中的任意一個值:
取反:(對布爾值)
四、詞雲繪製
詞雲(Word Cloud):是對文本中詞頻較高的分詞,給與視覺上的突出,形成“關鍵詞渲染”,從而國旅掉大量的文本信息,使瀏覽者一眼掃過就可以領略文本的主旨。
4.1 安裝詞雲工具包
這個地址: ,可以搜到基本上所有的Python庫,進去根據自己的系統和Python的版本進行下載即可。
在python下安裝很方便,在anaconda下安裝費了點勁,最終將詞雲的文件放在C:UsersAdministrator 這個目錄下才安裝成功。
五、美化詞雲(詞雲放入某圖片形象中)
六、關鍵詞提取
結果如下:
七、關鍵詞提取實現
詞頻(Term Frequency):指的是某一個給定的詞在該文檔中出現的次數。
計算公式: TF = 該次在文檔中出現的次數
逆文檔頻率(Inverse Document Frequency):IDF就是每個詞的權重,它的大小與一個詞的常見程度成反比
計算公式:IDF = log(文檔總數/(包含該詞的文檔數 – 1))
TF-IDF(Term Frequency-Inverse Document Frequency):權衡某個分詞是否關鍵詞的指標,該值越大,是關鍵詞的可能性就越大。
計算公式:TF – IDF = TF * IDF
7.1文檔向量化
7.2代碼實戰
如何用Python和機器學習訓練中文文本情感分類模
Python在科學計算領域,有兩個重要的擴展模塊:Numpy和Scipy。其中Numpy是一個用python實現的科學計算包。包括: 一個強大的N維數組對象Array; 比較成熟的(廣播)函數庫; 用於整合C/C++和Fortran代碼的工具包; 實用的線性代數
如何利用Python對中文進行分詞處理
python做中文分詞處理主要有以下幾種:結巴分詞、NLTK、THULAC
1、fxsjy/jieba
結巴的標語是:做最好的 Python 中文分詞組件,或許從現在來看它沒做到最好,但是已經做到了使用的人最多。結巴分詞網上的學習資料和使用案例比較多,上手相對比較輕鬆,速度也比較快。
結巴的優點:
支持三種分詞模式
支持繁體分詞
支持自定義詞典
MIT 授權協議
2、THULAC:一個高效的中文詞法分析工具包
前兩天我在做有關於共享單車的用戶反饋分類,使用jieba分詞一直太過零散,分類分不好。後來江兄給我推薦了THULAC: 由清華大學自然語言處理與社會人文計算實驗室研製推出的一套中文詞法分析工具包 。THULAC的接口文檔很詳細,簡單易上手。
THULAC分詞的優點:
能力強。利用規模最大的人工分詞和詞性標註中文語料庫(約含5800萬字)訓練而成,模型標註能力強大。
準確率高。該工具包在標準數據集Chinese Treebank(CTB5)上分詞的F1值可達97.3%,詞性標註的F1值可達到92.9%
速度較快。同時進行分詞和詞性標註速度為300KB/s,每秒可處理約15萬字。只進行分詞速度達到1.3MB/s,速度比jieba慢
Python 解決中文編碼問題基本可以用以下邏輯:
utf8(輸入) —— unicode(處理) —— (輸出)utf8
Python 裡面處理的字符都是都是unicode 編碼,因此解決編碼問題的方法是把輸入的文本(無論是什麼編碼)解碼為(decode)unicode編碼,然後輸出時再編碼(encode)成所需編碼。
由於處理的一般為txt 文檔,所以最簡單的方法,是把txt 文檔另存為utf-8 編碼,然後使用Python 處理的時候解碼為unicode(sometexts.decode(‘utf8’)),輸出結果回txt 的時候再編碼成utf8(直接用str() 函數就可以了)。
在python中如何根據已有詞典對文本進行分類
如你所說的這種有簡單規則的,寫個正則匹配就可以了。要滿足更複雜的要求就用挖掘算法
python語言中有哪些數據類型
python數據類型有很多,這裡為大家簡單例舉幾個:
第一種:整數
python可以處理任意大小的整數,當然包含負整數,在python程序中,整數的表示方法和數學上的寫法一模一樣,比如:1,100,-8080,0,等。
計算機由於使用二進制,所以有時候用十六進制表示整數比較方便,十六進制用0x前綴和0-9,a-f表示,比如:0xff00。
第二種:浮點數
浮點數也就是小數,之所以稱為浮點數,是因為按照科學計數法表示時,一個浮點數的小數點位置是可變的。浮點數可以用數學寫法,比如1.23,3.15,-9.01等。但是對於很大或者很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23×10^9就是1.23e9。
整數和浮點數在計算機內部存儲的方法是不同的,整數運算永遠是精確的,而浮點數運算則可能會有四捨五入的誤差。
第三種:字符串
字符串是以“或”括起來的任意文本,比如’abc’,’xyz’等。請注意,“或”本身只是一種表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c這3個字符。
第四個:布爾值
布爾值和布爾代數的表示完全一致,一個布爾值只有True、False兩種值,要麼是True,要麼是False,在python中,可以直接用True、False表示布爾值,也可以通過布爾運算計算出來。
布爾值可以用and、or或not運算。
and運算是與運算,只有所有都為True,and運算結果才是True。
or運算是或運算,只要其中有一個為True,or運算結果就是True。
not運算是非運算,它是一個單目運算符,把True變成False,False變成True。
第五個:空值
空值是python里一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。
此外,python還提供了列表、字典等多種數據類型,還允許創建自定義數據類型。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/271442.html