对txt文件使用stoplist.txt去除停用词,且进行中文分词精确模式处理,保存结果文件。最后提取关键词及其频率。
时间: 2024-05-09 12:20:46 浏览: 244
以下是Python代码实现:
```python
import jieba
import jieba.analyse
# 读取停用词表
with open('stoplist.txt', 'r', encoding='utf-8') as f:
stoplist = set([line.strip() for line in f])
# 读取待处理文件
with open('input.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 中文分词,精确模式,去除停用词
words = [word for word in jieba.cut(text, cut_all=False) if word not in stoplist]
# 保存结果文件
with open('output.txt', 'w', encoding='utf-8') as f:
f.write(' '.join(words))
# 提取关键词及其频率
keywords = jieba.analyse.extract_tags(text, topK=10, withWeight=True)
# 输出关键词及其频率
for keyword, weight in keywords:
print(keyword, weight)
```
其中,stoplist.txt为停用词表文件,input.txt为待处理文件,output.txt为处理结果文件。关键词及其频率默认输出前10个,可根据需要进行调整。
相关问题
for i in range(len(item)): #遍历列表中所有的字典 txt,count = item[i] stoplist.append(txt)
这段代码中,假设 `item` 是一个列表,其中存储了多个字典。每个字典中都有一个名为 `txt` 的键,对应着一个字符串,以及一个名为 `count` 的键,对应着一个整数。代码的作用是将列表中所有字典的 `txt` 值提取出来,放入名为 `stoplist` 的列表中。
具体地,代码使用了 `range()` 函数和 `len()` 函数来生成一个从 0 到 `len(item)-1` 的整数序列,然后使用 `for` 循环遍历该序列。在循环体中,代码通过下标 `i` 访问列表 `item` 中的第 `i` 个元素,即一个字典,然后使用字典的索引操作 `txt = item[i]['txt']` 来获取该字典中键为 `txt` 的值。同理,使用 `count = item[i]['count']` 来获取键为 `count` 的值。最后,将 `txt` 加入到 `stoplist` 列表中。
对txt文件使用stoplist.txt去除停用词,且进行中文分词精确模式处理,保存结果文件。最后提取关键词及其出现次数、频率。,并保存为xlsx文件
以下是Python代码实现:
```python
import jieba
import openpyxl
# 读取停用词表
stop_words = set()
with open('stoplist.txt', 'r', encoding='utf-8') as f:
for line in f:
stop_words.add(line.strip())
# 读取原始文本文件
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 中文分词,去除停用词
words = list(jieba.cut(text))
words = [word for word in words if word not in stop_words]
# 统计关键词出现次数
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 计算关键词频率
total_words = len(words)
for word in word_count:
word_count[word] = {'count': word_count[word], 'frequency': word_count[word] / total_words}
# 排序,提取前50个关键词
sorted_word_count = sorted(word_count.items(), key=lambda x: x[1]['count'], reverse=True)[:50]
# 保存结果到xlsx文件
wb = openpyxl.Workbook()
ws = wb.active
ws.title = 'Keywords'
ws['A1'] = '关键词'
ws['B1'] = '出现次数'
ws['C1'] = '频率'
for row, (word, count) in enumerate(sorted_word_count, start=2):
ws.cell(row=row, column=1, value=word)
ws.cell(row=row, column=2, value=count['count'])
ws.cell(row=row, column=3, value=count['frequency'])
wb.save('keywords.xlsx')
```
上述代码中,首先读取停用词表stoplist.txt,并使用set()函数将其转换为集合,方便后续快速判断一个单词是否为停用词。然后,读取原始文本文件text.txt,使用jieba库对中文文本进行分词,得到分词后的单词列表words。接着,使用列表推导式将words中的停用词去除。然后,使用字典word_count统计每个单词出现的次数,并计算单词出现的频率。最后,使用sorted()函数将word_count按照出现次数从大到小排序,并取前50个关键词。最后,将关键词、出现次数和频率保存到xlsx文件中。
阅读全文