使用TF-IDF提取关键字

时间:2016-09-26 08:57:12

标签: python scikit-learn nlp tf-idf

我在一篇文章中解决了使用TF-IDF进行关键字提取的问题。 我遵循的管道如下:

  1. 输入文字
  2. 用句子构造词汇来构建词汇
  3. 应用CountVectorizer为每个句子构建计数向量。
  4. 应用TfidfTransformer为其分配权重。
  5. 但是,我面临的问题是,我为每个令牌收到的分数与句子有关,而我想要的是整篇文章的上下文分数。 。那么我该如何实现呢?

    例如: 这是我的玩具文本。

      

    " Rashid Siddiqui一直听到他的穆斯林朝圣者们在118度的高温下,在炙热的沙特太阳下,在地上受伤的那些话。 Siddiqui先生赤脚,裸照和茫然,不知怎样逃脱了被汹涌的人群压垮。2015年9月24日,朝觐的第三个早晨,来自世界各地的数百万穆斯林每年为期五天的朝圣之旅。据估计,这是朝觐历史上最致命的一天,也是几十年来世界上最严重的事故之一。来自亚特兰大的美国人,42岁的西迪基先生,一直在穿过数万座朝圣帐篷的山谷。他的目的地是:贾马拉特桥(Jamarat Bridge),朝圣者在三个大柱子上投掷鹅卵石,这种仪式象征着魔鬼的石头砸死。当迷恋开始时,他离桥不到一英里。"

    这是我的体重矩阵。

    [[ 0.24922681  0.          0.          0.          0.          0.          0.
       0.          0.          0.          0.          0.          0.          0.
       0.          0.          0.          0.          0.24922681  0.          0.
       0.          0.          0.24922681  0.24922681  0.          0.24922681
       0.24922681  0.          0.          0.24922681  0.          0.24922681
       0.24922681  0.          0.          0.          0.          0.
       0.24922681  0.          0.          0.          0.          0.20107462
       0.          0.24922681  0.          0.24922681  0.24922681  0.
       0.1669101   0.          0.          0.24922681  0.          0.          0.
       0.          0.          0.          0.          0.          0.
       0.24922681  0.          0.        ]
    
     [ 0.          0.22910137  0.22910137  0.          0.          0.
       0.22910137  0.          0.22910137  0.          0.          0.22910137
       0.          0.22910137  0.18483754  0.22910137  0.          0.          0.
       0.          0.          0.22910137  0.          0.          0.
       0.18483754  0.          0.          0.          0.          0.          0.
       0.          0.          0.22910137  0.          0.22910137  0.22910137
       0.18483754  0.          0.22910137  0.          0.          0.22910137
       0.          0.          0.          0.          0.          0.
       0.22910137  0.15343186  0.          0.          0.          0.22910137
       0.          0.          0.          0.          0.          0.22910137
       0.          0.          0.          0.18483754  0.        ]
    
     [ 0.          0.          0.          0.22910137  0.22910137  0.22910137
       0.          0.22910137  0.          0.          0.          0.          0.
       0.          0.18483754  0.          0.22910137  0.22910137  0.          0.
       0.          0.          0.22910137  0.          0.          0.18483754
       0.          0.          0.22910137  0.          0.          0.          0.
       0.          0.          0.          0.          0.          0.18483754
       0.          0.          0.          0.22910137  0.          0.          0.
       0.          0.          0.          0.          0.          0.15343186
       0.22910137  0.          0.          0.          0.          0.22910137
       0.22910137  0.22910137  0.          0.          0.22910137  0.22910137
       0.          0.18483754  0.22910137]
    

    现在我的问题是关于句子或整篇文章的令牌的权重是多少?如果它与句子有关,那么我如何针对整篇文章制作呢?

    我想要实现的是一种使用tfidf为单个文章提取关键字的无监督技术!

1 个答案:

答案 0 :(得分:0)

TfidfVectorizer等同于应用CountVectorizer,然后将TfidfTransformer设置为给定的here。如果我理解正确,你通过了一篇文章,它返回了一个权重向量矩阵,但只有当你将文章分成句子时才会发生。如果它只传递了一篇文章,它将返回一个稀疏行。 Here是一个示例python笔记本,我所做的应该可以帮到你。