鱼C论坛

 找回密码
 立即注册
查看: 1476|回复: 3

去除停用词的词频分析代码的编码错误

[复制链接]
发表于 2018-5-5 22:32:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 helloTOM 于 2018-5-6 14:39 编辑
  1. import codecs as cs
  2. import jieba as jb      
  3. import pandas as pd


  4. f = cs.open("3k.txt","rb")
  5. lines = f.readlines()
  6. f.close()
  7. data = []
  8. dic ={}
  9. for each in lines:
  10.         bad = jb.cut_for_search(each)
  11.         data.append(bad)

  12. for eachline in data:
  13.         for eachword in eachline:
  14.                 if eachword in dic:
  15.                         dic[eachword] += 1
  16.                 else:
  17.                         dic[eachword] = 1
  18. sorteddic = sorted(dic.items(),key=lambda x:x[1],reverse=True)

  19. 这一段代码没有问题(代码是本站大神写的)
  20. 得出的词频里有不少无用的语气词和标点符号
  21. 我就想用停用词除去这些没用的数据 但是报编码错误。。不知道怎么处理{:5_100:} {:5_100:}



  22. words_df=pd.DataFrame({"sorteddic":sorteddic})
  23. stopwords=pd.read_csv("stopwords.txt",index_col=False,quoting=3,sep="\t",names=["stopword"],encoding="utf-8")
  24. words_df=words_df[~words_df.sorteddic.isin(stopwords.stopword)]
  25. print(words_df)
复制代码


报错为:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-5-30 21:08:23 | 显示全部楼层
我试了一下,这个错误是因为stopwords.txt的编码方式不对,把stopwords.txt另存为UTF8编码格式就可以用啦。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-30 21:10:48 | 显示全部楼层
可是结果看不懂呀,能解释一下吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-31 12:53:05 | 显示全部楼层
水忆微凉 发表于 2018-5-30 21:10
可是结果看不懂呀,能解释一下吗?

第一段是使用结巴模块进行词频分析
第二段是把词频里的停用词去了
应该是这样。。我从网上找的代码。。。拼接上去的。。。(我也有点晕,网上的资料太水了。。。。)

另外改成UTF-8就可以了吗? 它的报错信息不应该是UTF-8不能解码什么的吗????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-26 14:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表