当前位置:   article > 正文

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

jieba stopwords

1.废话不多说,直接上代码

  1. # jieba库是用来分词的库
  2. import jieba
  3. import jieba.analyse
  4. # 是用来进行计算机系统操作的库
  5. import io
  6. import os
  7. import os.path
  8. import csv
  9. from string import punctuation
  10. # 正则表达式库
  11. import re
  12. import sys
  13. # 处理汉字的中文文字库
  14. from zhon.hanzi import punctuation
  15. # ANSI转UTF-8
  16. import codecs
  17. # sys.stdout = io.TextIOWrapper(sys.stdout,encoding='utf8') #改变标准输出的默认编码
  18. # 这里放着你要操作的文件夹名称
  19. root_path = '我是测试文件'
  20. # 用来存储统计好之后词频文件存放的位置
  21. csv_root = "评论介绍"
  22. # 目录下的文件名全部获取保存在files中
  23. files = os.listdir(root_path)
  24. # 创建文件夹,用来存储统计之后的词频,放到csv文件里面
  25. if not os.path.exists(csv_root):
  26. # 创建文件夹
  27. os.mkdir(csv_root)
  28. # 创建用来统计词频的csv文件
  29. def csv_create(name):
  30. full_path = csv_root + "/" + name + '.csv'
  31. # 创建文件,已写入的方式打开,但是不写,创建完毕之后就关闭文件
  32. file = open(full_path, 'w')
  33. # 关闭文件
  34. file.close()
  35. # 返回csv文件的路径,获取文件路径以便写入
  36. return full_path
  37. # 将文件夹中所有文件名字进行读取
  38. for file in files:
  39. # 准确获取一个txt的位置,利用字符串的拼接
  40. file_path = root_path + "/" + file
  41. # 打开相应的txt文件
  42. text = open(file_path, "r", encoding='utf-8').read()
  43. #text = open(file_path, "r", encoding='ANSI').read()
  44. # 去掉中文标点
  45. text = re.sub("[{}]+".format(punctuation), "", text)
  46. dicti = open("dict.txt", "r", encoding='utf-8').read()
  47. jieba.load_userdict(r"dict.txt")
  48. #jieba.load_userdict("dict.txt", "r", encoding="ANSI")
  49. # 读取停止词
  50. fourStopwords = open("fourStopwords.txt", "r", encoding='utf-8').read()
  51. stopwords = fourStopwords.split("\n")
  52. #stopwords = '我'
  53. print(stopwords)
  54. #stopwords = set(sum(open("fourStopwords.txt", "r", encoding='utf-8').read(), [ ]))
  55. #stopwords = set(sum(f.readtxt('fourStopwords.txt'), []))
  56. #jieba.add_word("表柔比星")
  57. # 使用jieba进行分词,精确模式,返回列表
  58. words = jieba.lcut(text)
  59. # print(words)
  60. # cut_stop_data = [word for word in words if word not in stopwords]
  61. # print(cut_stop_data)
  62. k = []
  63. for each in words:
  64. k.append(each)
  65. cut_stop_data = [word for word in k if word not in stopwords]
  66. print(cut_stop_data)
  67. counts = {}
  68. # 创建对应文章的csv文件
  69. csv_path = csv_create(file)
  70. out = open(csv_path, 'a', encoding='ANSI')
  71. #out = open(csv_path, 'a', encoding='ANSI')
  72. # 设定写入模式
  73. csv_write = csv.writer(out, dialect='excel')
  74. # 将文章的词汇进行分词
  75. #for word in words:
  76. for word in cut_stop_data:
  77. counts[word] = counts.get(word, 0) + 1
  78. # items转list类型
  79. items = list(counts.items())
  80. # 应该是按照出现的频率进行排序功能,后期再查
  81. items.sort(key=lambda x: x[1], reverse=True)
  82. # 开始写入csv文件
  83. # for i in range(0, len(words) - word_str - 100):
  84. for i in range(len(items) - 1):
  85. word, count = items[i]
  86. # csv写入具体内容
  87. _str = word, count
  88. 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/622074
推荐阅读
相关标签
  

闽ICP备14008679号