解释代码def getStopList(): # 获取停用词表,这里给出的是网易云常用的部分停用词,也可以从本地读取文件 stopList = ['不要', '个人', '这里', '有些', '完全', '头像', '搜索', '还是', '那里', '看到', '不到', '回复', '歌手', '虽然', '网易云', '怎么', '曲子', '这首', '歌单', '不过',
时间: 2023-08-20 11:42:19 浏览: 68
这段代码定义了一个名为 `getStopList` 的函数,用于获取停用词表。在函数内部,定义了一个包含常用停用词的列表 `stopList`。这些停用词是从网易云音乐中提取的,但也可以从本地文件中读取。停用词是指在文本分析中被过滤掉的常用词汇,因为它们通常不包含有用的信息,或者会干扰文本分析的结果。
相关问题
def countWords(self, df): # 读取停用词表 stopwords_file = open('stopwords.txt', 'r', encoding='utf-8') stopwords = set(stopwords_file.read().splitlines()) stopwords_file.close() # 对评论内容进行中文分词 df = df['评论内容'].str.replace(r'\[.*?\]', '').apply(jieba.lcut) lst = [x for y in df.tolist() for x in y if len(x) >= 2 and x not in stopwords] # 统计词频 counts = Counter(lst) for i, word in enumerate(counts.most_common(30)): print('排名:{},词汇:{},频数:{}' . format(i + 1, word[0], word[1])) # 绘制词云 wc = WordCloud(width=1000, height=700, font_path="simhei.ttf", max_words=30,background_color="white") wc.generate_from_frequencies(counts) plt.axis('off') plt.imshow(wc) plt.savefig('词云图.png', dpi=300) plt.show()
这段代码定义了一个 `countWords` 方法,用于对评论内容进行分词,并统计词频并绘制词云图。该方法接受一个参数 `df`,表示需要处理的数据。
该方法首先读取停用词表,并对评论内容进行中文分词,去除停用词后统计词频。然后,使用 `most_common` 函数获取出现频率最高的前 30 个词汇,并将结果打印出来。接着,使用 `WordCloud` 类生成词云图,并将其保存为图片文件。最后,使用 `imshow` 函数显示词云图。
批量读取文件夹里的txt文件,根据停用词词表以及词表使用最大逆向算法进行分词,词表说明了哪些字的组合可以被算作一个词,停用词表说明哪些没有实意的词可以去掉,其中词表和停用词表均为excel文件,将分词结果以同名文件储存在另一个文件夹里
好的,这里提供一个修改版的代码,用于读取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` 改为实际的词典和停用词表文件名。
阅读全文