首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python计算一个词条出现的文档数?

如何使用python计算一个词条出现的文档数?
EN

Stack Overflow用户
提问于 2020-02-14 20:10:13
回答 3查看 681关注 0票数 0

我正在尝试计算TF-IDF向量化的IDF值。我正在尝试计算包含该单词中每个唯一单词的文档数量。

这是语料库:

语料库=‘这是第一个文档’,‘这个文档是第二个文档’,‘这是第三个文档’,‘这是第一个文档’

我的代码:

..。

IDF值:

代码语言:javascript
复制
for i in range(0,len(corpus)):
    o=corpus[i].split(' ')
    c=0
    for wor in n:
        for k in range(0,len(corpus)):
            if wor in o[k]:
            c=c+1
        print(wor, c) 

..。

我得到的输出是:和0文档0第一个1是3 1 3第二个3 4第三个4这个5和0文档1第一个1是3一个3第二个3 4第三个4这个5和1个文档1第一个1个1是3个1个3第二个3 4第三个4这个5和0文档0第一个1个是3一个3第二个3 4第三个4这个5

我需要的输出是: this 4是4第一个2文档3第二个1和1第三个1 1

EN

回答 3

Stack Overflow用户

发布于 2020-02-14 20:20:28

我假设n包含您的词汇表。然后你可以这样做:

代码语言:javascript
复制
wordsets = [ frozenset(document.split(' ')) for document in corpus ]
results = []
for word in n:
    count = sum( 1 for s in wordsets if word in s )
    results.append((count, word))
for count, word in sorted(results, reverse=True):
    print(word, count)
票数 0
EN

Stack Overflow用户

发布于 2020-02-14 20:29:34

你可以做到这一点。但是,您尝试计算的不是IDF。它只是特定单词在所有文档中的出现频率。

代码语言:javascript
复制
 for i in range(0,len(corpus)):
   words=corpus[i].split(' ')
   for word in words:
     if word in freq:
       freq[word] = freq[word] + 1
     else:
       freq[word] = 1
 print(freq)
票数 0
EN

Stack Overflow用户

发布于 2020-02-14 20:22:39

这非常适合collections包中的Counter

代码语言:javascript
复制
from collections import Counter

words = ' '.join(corpus)
output = Counter(words.split()).most_common()
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60226111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档