赞
踩
1.废话不多说,直接上代码
- # jieba库是用来分词的库
- import jieba
- import jieba.analyse
- # 是用来进行计算机系统操作的库
- import io
- import os
- import os.path
- import csv
- from string import punctuation
- # 正则表达式库
- import re
- import sys
- # 处理汉字的中文文字库
- from zhon.hanzi import punctuation
- # ANSI转UTF-8
- import codecs
-
- # sys.stdout = io.TextIOWrapper(sys.stdout,encoding='utf8') #改变标准输出的默认编码
-
- # 这里放着你要操作的文件夹名称
- root_path = '我是测试文件'
- # 用来存储统计好之后词频文件存放的位置
- csv_root = "评论介绍"
-
- # 目录下的文件名全部获取保存在files中
- files = os.listdir(root_path)
- # 创建文件夹,用来存储统计之后的词频,放到csv文件里面
- if not os.path.exists(csv_root):
- # 创建文件夹
- os.mkdir(csv_root)
-
-
- # 创建用来统计词频的csv文件
- def csv_create(name):
- full_path = csv_root + "/" + name + '.csv'
- # 创建文件,已写入的方式打开,但是不写,创建完毕之后就关闭文件
- file = open(full_path, 'w')
- # 关闭文件
- file.close()
- # 返回csv文件的路径,获取文件路径以便写入
- return full_path
-
-
-
-
- # 将文件夹中所有文件名字进行读取
- for file in files:
- # 准确获取一个txt的位置,利用字符串的拼接
- file_path = root_path + "/" + file
- # 打开相应的txt文件
- text = open(file_path, "r", encoding='utf-8').read()
- #text = open(file_path, "r", encoding='ANSI').read()
- # 去掉中文标点
- text = re.sub("[{}]+".format(punctuation), "", text)
-
- dicti = open("dict.txt", "r", encoding='utf-8').read()
-
- jieba.load_userdict(r"dict.txt")
- #jieba.load_userdict("dict.txt", "r", encoding="ANSI")
- # 读取停止词
- fourStopwords = open("fourStopwords.txt", "r", encoding='utf-8').read()
- stopwords = fourStopwords.split("\n")
- #stopwords = '我'
- print(stopwords)
- #stopwords = set(sum(open("fourStopwords.txt", "r", encoding='utf-8').read(), [ ]))
- #stopwords = set(sum(f.readtxt('fourStopwords.txt'), []))
- #jieba.add_word("表柔比星")
- # 使用jieba进行分词,精确模式,返回列表
- words = jieba.lcut(text)
- # print(words)
- # cut_stop_data = [word for word in words if word not in stopwords]
- # print(cut_stop_data)
- k = []
- for each in words:
- k.append(each)
-
- cut_stop_data = [word for word in k if word not in stopwords]
- print(cut_stop_data)
- counts = {}
- # 创建对应文章的csv文件
- csv_path = csv_create(file)
- out = open(csv_path, 'a', encoding='ANSI')
- #out = open(csv_path, 'a', encoding='ANSI')
- # 设定写入模式
- csv_write = csv.writer(out, dialect='excel')
- # 将文章的词汇进行分词
- #for word in words:
- for word in cut_stop_data:
- counts[word] = counts.get(word, 0) + 1
- # items转list类型
- items = list(counts.items())
- # 应该是按照出现的频率进行排序功能,后期再查
- items.sort(key=lambda x: x[1], reverse=True)
- # 开始写入csv文件
- # for i in range(0, len(words) - word_str - 100):
- for i in range(len(items) - 1):
- word, count = items[i]
- # csv写入具体内容
- _str = word, count
- csv_write.writerow(_str)
2.文件目录展示
说明:测试文件中的txt文件格式应该为UTF-8,因为直接新建txt文件的时候,默认为ANSI格式。大家做的时候有两种办法可跑通程序:
①打开txt文件,点击左上角“文件”,点击“另存为”,在如下图所示的地方进行编码格式的修改,最终保存即可。
②在Python文件中做一遍文件编码的校验,若检测不为UTF-8的话,转换为UTF-8也行。
3.目录关键文件介绍
“我是测试文件”中是需要进行分词,去stopwords的文件
“评论介绍”中是最终得到的结果(提示:对于csv和excel只能在一个地方打开,若在系统外部打开了文件,在系统中可能就没有权限写入)
“dict.txt”是自定义的词典(自己加的)
“fourStopwords.txt”里面综合四个国际上的标准停用词:
中文停用词表
哈工大停用词表
百度停用词表
四川大学机器智能实验室停用词库
4.本项目的依赖pip
pip install jieba
pip install zhon
5.可以运行啦
2023.6.7新增:stopwords链接
链接: https://pan.baidu.com/s/1HoS1WbuxzlkZcX1lgacQAQ?pwd=m8kn 提取码: m8kn
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。