1. 程式人生 > 其它 >Day 40:文字特徵抽取,中文特徵值化

Day 40:文字特徵抽取,中文特徵值化

技術標籤:學習記錄學習成長學習筆記大資料資料分析python字串機器學習

Python 回憶錄

2020/1/18

文字特徵抽取

其實就是對文字資料進行特徵值化,運用到sklearn的類是sklearn.feature_extraction.text.CountVectorizer注意是在text模組下的。

CountVectorizer()返回的是詞頻矩陣

  • CountVectorizer.fit_transform(x)X:文字或者包含文字字串的可迭代物件,返回sparse矩陣
  • CountVectorizer.inverse_transform(x)
    x:array陣列或者sparse矩陣 返回值:轉換之前的資料格式
  • 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()

輸出
在這裡插入圖片描述