20180413学习笔记html
前天在对帖子的关键词抽取存储后,发现一个问题。我彷佛将每一个关键词都存到分离的cell中,这样在最后统计总词频的时候,比较很差处理。因而,上回的那种样式: python
是不行的,应该把它们放到同一列(行)中,组装成一个list或tuple再进行词频统计。正则表达式
wr2=load_workbook('t1.xlsx') cursheet=wr2.active #当前表单
已将前面的只有十个数据的"biao.xlsx"换成有300多条帖子的"biao2.xlsx"数组
L=[] for row in cursheet.rows: for cell in row: L.append(cell.value)
输出看看:app
未完机器学习
这样看总体效果不错。函数
利用Counter函数对L进行词频统计。学习
须要导入Counter from collections import Counter
spa
#新开一个xlsx文件,将词频统计结果写入 ww2=Workbook() sheet3 =ww2.active sheet3.title="statis" #Counter返回的的是一个dict LC=Counter(L)
输出看看:excel
#可是这样存储起来没法使用,因此须要排一下序,sorted返回的是一个二维list LC2=sorted(LC.items(),key=lambda d:d[1],reverse=True)
输出看看:
为了将二维数组中的每一个元素,分别存储在excel表格中的两列,须要将的元素拆开。因而我找到了Python3的相关文档:
https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
将其一层层分离:
#用n来计数,奇数存储(str,num)中的前面字符串,偶数存储后面的出现次数,感受这样作很蠢。。。可是暂时还不能像c那样熟练地使用 c1=1 for k in LC2: n=1 for v in k: if n%2==1: sheet3["A%d" % c1].value=v n=n+1 else: sheet3["B%d" % c1].value=v c1=c1+1 ww2.save('sta.xlsx')
咱们来看看效果吧:
那么整体是完成了。
很明显,虽然统计词频是完成了,可是感受效果通常。尤为是在记录词汇的时候,将一些无干的词一块儿统计进来了。好比莫名其妙的“http”,还有其余英文,多是爬下来的网友的名字之类的,在标注的时候过多的引用与其相关的帖子,致使出现频率太高。另外还有一些空白的符号,jieba为何会把这种空白符当成词,奇怪。。。
接下来的工做是对统计的词,进行处理分析。利用正则表达式,过滤出咱们所须要的中文词汇,再统计一次,应该就能够了。
剩下的就是机器学习的内容了。