当前位置:   article > 正文

自然语言处理(NLP)之gensim中的TF-IDF的计算方法_gensim计算tf-idf

gensim计算tf-idf

自然语言处理(NLP)之gensim中的TF-IDF的计算方法

step 1.  去掉所有文本中都会出现的词

texts = [['这是', '一个', '文本'], ['这是', '第二个', '文本'], ['这是', '又一个', '文本'], ['这是', '最后', '一个', '文本']]

去掉所有文本中均出现的词后的文本:

texts_filter = [['一个'], ['第二个'], ['又一个'], ['最后', '一个']]

step 2. 计算文本中剩余单词的tf-idf值,默认得计算公式:

tf_idf = word_freq * log(全部文本数 / 包含该词的文本数)

这里不需要做平滑化的处理, 因为已经把全部文本中都会出现的词拿掉了

示例代码:

  1. from gensim import corpora
  2. from gensim.models.tfidfmodel import TfidfModel
  3. texts = [['这是', '一个', '文本'], ['这是', '第二个', '文本'], ['这是', '又一个', '文本'], ['这是', '最后', '一个', '文本']]
  4. dictionary = corpora.Dictionary(texts)
  5. print(dictionary)
  6. corpus = [dictionary.doc2bow(text) for text in texts]
  7. print(corpus)
  8. tf_idf_model = TfidfModel(corpus, normalize=False)
  9. word_tf_idf = list(tf_idf_model[corpus])
  10. print('词典:', dictionary.token2id)
  11. print('词频:', corpus)
  12. print('词的tf-idf值:', word_tf_idf)

运行结果:

  1. Dictionary(6 unique tokens: ['一个', '文本', '这是', '第二个', '又一个']...)
  2. [[(0, 1), (1, 1), (2, 1)], [(1, 1), (2, 1), (3, 1)], [(1, 1), (2, 1), (4, 1)], [(0, 1), (1, 1), (2, 1), (5, 1)]]
  3. 词典: {'一个': 0, '文本': 1, '这是': 2, '第二个': 3, '又一个': 4, '最后': 5}
  4. 词频: [[(0, 1), (1, 1), (2, 1)], [(1, 1), (2, 1), (3, 1)], [(1, 1), (2, 1), (4, 1)], [(0, 1), (1, 1), (2, 1), (5, 1)]]
  5. 词的tf-idf值: [[(0, 1.0)], [(3, 2.0)], [(4, 2.0)], [(0, 1.0), (5, 2.0)]]

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/354427
推荐阅读
相关标签
  

闽ICP备14008679号