gpt4 book ai didi

python - 在计算文本文档集合中的单词出现次数时遇到问题

转载 作者:行者123 更新时间:2023-12-01 06:59:23 25 4
gpt4 key购买 nike

我有大量文本文档,我想循环遍历这些文档,并在文章标题和单词出现次数的简单数据框中输出这些文档中特定单词的计数。但是我的输出数据框显然不正确。我怀疑我在用代码做一些愚蠢的事情。有人能帮忙找出问题所在吗?

我使用 glob 包收集文章,然后使用 count 函数循环遍历它们。然而,我的输出给了我明显错误的答案,例如在非常大的文档中出现简单事物(例如“我们”)的次数为“1”或“0”。

import glob

articles = glob.glob('Test/*.txt')

we_dict = {}

for article in articles:
we_dict[article] = article.count("we")

we = pd.DataFrame.from_dict(we_dict, orient='index', dtype=None)

没有生成任何错误消息,因此代码正在执行某些操作 - 生成了一个数据帧。但输出的计数值应该是数百个,而不是0、1、2等小数字。

编辑:

由于非常有帮助的回复,为 future 有相同查询的读者提供了工作版本。我确信代码可以稍微简化。

import glob
import re

articles = glob.glob('Test/*.txt')

we_dict = {}

for article in articles:
with open(article, 'r', encoding="utf8") as art:
a = art.read()
a = a.lower()
we_dict[article] = sum(1 for match in re.finditer(r"\bwe\b", a))

we = pd.DataFrame.from_dict(we_dict, orient='index', dtype=None)

最佳答案

现在,您的代码正在迭代文章列表并将 article 声明为文件名。 we_dict[article] =article.count("we") 行实际上是在获取您的文件名并尝试在名称本身中查找“we”一词!因此,您需要做的是使用文件名打开文件,然后读取各行。

解决此问题的一种可能方法是将所有文件读入字典,然后通过该字典计算单词数。也许是这样的:

import glob
import pandas as pd

articles = glob.glob('*.txt')
txt_files = {}
word = 'cupcakes'

for article in articles:
with open(article, 'r') as file:
txt_files[article] = file.read().splitlines().count(word)

my_word = pd.DataFrame.from_dict(txt_files, orient='index')

关于python - 在计算文本文档集合中的单词出现次数时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701664/

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