我是靠谱客的博主 机灵台灯,最近开发中收集的这篇文章主要介绍TF-IDF和TruncatedSVD,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、使用TF-IDF对文本进行预处理,将文本化为向量的表示形式

 1、TfidfVectorizer可以把原始文本转化为tf-idf的特征矩阵,从而为后续的文本相似度计算,主题模型(如LSI),文本搜索排序等一系列应用奠定基础。

2、实例

    tfidf_model = TfidfVectorizer().fit(document#字典中词语对应的编号
    print(tfidf_model.vocabulary_)
    # {'一条': 1, '天狗': 4, '日来': 5, '一切': 0, '星球': 6, '全宇宙': 3, '便是': 2}
    sparse_result = tfidf_model.transform(document# 得到tf-idf矩阵,稀疏矩阵表示法
    print(sparse_result)
    # (0, 4)    0.707106781187
    # (0, 1)    0.707106781187
    # (2, 5)    1.0
    # (3, 6)    0.707106781187
    # (3, 0)    0.707106781187
    # (4, 3)    1.0
    # (5, 2)    1.0
    #(文本数,词汇数)    tf-idf权值

 

    print(sparse_result.todense()) # 转化为更直观的一般矩阵

[[0.         0.70710678 0.         0.         0.70710678 0.       0.        ]
 [0.         0.         0.         0.         0.         0.       0.        ]
 [0.         0.         0.         0.         0.         1.       0.        ]
 [0.70710678 0.         0.         0.         0.         0.       0.70710678]
 [0.         0.         0.         1.         0.         0.       0.        ]
 [0.         0.         1.         0.         0.         0.       0.        ]]

3、参数

    单字的词语,如“我”、“吞”、“呀”等词语在我们的词汇表中怎么都不见了呢?单字的问题是token_pattern这个参数搞的鬼。它的默认值只匹配长度≥2的单词;token_pattern这个参数使用正则表达式来分词,其默认参数为r"(?u)bww+b",其中的两个w决定了其匹配长度至少为2的单词,所以这边减到1个(r"(?u)bw+b")。

参考原文:https://blog.csdn.net/blmoistawinde/article/details/80816179

二、LSI(潜在语义分析),主题模型中较早也较为简单的一种,在sklearn库中以TruncatedSVD的形式实现

使用TruncatedSVD,把原先规模为(文本数,词汇数)的特征矩阵X化为规模为(文本数,主题数)的新特征矩阵X2:

(由于主题数一般比词汇数少,这一方法也可以用来降维,以进行分类或聚类操作)

n_pick_topics = 3            # 设定主题数为3
lsa = TruncatedSVD(n_pick_topics)               
X2 = lsa.fit_transform(sparse_result)
print(X2)

[[-0.00000000e+00  1.00000000e+00  0.00000000e+00]
 [ 5.46951809e-17  0.00000000e+00 -1.35571853e-16]
 [ 2.93449060e-01 -0.00000000e+00  3.34528242e-01]
 [-5.33481569e-02 -0.00000000e+00  7.36513957e-01]
 [ 9.15962109e-01 -0.00000000e+00 -2.23619221e-01]
 [-2.68430695e-01 -0.00000000e+00 -5.43720967e-01]]

X2[i,t]为第i篇文档在第t个主题上的分布,所以该值越高的文档i,可以认为在主题t上更有代表性,我们便以此筛选出最能代表该主题的文档。

参考原文:https://blog.csdn.net/blmoistawinde/article/details/83446529

最后

以上就是机灵台灯为你收集整理的TF-IDF和TruncatedSVD的全部内容,希望文章能够帮你解决TF-IDF和TruncatedSVD所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部