利用jieba进行中文分词,利用stopwords删除无意义的停止词,文件的读写(需要stopwords的可关注后私信我)

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

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值