机器学习框架sklearn之文本特征提取

文章介绍了文本特征提取的两种方法,包括使用CountVectorizer进行词频统计和TfidfVectorizer进行TF-IDF权重计算。这两种方法在自然语言处理和信息检索中常用,用于将文本数据转换为可用于机器学习模型的数值特征。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文本特征提取

作用:对文本数据进行特征化
(句子、短语、单词、字母)一般选用单词作为特征值

方法一: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的小强呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值