机器学习(3.文本数据的特征抽取(第一种))
文本特征抽取
作用:對文本數據進行特征值化
類:sklearn.feature_extraction.text.CountVectorizer
1.CountVectorizer語法
? ? ??CountVectorizer(max_df=1.0,min_df=1,…)
? ? ? ? ? ? ? ????返回詞頻矩陣
? ??CountVectorizer.fit_transform(X,y)??????
? ? ? ? ? ? ?X:文本或者包含文本字符串的可迭代對象
? ? ? ? ? ??返回值:返回sparse矩陣
? ?CountVectorizer.inverse_transform(X)
? ? ? ? ? ??X:array數組或者sparse矩陣
返回值:轉換之前數據格式
? ?CountVectorizer.get_feature_names()
? ? ? ? ? ?返回值:單詞列表
2.流程和例子
from sklearn.feature_extraction.text import CountVectorizerdef conuntvec():"""對文本進行特征值化:return: None"""cv = CountVectorizer()data = cv.fit_transform(["life is short,i like python","life is too long,i dislike python"])print(cv.get_feature_names())# 將sparse矩陣轉換為·數組print(data.toarray())return Noneif __name__ == '__main__':conuntvec()?結果:
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too'] [[0 1 1 1 0 1 1 0][1 1 1 0 1 1 0 1]]?第一行,打印出? ?統計所有文章當中所有的詞,重復的只看做一次? ?(詞的列表)
?注意: 對于單個的英文字母直接進行放棄,不進行統計? (因為它是沒有分類的依據的)
數據數組:, 類似于統計的次數,對每篇文章,在詞的列表里面進行統計每個詞出現的次數
?數據數組的第一行,第一個小數組:對應的輸入的數據,以逗號分隔開,
? 例如第一句話是:"life is short,i like python",? ? 對應詞的列表,出現幾次值就為幾
?3. 文本特征抽取: 統計次數 Count()? ?,可用于文本分類,情感分析
4.
(1)對于中文特征值化要,按照指定的格式提前分好詞,例如?
? ? ?中文文本以空格分開
from sklearn.feature_extraction.text import CountVectorizerdef countvec():"""對中文文本進行特征值化:return: None"""cv = CountVectorizer()data = cv.fit_transform(["人生 苦短 我 喜歡 Python Python","人生 漫長 不用 Python"])print(cv.get_feature_names())print(data.toarray())return Noneif __name__ == '__main__':countvec()? ?結果:? 代表的意思同英文一樣,統計出次數
['python', '不用', '人生', '喜歡', '漫長', '苦短'] [[2 0 1 1 0 1][1 1 1 0 1 0]](2)可以使用jieba庫進行分詞
利用jieba庫做中文特征抽取,? 例子
from sklearn.feature_extraction.text import CountVectorizer import jiebadef cutword():content1 = jieba.lcut("今天很殘酷,明天更殘酷,后天很美好,但絕對大部分是死在明天晚上,""所以每個人不要放棄今天。")content2 = jieba.lcut("我們看到的從很遠星系來的光是在幾百萬年之前發出的,""這樣當我們看到宇宙時,我們是在看它的過去。")content3 = jieba.lcut("如果只用一種方式了解某樣事物,你就不會真正了解它。""了解事物真正含義的秘密取決于如何將其與我們所了解的事物相聯系。")# 把分詞后的列表轉換成字符串c1 = ' '.join(content1)c2 = ' '.join(content2)c3 = ' '.join(content3)return c1, c2, c3def chinesevec():"""對一段文本使用jieba分詞后組成有空格的格式的字符串進行文本特征抽取:return: None"""c1, c2, c3 = cutword()cv = CountVectorizer()data = cv.fit_transform([c1, c2, c3])print(cv.get_feature_names())print(data.toarray())return Noneif __name__ == '__main__':chinesevec()抽取的結果: 完成了中文特征抽取,文本特征值化
['一種', '不會', '不要', '之前', '了解', '事物', '今天', '光是在', '幾百萬年', '發出', '取決于', '只用', '后天', '含義', '大部分', '如何', '如果', '宇宙', '我們', '所以', '放棄', '方式', '明天','星系', '晚上', '某樣', '殘酷', '每個', '看到', '真正', '秘密', '絕對', '美好', '聯系', '過 去', '這樣'] [[0 0 1 0 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 2 0 1 0 2 1 0 0 0 1 1 0 0 0][0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 3 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 1][1 1 0 0 4 3 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 2 1 0 0 1 0 0]]?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的机器学习(3.文本数据的特征抽取(第一种))的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(2.sklearn(Sciki
- 下一篇: 机器学习(4.文本数据的特征抽取(第二种