Python 实现共现矩阵算法
来源:互联网 发布:淘宝网家纺四件套 编辑:程序博客网 时间:2024/06/05 08:59
用到的模块: xlrd
最后得到文件: txt
(全部复制txt 打开新表格粘贴即可得到xls文件)
开始写这个方法的目的是完成作业目标: 对表格里的关键词提取, 然后计算其共现次数, 生成共现矩阵:
由于所要计算的表格数据较大, 不利于写程序时候进行调试,所以应该先模拟一个小数据的表格, 用此来调试,调试好之后再换真正的数据: (模拟如下)
好了, 下面是我的代码: (相关注释和想法大都写在旁边的备注里了)
import xlrd#读入表格数据,返回形如['/././','././','/././','/././']格式的列表def readxls_bycol(path,colnum):# path=r'D:\Ditys\python learning\学习任务\第4次任务20170222\test.xlsx' #少了个r有时候会抽风出错!!!!# colnum=2 #从0开始计数!!所以,第三列的序号为2 xl = xlrd.open_workbook(path) table = xl.sheets()[0] data = list(table.col_values(colnum)) print(data) print('----------1---------') return data #处理表格数据, 返回无重复的所有出现过的关键词set def deal_data(data): data_list = [] data_set = set() for i in data: data_list.extend(i.split('/'))# data_list.sort() #!!!高亮, 升序排列?????? data_set=set(data_list) print(data_set) print('----------2---------') return data_set#根据set,可建立一个二维列表,并填充其其一行以及第一列, 返回建好框架的二维列表def creat_list_2d(data_set): i = len(data_set)+1 #list1=[['' for x in range(i)] for y in range(i)] list_2d = [[0 for col in range(i)] for row in range(i)] #建一个空二维列表的方法噢~ n=1 for row_1 in data_set: list_2d[0][n] = row_1 #填充第一行数据 n+=1 if n == i: break print(list_2d) m=1 print(data_set) for cols in data_set: #填充第一列数据 list_2d[m][0] = cols m += 1 if m == i: break print(list_2d) print('----------3---------') return list_2d#计算共现次数, 填充二维列表~ 返回填好的列表~ def count_data(list_2d,data,data_set): data_formted= [] for i in data: data_formted.append(i.split('/')) print(data_formted) print('----------4---------') for row in range(1,len(data_set)): for col in range(1,len(data_set)): if row == col: continue else: counter = 0 for i in data_formted: if list_2d[col][0] in i and list_2d[0][row] in i : counter += 1 list_2d[row][col] = counter print(list_2d) print('----------5---------') return list_2d#把矩阵写进txt~~~~def putdata_intotxt(path,matrix): with open(path,'w') as f : for row in range(0,len(matrix)): for col in range(0,len(matrix)):#二维列表中的每一个元素都走一遍 f.write(str(matrix[row][col]) + '\t') #因为write()只接字符串类型啊 f.write('\n')def main(): path_xls = r'test.xlsx' #---测试数据--- path_txt= r'共现矩阵.txt' #---测试数据---# path_xls = r'D:\Ditys\python learning\学习任务\第4次任务20170222\材料1.xlsx' #少了个r有时候会抽风出错!!!!# path_txt= r'D:\Ditys\python learning\学习任务\第4次任务20170222\关键词共现矩阵.txt' colnum = 2 data = readxls_bycol(path_xls,colnum) data_set = deal_data(data) list_2d = creat_list_2d(data_set) matrix = count_data(list_2d,data,data_set) print(matrix) putdata_intotxt(path_txt,matrix)if __name__=='__main__': main() print('你的文件夹多了一个共现矩阵的结果~快去看看吧XP')
0 0
- Python 实现共现矩阵算法
- 文献关键词共现矩阵python实现
- [转载]文献关键词共现矩阵python实现
- python构建关键词共现矩阵
- 使用MapReduce实现pairs算法实现单词的共现矩阵
- (转) 基于MapReduce的ItemBase推荐算法的共现矩阵实现(一)
- 基于MapReduce的ItemBase推荐算法的共现矩阵实现
- 灰度共现矩阵
- MapReduce算法设计-计算单词共现矩阵
- 使用python实现Strassen矩阵乘法算法
- 灰度共生(共现)矩阵的求法
- 灰度共生(共现)矩阵的求法
- OpenCV22(灰度共现矩阵/灰度共生矩阵)
- 【机器学习算法-python实现】矩阵去噪以及归一化
- Python实现矩阵相乘
- python 实现矩阵相乘
- 灰度矩阵算法实现
- 矩阵基础算法实现
- 控制器跳转和视图切换之NavigationController,UITabBarController,模态
- Gym100548H
- JavaScript深入之从原型到原型链
- excel文本提取
- -bash: pod: command not found
- Python 实现共现矩阵算法
- linux 安装g++等工具
- 递归如何转换为非递归
- Code::Blocks error: range-based 'for' loops are not allowed in C++98 mode
- C的隐式类型转换
- 方立勋_30天掌握JavaWeb_国际化开发
- 一个由C/C++编译的程序占用的内存分几个部分
- malloc/free与new/delete的区别
- HDU 3487 Play with Chain