文本数据特征抽取
类
sklearn.feature_extraction.text.Countverctorizer
Countverctorizer语法
- Countverctorizer()
- 返回词频矩阵
- Countverctorizer.fit_transform(X)
- X:文本或或包含文本对象的可迭代对象
- 返回值:返回sparse矩阵
- Countverctorizer.inverse_transform(X)
- X:array数组或者sparse矩阵
- 返回值:转换之前的数据格式
- COuntvectorzer_feature_names()
- 返回值:单词列表
代码
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer
def dictvet():
# mydict=DictVectorizer(sparse=False)
# # 调用fit_transform
# data=mydict.fit_transform([{'city':'上海','temp':37},{'city':'北京','temp':39},{'city':'深圳','temp':38}])
# print(data)
# print(mydict.get_feature_names())
cv=CountVectorizer()
data=cv.fit_transform(["life is wanderful","life is beautiful","life is bad"])
print(cv.get_feature_names())
print(data.toarray())
return None
def main():
dictvet()
if __name__ == '__main__':
main()
运行结果
结果分析
- 统计所有文章当中所有的词,重复的只做一次 词的列表 对单个英文字母不进行分类
- 对于中文,不适用与特征分析,无法单词抽取
解决方案:在中间打上空格
- 下载 -->pip3 install jiebe
- 使用–> import jieba jieba.cut(“文本字符串”)
- 返回值–>词语生成器
对中文特征值化案例
代码:
def dictword():
word1="君子在下位则多谤,在上位则多誉;小人在下位则多誉,在上位则多谤。"
word2="你若要喜爱你自己的价值,你就得给世界创造价值。"
word3="如果我们想交朋友,就要先为别人做些事——那些需要花时间、体力、体贴、奉献才能做到的事"
list_1=list(jieba.cut(word1))
list_2=list(jieba.cut(word2))
list_3=list(jieba.cut(word3))
jieba_1=" ".join(list_1)
jieba_2=" ".join(list_2)
jieba_3=" ".join(list_3)
cv=CountVectorizer()
data=cv.fit_transform([jieba_1,jieba_2,jieba_3])
print(cv.get_feature_names())
print(data.toarray())
运行结果: