遍历txt文件 去除停用词 提取前10的关键词并输出
时间: 2024-01-17 13:04:21 浏览: 31
好的,我可以帮你解决这个问题。首先,需要先下载一个停用词表,比如中文停用词表,然后将其加载进来。接着,我们可以使用 Python 中的 jieba 库来进行分词,并去除停用词。最后,使用 TF-IDF 算法来提取关键词并输出前 10 个即可。
以下是示例代码:
```python
import jieba
import jieba.analyse
# 加载停用词表
stopwords = set()
with open('stopwords.txt', 'r', encoding='utf-8') as f:
for line in f:
stopwords.add(line.strip())
# 读取文本文件
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词并去除停用词
words = []
for word in jieba.cut(text):
if word not in stopwords:
words.append(word)
# 提取关键词并输出前 10 个
keywords = jieba.analyse.extract_tags(text, topK=10, withWeight=False)
print(keywords)
```
需要注意的是,以上代码仅是一个简单的示例,对于不同的文本和应用场景,还需要根据实际情况进行调整和优化。
相关问题
用python批量对txt文件进行去除停用词,分词和关键词提取的详细代码,可以直接运行
好的,这是一个基于Python的去除停用词、分词和关键词提取的代码示例:
首先,需要安装jieba和gensim这两个库,以及中文停用词库stopwords,可以通过以下命令进行安装:
```python
pip install jieba gensim
```
下载停用词库stopwords.txt,可以从GitHub上下载,也可以自己手动创建一个文件,并将常用的中文停用词写入其中。
接下来,我们需要读取txt文件中的文本内容,并进行去除停用词、分词和关键词提取。以下是完整的代码:
```python
import os
import jieba
from gensim import corpora, models
def read_file(filename):
"""
读取文件内容
"""
with open(filename, 'r', encoding='utf-8') as f:
content = f.read()
return content
def cut_words(content, stop_words):
"""
对文本内容进行去除停用词和分词
"""
words = jieba.cut(content)
result = []
for word in words:
if word not in stop_words:
result.append(word)
return result
def extract_keywords(words):
"""
提取文本关键词
"""
# 构建词向量
texts = [words]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
# 训练tf-idf模型
tfidf = models.TfidfModel(corpus)
# 提取关键词
keywords = tfidf[corpus][0]
return keywords
if __name__ == '__main__':
# 读取停用词表
with open('stopwords.txt', 'r', encoding='utf-8') as f:
stop_words = f.read().splitlines()
# 遍历txt文件
file_dir = './txt_files'
for root, dirs, files in os.walk(file_dir):
for file in files:
if file.endswith('.txt'):
filename = os.path.join(root, file)
# 读取文件内容
content = read_file(filename)
# 对文本内容进行去除停用词和分词
words = cut_words(content, stop_words)
# 提取文本关键词
keywords = extract_keywords(words)
# 打印结果
print('文件名:', file)
print('分词结果:', words)
print('关键词提取结果:', keywords)
```
在以上代码中,我们首先定义了三个函数:
- `read_file`:用于读取txt文件中的文本内容。
- `cut_words`:用于对文本内容进行去除停用词和分词。
- `extract_keywords`:用于提取文本关键词。
然后,我们读取停用词表,并遍历指定目录下的所有txt文件,并对每个文件进行去除停用词、分词和关键词提取,最后打印结果。
运行以上代码,即可批量对txt文件进行去除停用词、分词和关键词提取。
用python批量对txt文件进行去除停用词,分词和关键词提取的详细代码,可以直接运行。并把输出的结果放进excel
好的,以下是用Python批量对txt文件进行去除停用词,分词和关键词提取的详细代码,并将结果输出到Excel的步骤:
首先需要安装以下Python库:
- jieba(用于中文分词)
- openpyxl(用于操作Excel文件)
可以通过以下命令进行安装:
```
pip install jieba openpyxl
```
接下来是代码部分,注释已加入代码中,直接运行即可:
```python
import os
import jieba
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.styles import Font
# 停用词文件路径
stopwords_path = "stopwords.txt"
# 获取停用词列表
stopwords_list = []
with open(stopwords_path, "r", encoding="utf-8") as f:
for line in f:
stopwords_list.append(line.strip())
# 创建工作簿和工作表
workbook = openpyxl.Workbook()
worksheet = workbook.active
# 设置表头
worksheet["A1"] = "文件名"
worksheet["B1"] = "关键词"
# 设置表头样式
for col in range(1, 3):
cell = worksheet.cell(row=1, column=col)
cell.font = Font(name="宋体", size=12, bold=True)
cell.alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
# 获取所有txt文件
txt_files = [filename for filename in os.listdir() if filename.endswith(".txt")]
# 遍历所有txt文件
for index, filename in enumerate(txt_files):
# 读取文件内容
with open(filename, "r", encoding="utf-8") as f:
content = f.read()
# 分词并去除停用词
words = jieba.cut(content)
keywords = [word for word in words if word not in stopwords_list]
# 统计关键词出现次数
keywords_count = {}
for keyword in keywords:
if keyword in keywords_count:
keywords_count[keyword] += 1
else:
keywords_count[keyword] = 1
# 排序并取出出现次数最多的10个关键词
sorted_keywords = sorted(keywords_count.items(), key=lambda x: x[1], reverse=True)[:10]
sorted_keywords_str = " ".join([f"{keyword[0]}({keyword[1]})" for keyword in sorted_keywords])
# 将文件名和关键词写入Excel
worksheet.cell(row=index+2, column=1, value=filename)
worksheet.cell(row=index+2, column=2, value=sorted_keywords_str)
# 自适应列宽
for col in worksheet.columns:
max_length = 0
column = get_column_letter(col[0].column)
for cell in col:
try:
if len(str(cell.value)) > max_length:
max_length = len(str(cell.value))
except:
pass
adjusted_width = (max_length + 2)
worksheet.column_dimensions[column].width = adjusted_width
# 保存Excel文件
workbook.save("keywords.xlsx")
```
这段代码会在当前文件夹中读取所有以`.txt`结尾的文件,对每个文件进行分词、去除停用词、关键词提取,并将结果输出到一个名为`keywords.xlsx`的Excel文件中。其中,第一列为文件名,第二列为关键词及其出现次数。
需要注意的是,由于这段代码使用了中文分词,因此需要保证停用词文件和待处理的txt文件编码均为UTF-8。另外,由于分词的准确性和关键词提取的效果与具体的业务场景和语料库有关,因此需要根据实际情况进行调整。