将txt文本格式存储的词id表示的数据集存为matlab中的sparse格式
2017-05-06 17:53
435 查看
将txt文本格式存储的词id表示的数据集存为matlab中的sparse格式
在对文本数据进行聚类的时候,经常会处理超高维的稀疏矩阵。例如进行K-means聚类的时候,特别是短文本聚类,输入往往是M×N的超稀疏矩阵(M表示文档数量,N表示词典大小)。如果将所有数据(包括0)导入,将非常浪费内存资源。所以,在采用matlab使用超稀疏矩阵时,最好将该矩阵存为sparse格式。以下sparse_matrix.m以及str2numarray.m便是作以上处理的matlab代码:
sparse_matrix
输入符号说明:
path txt文件路径,文件存储为词id表示的数据集,一行为一篇文档,词用数值id表示
row 文档数量
col 词典大小,词id序号cong1开始
输出符号说明:
fea 词id表示的超稀疏矩阵
function [ fea ] = sparse_matrix( path, row, col ) fea = sparse(row, col); file = fopen(path); line = fgetl(file); count = 1; while ischar(line) array = str2numarray(line); for i = 1:length(array) fre = full(fea(count, i)); if fre == 0 fea(count, i) = 1; else fea(count, i) = 1 + fre; end end line = fgetl(file); count = count + 1; end fclose(file); end
str2numarray
输入符号说明:
line 一篇文档,字符串格式,其中词用数值id表示(id从1开始)
输出符号说明:
numarray 一篇文档,数值数组格式,对用输入
function [ numarray ] = str2numarray( line ) temp=''; numarray=[]; for i=1:1:length(line) if line(i)~=' ' temp=[temp,line(i)]; else if ~isempty(temp) numarray=[numarray,str2num(temp)]; temp=''; end end end if ~isempty(temp) numarray=[numarray,str2num(temp)]; end end
参考:
https://zhidao.baidu.com/question/520968496.html
https://zhidao.baidu.com/question/1755311557291409468.html
相关文章推荐
- matlab处理txt文本文件---数据格式要有规律性,否则要用编写特定方式进行读取
- MATLAB处理txt文本文件---数据格式要有规律性,否则要用编写特定方式进行读取
- Matlab将图片转换成asc码txt文本格式
- 使用poi做excel导出时解决以文本格式存储的数字问题
- [AHK]一键存储剪贴板文字为 txt 无格式粘贴
- matlab中图像的存储格式
- 用易语言写扫描全盘的txt格式文本、并删除
- SQLSERVER,不使用BCP,把查询结果输出为txt文本文件的存储过程
- 保存matlab的.mat文件为txt格式
- word存为txt文本、rtf格式的文件
- xp下新建文本文档编码格式预订为UTF-8 -- 解决简繁系统txt乱码问题
- 稀疏矩阵的存储格式(Sparse Matrix Storage Formats)
- 以制表符分隔的TXT文件转换成Supermemo可直接导入的文本格式的过程图解
- 使用sh_helptext可以查询存储过程或视图的文本格式,对它改动后还有更好的用法...
- 以制表符分隔的TXT文件转换成Supermemo可直接导入的文本格式的过程图解
- matlab中读取txt数据文件(txt文本文档)
- 存储多行文本格式的一点心得
- winform中将数据以文本的格式导出到excel中(以文本导出表示如果数据为0001则在excel中也显示为0001,而不被excel自动转换为1)
- 带格式存储的文本从数据库或xml中的输出
- HTML文本应当存储为UTF-8无BOM格式!