今天用python做词频分析的时候,突然发现之前写好并可以运行的程序无法运行了。根据排除法,肯定不是程序的问题,只能一个一个排查下去。
首先,排除了分析文本无法读取的问题,下面的代码可以正常运行:
f = open("h:\\test.txt","r",encoding='UTF-8') # 以追加的方式
message = f.readlines()
然后,再排除过滤分词的问题,如下代码也可以正常运行:
item = line.strip('\n\r').split('\t')
最后,发现报错的语句是数组溢出,应该与后面这句有关系:
if '-' not in str(item[0]):
jieba.analyse.set_stop_words('h:\\stopWord.txt') #停用词
allow_pos = ('n','nr','ns')
tags = jieba.analyse.extract_tags(item[0],topK=10,withWeight=False,allowPOS=allow_pos)
# print(tags)
发现print(tags)这句没有执行,回过头来,逐个注释,发现下面这句注释以后正常了!
jieba.analyse.set_stop_words('h:\\stopWord.txt') #停用词
估计问题应该出在stopWord.txt,用notepad++打开是正常的,但是用spyder打开,发现内容是乱码,难怪无法分词!
解决方案:将stopWord.txt转成UTF8格式,问题解决!
反思:类似语言处理的程序,对于编码格式尤其要小心,不确定的情况下,首先将所有需要读取的文件都转成UTF8格式,才能不发生这种低级错误