3.2.4-词袋模型和TF-IDF机制

目录

词袋模型

  1. 自然语言处理领域十分常用的文档表示方法。
  2. 句子或者一篇文档,用一堆单词表示,且不考虑单词出现的顺序、句法以及文法,且认为每个单词的出现独立。

编码方式

  1. 这种词向量的编码方式称为独热编码或独热表示。
  2. 构造字典,单词无重复,每一句话可以用字典个数n的n维向量表示。
  3. 向量的每一维都表示1个单词,且这一维分量表示该单词在这句话中出现的次数。
  4. 该编码方式不考虑单词间的位置关系,会导致词向量非常稀疏。

TF-IDF机制

TF:Term Frequency词频。
IDF:Inverted Term Frequency逆词频。

设定

符号含义c一个文档集合d其中一篇文档t某个单词tf词频,即单词t在文档d中出现的次数。若某个词t的tf越高,即词t对文档d越重要df文档频率,即文档集合c中出现单词t的文档个数idf逆文档频率。即单词t在越多的文档中出现,其重要型则降低,如’的’、’是’。

计算方式

  • 基本公式
    tf-idf = tf * idf = tf * log(N/df)
    log默认底数是10.

即单词 tdf越低,其 idf越高, t的重要性越高。
也是单词 t在文档 d中词频 tf越高,且在整个集合 cidf也高,则 t对于 d越重要。

实例

  1. pycharm 先安装 sklearn 库,借助其所带的 IF-IDF 功能。
  2. 代码
    from sklearn.feature_extraction.text import CountVectorizer

    corpus = ['I do not like this phone',
              'I do not want to leave,I really like this place']

    vectorizer = CountVectorizer()
    vectors = vectorizer.fit_transform(corpus)

    print('所有词条 (所有维度的特征)')
    print(vectorizer.get_feature_names())
    print()

    print('(文章ID,词条ID)词频')
    print(vectors)
    print()

    from sklearn.feature_extraction.text import TfidfTransformer

    transformer = TfidfTransformer(norm=None, smooth_idf=False)
    tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))

    tfidf_array = tfidf.toarray()
    words = vectorizer.get_feature_names()

    for i in range(len(tfidf_array)):
        print("*********第", i + 1, "个文档中,所有词语的 tf-idf*********")

        for j in range(len(words)):
            print(words[j], '', tfidf_array[i][j])
        print()
所有词条 (所有维度的特征)
['do', 'leave', 'like', 'not', 'phone', 'place', 'really', 'this', 'to', 'want']

(文章ID,词条ID)词频
  (0, 0)    1
  (0, 3)    1
  (0, 2)    1
  (0, 7)    1
  (0, 4)    1
  (1, 0)    1
  (1, 3)    1
  (1, 2)    1
  (1, 7)    1
  (1, 9)    1
  (1, 8)    1
  (1, 1)    1
  (1, 6)    1
  (1, 5)    1

*********第 1 个文档中,所有词语的 tf-idf*********
do  1.0
leave  0.0
like  1.0
not  1.0
phone  1.6931471805599454
place  0.0
really  0.0
this  1.0
to  0.0
want  0.0

*********第 2 个文档中,所有词语的 tf-idf*********
do  1.0
leave  1.6931471805599454
like  1.0
not  1.0
phone  0.0
place  1.6931471805599454
really  1.6931471805599454
this  1.0
to  1.6931471805599454
want  1.6931471805599454

Original: https://blog.csdn.net/qq_43447401/article/details/123212327
Author: 会有钱的-_-
Title: 3.2.4-词袋模型和TF-IDF机制

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/545016/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球