批量读取文件夹里的txt文件,根据停用词词表以及词表使用最大逆向算法进行分词,词表说明了哪些字的组合可以被算作一个词,停用词表说明哪些没有实意的词可以去掉,其中词表和停用词表均为excel文件,将分词结果以同名文件储存在另一个文件夹里
时间: 2024-03-16 15:46:36 浏览: 106
好的,这里提供一个修改版的代码,用于读取Excel文件中的词表和停用词表,并使用jieba分词库进行分词。
```python
import os
import jieba
import pandas as pd
# 读取词表和停用词表
def read_excel(filename):
df = pd.read_excel(filename, header=None)
words = set(df[0].tolist())
return words
userdict = read_excel('userdict.xlsx')
stopwords = read_excel('stopwords.xlsx')
# 加载自定义词典和停用词表
for word in userdict:
jieba.add_word(word)
stopwords = stopwords.union(set(jieba.get_stop_words()))
# 最大逆向匹配算法
def cut(string):
seg_list = []
max_len = 5 # 词的最大长度
while string:
word = None
for i in range(max_len, 0, -1):
if len(string) >= i and string[-i:] not in stopwords:
word = string[-i:]
seg_list.append(word)
string = string[:-i]
break
if word is None:
seg_list.append(string[-1])
string = string[:-1]
return seg_list[::-1]
# 遍历文件夹,处理每个txt文件
input_folder = 'input_folder'
output_folder = 'output_folder'
for filename in os.listdir(input_folder):
if filename.endswith('.txt'):
# 读取文件内容
with open(os.path.join(input_folder, filename), 'r', encoding='utf-8') as f:
content = f.read().strip()
# 分词
seg_list = jieba.cut(content)
seg_list = [seg.strip() for seg in seg_list if seg.strip() not in stopwords]
# 写入文件
with open(os.path.join(output_folder, filename), 'w', encoding='utf-8') as f:
f.write(' '.join(seg_list))
```
这段代码中使用了pandas库来读取Excel文件中的词表和停用词表。首先定义了一个 `read_excel` 函数,用于读取Excel文件中的内容,并将其转换为集合。然后加载自定义词典和停用词表,使用jieba分词库进行分词并去掉停用词,最后将分词结果写入同名文件中。请注意在使用前将 `input_folder` 和 `output_folder` 改为实际的文件夹路径,并将 `userdict.xlsx` 和 `stopwords.xlsx` 改为实际的词典和停用词表文件名。
阅读全文