gpt4 book ai didi

python - 在 TF-IDF 中结合 Unigram 和 Bigram

转载 作者:行者123 更新时间:2023-12-04 10:04:49 25 4
gpt4 key购买 nike

我正在做一个项目,我们正试图在分为多个集群的文章标题语料库上生成 TF-IDF。我们的目标是让它包含 最重要的一元组和二元组同时对于每个集群。我们的计划是这样的。我们首先在我们的语料库中确定最可能的二元组。使用该列表,我们然后计算每个集群中这些二元组的频率。我们接下来要做的,也就是我们的问题所在,是确保我们不会将那些二元组中的单词数两次。假设流行的二元语法是“气候变化”。在我们的语料库中,bigram 'climate change' 的频率为 6,但单词 'climate' 的频率为 7(单独出现一次),单词 'change' 的频率为 8(单独出现两次)。我们必须确保我们的表与组合的 unigram 和 bigram 看起来不是这样的:

      n_gram          frequency
1: climate change 6
2: climate 7
3: change 8

它必须看起来像这样(我们将“气候变化”的“气候”和“变化”频率减去它们相应的一元组):
      n_gram          frequency
1: climate change 6
2: climate 1
3: change 2

问题是,如果我们将每个 bigram 的第一个和第二个词频减去它们对应的 unigram,我们有时会得到 unigram 的负频率。我们的直觉是这样的:假设流行的三元组是“美利坚合众国”。然后我们将有两个频繁出现的二元组,即“United States”和“States America”。所以假设我们一开始有这个表(没有做任何减法):
    n_gram          frequency
1: United States 10
2: States America 10
3: United 11
4: States 12
5: America 13

减去二元组频率后,我们将得到这个表:
       n_gram         frequency
1: United States 10
2: States America 10
3: United 1
4: States -8
5: America 3

我的问题是:有没有我看不到的简单方法?使用这种方法我们会得到负频率还有其他原因吗?

最佳答案

如果您首先计算二元组,那么在计算一元组频率时,您可以忽略增加作为重要二元组一部分的一元组的任何实例的频率。例如,如果我们有:

... Experts in the United States America believe that if we don't tackle climate change now, the climate will cause irreversible damage to America and our planet. In contrast, some people believe that climate change is a hoax invented by the United States America government ..."



我们最频繁的二元组是:
  bi_gram         frequency
1: United States 2
2: States America 2
3: climate change 2

当我们计算我们的一元组时,我们可以忽略属于上述任何二元组的任何一元组实例。例如,我们只能在其左侧没有 United 或右侧没有 States 的情况下增加 America,从而制作我们的 unigram 频率表(忽略其他词):
 uni_gram         frequency
1: climate 1
2: change 1
3: America 1

关于python - 在 TF-IDF 中结合 Unigram 和 Bigram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61639875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com