这篇文章主要介绍了Python sklearn怎么对文本数据进行特征化提取的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python sklearn怎么对文本数据进行特征化提取文章都会有所收获,下面我们一起来看看吧。
作用:对文本数据进行特征化
(句子、短语、单词、字母)一般选用单词作为特征值
方法一:CountVectorizer
sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
返回词频矩阵(统计每个样本特征词出现的个数)
CountVectorizer.fit_transform(X)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前的数据格式
CountVectorizer.get_feature_names()
返回值:单词列表
代码展示:
from sklearn.feature_extraction.text import CountVectorizer def count_demo(): #文本特征抽取 data=["life is short, i like like python","life is too long,i dislike python"] #1、实例化一个转换器类 transfer=CountVectorizer() #2、调用fit_transform() result=transfer.fit_transform(data) print("result:\n",result.toarray()) print("特征名字:\n", transfer.get_feature_names()) return None
方法二:TfidfVectorizer
关键词:在某一个类别的文章中,出现的次数很多,但是在其他类别的文章中出现的次数很少称为关键词
Tf-idf文本特征提取
①TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
②TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
公式
①词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率
②逆向文档频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件数目,再将得到的商取以10为底的对数得到
tfidf = tf * idf
输出的结果可以理解为重要程度
API
sklearn.feature_extraction.text.TfidfVectorizer(stop_words=None,...)
返回词的权重矩阵
TfidfVectorizer.fit_transform(X)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵
TfidfVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
TfidfVectorizer.get_feature_names()
返回值:单词列表
from sklearn.feature_extraction.text import TfidfVectorizer import jieba def cut_word(text): #中文分词 #jieba.cut(text)返回的是生成器对象,用list强转成列表 word=list(jieba.cut(text)) #转成字符串 words=" ".join(word) return words def tfidf_demo(): data = ["今天很残酷,明天更残酷,后天会很美好,但绝大多数人都死在明天晚上,却见不到后天的太阳,所以我们干什么都要坚持", "注重自己的名声,努力工作、与人为善、遵守诺言,这样对你们的事业非常有帮助", "服务是全世界最贵的产品,所以最佳的服务就是不要服务,最好的服务就是不需要服务"] data_new = [] # 将中文文本进行分词 for sentence in data: data_new.append(cut_word(sentence)) # 1、实例化一个转换器类 transfer = TfidfVectorizer() # 2、调用fit_transform() result = transfer.fit_transform(data_new) # 得到词频矩阵 是一个sparse矩阵 print("result:\n", result.toarray()) # 将sparse矩阵转化为二维数组 print("特征名字:\n", transfer.get_feature_names()) return None
关于“Python sklearn怎么对文本数据进行特征化提取”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python sklearn怎么对文本数据进行特征化提取”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。