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怎么对文本数据进行特征化提取的详细内容,更多请关注其它相关文章!