现在四千多个公司近五年的年报已经全部以pdf的格式下载完成,每个公司分别有一个文件夹保存其五年的年报,共有四千多个文件夹,这些文件夹一起保存在A文件夹中,先要对其进行有关人工智能的词频统计,请详细写出代码
时间: 2024-10-06 21:05:16 浏览: 17
为了对这四千多个PDF文件夹进行人工智能相关的词频统计,可以使用Python结合`PyPDF2`库来读取PDF内容,`nltk`或`jieba`库进行分词,并利用`collections.Counter`进行词频统计。由于这个过程涉及到遍历大量文件,可能需要一些时间,所以我会给出一个基本的脚本框架。这里假设你的文件结构如下:
```
A/
|-- company_01/
| |-- year_1.pdf
| |-- year_2.pdf
| |-- ... (五年)
|-- company_02/
| |-- ...
|-- ...
|-- company_x/
|-- ...
```
```python
import os
import re
import PyPDF2
from nltk.corpus import stopwords
from collections import Counter
# 定义停止词列表
stop_words = set(stopwords.words('chinese')) if you're processing Chinese text else set()
def process_pdf(file_path):
with open(file_path, 'rb') as f:
pdf_reader = PyPDF2.PdfFileReader(f)
text = ''
for page in range(pdf_reader.getNumPages()):
text += pdf_reader.getPage(page).extractText()
# 清理文本并分词
words = re.findall(r'\b\w+\b', text.lower())
filtered_words = [word for word in words if word not in stop_words]
return filtered_words
def extract_text_from_folder(folder_path):
text_list = []
for file_name in os.listdir(folder_path):
if file_name.endswith('.pdf'):
file_path = os.path.join(folder_path, file_name)
text_list.extend(process_pdf(file_path))
return text_list
# 初始化统计器
word_freq = Counter()
# 遍历所有文件夹
for i, company_folder in enumerate(os.listdir(A), start=1):
folder_path = os.path.join(A, company_folder)
if os.path.isdir(folder_path): # 检查是否为文件夹
text_list = extract_text_from_folder(folder_path)
word_freq.update(text_list)
# 输出前N个最常见的单词及其频率
most_common_words = word_freq.most_common(10) # 可以调整这个数字
print("Top N most common AI-related words:")
for word, freq in most_common_words:
print(f"{word}: {freq}")
# 保存结果到文件或其他地方,如果你需要
# with open('ai_word_frequency.txt', 'w') as f:
# for word, freq in word_freq.items():
# f.write(f"{word}: {freq}\n")
```
注意:这个代码示例是一个简化的版本,实际处理过程中可能需要对PDF内容提取、文本预处理(如去除无关字符、标准化编码等)、以及更精细的分词(如使用NLTK或jieba)。此外,由于PDF的大小和复杂度,处理大文件可能会消耗较多内存,可能需要考虑采用异步或多线程的方式。