Day 40:文字特徵抽取,中文特徵值化
阿新 • • 發佈:2021-01-19
技術標籤:學習記錄學習成長學習筆記大資料資料分析python字串機器學習
Python 回憶錄
2020/1/18
文字特徵抽取
其實就是對文字資料進行特徵值化,運用到sklearn的類是sklearn.feature_extraction.text.CountVectorizer
注意是在text模組下的。
CountVectorizer()
返回的是詞頻矩陣
CountVectorizer.fit_transform(x)
X:文字或者包含文字字串的可迭代物件,返回sparse矩陣CountVectorizer.inverse_transform(x)
CountVectorizer.get_feature_names()
返回單詞列表
流程
1.實列化CountVectorizer
2. 呼叫fit_transform方法輸入資料並轉換(需要注意利用toarray()
方法從sparse矩陣轉換array陣列)
from sklearn.feature_extraction.text import CountVectorizer
def countvec():
cv = CountVectorizer()
data = cv.fit_transform(["life is too short, i like python" ,"life is too long, i dislike python"])
print(cv.get_feature_names())
print(data.toarray())
return None
if __name__ == "__main__":
countvec()
輸出
第一行是get_feature_name
統計所有文章出現的詞,相當於詞的列表,一個字母的沒有統計 因為沒有太大意義。
第二行是統計每個詞 出現次數
中文流程
要想要中文特徵值化 得需要用到 “ jieba”這個工具 幫忙把中文段落用空格分開。在terminal中 pip install jieba
jieba.cut("一個字串")
方法分隔字串。注意:jieba.cut返回的不是列表,所以得需要轉換列表並且再轉為字串才可以被
CountVectorizer.fit_transform()
方法所應用
import jieba
from sklearn.feature_extraction.text import CountVectorizer
def cutword():
con1 = jieba.cut("這裡就隨便寫點中文的字串")
con2 = jieba.cut("這裡要寫一點和上面不一樣的中文字串")
#轉換為列表後轉化為字串
c1 = ' '.join(list(con1))
c2 = ' '.join(list(con2))
return c1, c2
def countvec():
c1, c2 = cutword()
cv = CountVectorizer()
data = cv.fit_transform([c1,c2,])
print(cv.get_feature_names())
print(data.toarray())
if __name__ == "__main__":
countvec()
輸出