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