python读文件提取关键词分类代码
时间: 2023-10-08 17:13:39 浏览: 134
以下是一个基于Python的关键词提取分类示例代码:
```python
import os
import csv
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
# 定义停用词
stop_words = set(stopwords.words('english'))
# 初始化词干还原器
lemmatizer = WordNetLemmatizer()
# 读取文件
def read_file(file_path):
with open(file_path, 'r') as file:
return file.read()
# 分词和词干还原
def tokenize_and_lemmatize(text):
tokens = word_tokenize(text)
tokens = [lemmatizer.lemmatize(token.lower()) for token in tokens if token.isalpha() and token.lower() not in stop_words]
return tokens
# 提取关键词
def extract_keywords(tokens):
keywords = {}
for token in tokens:
if token in keywords:
keywords[token] += 1
else:
keywords[token] = 1
return keywords
# 获取文件夹下的所有文件路径
def get_files_in_folder(folder_path):
files = []
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
if os.path.isfile(file_path):
files.append(file_path)
return files
# 分类
def classify(text, keywords):
text_tokens = tokenize_and_lemmatize(text)
text_keywords = extract_keywords(text_tokens)
score = 0
for keyword in text_keywords:
if keyword in keywords:
score += text_keywords[keyword] * keywords[keyword]
return score
# 读取并提取关键词
def read_and_extract_keywords(file_path):
text = read_file(file_path)
tokens = tokenize_and_lemmatize(text)
return extract_keywords(tokens)
# 主程序
if __name__ == '__main__':
# 读取分类文件夹
folder_path = 'classification_folder'
files = get_files_in_folder(folder_path)
# 提取分类关键词
keywords = {}
for file_path in files:
file_keywords = read_and_extract_keywords(file_path)
for keyword in file_keywords:
if keyword in keywords:
keywords[keyword] += file_keywords[keyword]
else:
keywords[keyword] = file_keywords[keyword]
# 保存分类关键词到CSV文件
with open('keywords.csv', 'w', newline='') as csv_file:
writer = csv.writer(csv_file)
writer.writerow(['Keyword', 'Frequency'])
for keyword in keywords:
writer.writerow([keyword, keywords[keyword]])
# 读取测试文件夹
folder_path = 'test_folder'
files = get_files_in_folder(folder_path)
# 分类测试文件
for file_path in files:
text = read_file(file_path)
score = classify(text, keywords)
print(f'{file_path}: {score}')
```
以上代码将会依次执行以下步骤:
1. 读取分类文件夹中的所有文件,提取每个文件中的关键词,并将它们加入到一个关键词字典中。
2. 将关键词字典保存到CSV文件中。
3. 读取测试文件夹中的所有文件,计算每个文件的得分,并输出到控制台中。
请注意,以上代码只是一个示例,可能需要根据具体情况进行修改和优化。
阅读全文