本發(fā)明涉及計算機系統(tǒng)數(shù)據(jù)分析領(lǐng)域,具體地說是一種報表數(shù)據(jù)的圖形化展示方法。
背景技術(shù):
在當(dāng)前一些公關(guān)部門、信訪部門或者是一些學(xué)校及公司,經(jīng)常會需要審閱大量的文檔,從文檔中獲得具體信息,了解提交材料人群對相關(guān)問題的關(guān)注點及重點意見建議。
審閱文檔的過程需要耗費大量的人力和時間,因此產(chǎn)生了類似需求,如何能夠通過計算機自動解析出文檔中出現(xiàn)頻率較高的詞語或者通過用戶自定義詞語的方式在定義范圍內(nèi)查找詞語或者將上述兩種方式融合使用,將用戶自定義的詞匯加入高發(fā)詞庫中是目前現(xiàn)有技術(shù)中存在的技術(shù)問題。
專利號為CN 104317943 A的專利文獻(xiàn)公開了一種考核系統(tǒng)的圖形化報表展示方法及系統(tǒng),所述方法包括:步驟1,提取考核數(shù)據(jù),并將考核數(shù)據(jù)以表結(jié)構(gòu)的形式進(jìn)行存儲;步驟2,從存儲考核數(shù)據(jù)的表結(jié)構(gòu)中查詢出需進(jìn)行圖形化報表展示的數(shù)據(jù),并將查詢得到的數(shù)據(jù)封裝成XML格式的數(shù)據(jù);步驟3,在JPS頁面設(shè)置圖形化報表樣式,選擇一種圖形化報表樣式,并調(diào)用FusionCharts插件將XML格式的數(shù)據(jù)解析生成為報表,并在JPS頁面展示生成的報表。但是該技術(shù)方案存在操作復(fù)雜,使用范圍小等缺點。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種報表數(shù)據(jù)的圖形化展示方法,來解決如何能夠通過計算機自動解析出文檔中出現(xiàn)頻率較高的詞語或者通過用戶自定義詞語的方式在定義范圍內(nèi)查找詞語或者將上述兩種方式融合使用,將用戶自定義的詞匯加入高發(fā)詞庫中的問題。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種報表數(shù)據(jù)的圖形化展示方法,該方法包括如下步驟:
(1)、讀取excel或者文檔文件:通過用戶指定路徑的方式獲取本地excel或者文檔轉(zhuǎn)存到內(nèi)存中或者通過用戶導(dǎo)入的方式獲取導(dǎo)入的excel或者文檔轉(zhuǎn)存到內(nèi)存中;
(2)、獲取excel或文檔文件中的表轉(zhuǎn)換為json數(shù)據(jù):解析內(nèi)存中的excel或者文檔對象獲取workbook對象,獲取表格后解析指定區(qū)域內(nèi)的有效數(shù)據(jù)信息,并將有效數(shù)據(jù)信息轉(zhuǎn)化為json格式數(shù)據(jù);
(3)、分詞和基于TF-IDF算法的關(guān)鍵詞抽?。簩⒁延械挠行?shù)據(jù)信息做分詞操作,返回指定個數(shù)的 TF-IDF 權(quán)重最大的關(guān)鍵詞;TF-IDF(term frequency–inverse document frequency)是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù)。
(4)、調(diào)整詞語序列;
(5)、在excel或文檔指定data中設(shè)置數(shù)據(jù)變量,形成高低分解模式,基于高低分解模式展示圖表。
作為優(yōu)選,所述步驟(1)中采用javastript中read方式獲取文件,而非通常所使用的流處理方式。JavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能。
作為優(yōu)選,所述步驟(1)中采用對象方式存儲文件。
作為優(yōu)選,所述步驟(3)中提起關(guān)鍵詞使用逆向文件頻率(IDF)文本語料庫或自定義文本庫。
更優(yōu)地,所述自定義文本庫是指自己自定義的詞典,包含詞庫中未包含的詞,雖然有新詞識別能力,但是自行添加新詞可以保證更高的正確率。
作為優(yōu)選,所述步驟(5)中圖表展示還可以采用html和flash格式。
作為優(yōu)選,該方法使用過程中還包括如下步驟:
①、加載工作表并解析;
②、加載數(shù)據(jù)并啟動服務(wù)。
本發(fā)明的報表數(shù)據(jù)的圖形化展示方法和現(xiàn)有技術(shù)相比,具有以下有益效果:
1、本發(fā)明是通過解析用戶導(dǎo)入或者系統(tǒng)自動生成的excel或者其他日志或報告文檔,獲取excel或者文檔中的指定位置的文字信息,同時按照字符分解文檔中的文字信息,分解之后再通過文字規(guī)則按照中文詞組的編碼方式重新排列,排列之后的詞組根據(jù)用戶指定的格式形成報表;
2、本發(fā)明允許用戶通過文檔方式加載數(shù)據(jù)到當(dāng)前功能中,通過解析文件、分詞及歸類等方式,最終由html的數(shù)據(jù)報表形式展現(xiàn)出來,用戶可以很直觀的看到詞匯出現(xiàn)的頻率,按照指定方式展現(xiàn)。
故本發(fā)明具有設(shè)計合理、結(jié)構(gòu)簡單、使用方便、一物多用等特點,因而,具有很好的推廣使用價值。
附圖說明
下面結(jié)合附圖對本發(fā)明進(jìn)一步說明。
附圖1為報表數(shù)據(jù)的圖形化展示方法的流程圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步說明。
如附圖1所示,本發(fā)明的報表數(shù)據(jù)的圖形化展示方法,該方法包括如下步驟:
(1)、讀取excel或者文檔文件:通過用戶指定路徑的方式獲取本地excel或者文檔轉(zhuǎn)存到內(nèi)存中或者通過用戶導(dǎo)入的方式獲取導(dǎo)入的excel或者文檔轉(zhuǎn)存到內(nèi)存中;該步驟采用javastript中read方式獲取文件,而非通常所使用的流處理方式并采用對象方式存儲文件;
(2)、獲取excel或文檔文件中的表轉(zhuǎn)換為json數(shù)據(jù):解析內(nèi)存中的excel或者文檔對象獲取workbook對象,獲取表格后解析指定區(qū)域內(nèi)的有效數(shù)據(jù)信息,并將有效數(shù)據(jù)信息轉(zhuǎn)化為json格式數(shù)據(jù);具體事例如下:
var sheetNames = workbook.SheetNames;// 返回表名
// 根據(jù)表名獲取對應(yīng)某張表
var worksheet = workbook.Sheets[sheetNames[0]];
通過 worksheet[address] 來操作表格
// 獲取 A1 單元格對象
let a1 = worksheet['A1'];// 返回 { v: 'hello', t: 's', ... }
// 獲取 A1 中的值
a1.v // 返回 'hello'
// 獲取表的有效范圍
worksheet['!ref'] // 返回 'A1:B20'
worksheet['!range'] // 返回 range 對象,{ s: { r: 0, c: 0}, e: { r: 100, c: 2 } }
// 獲取合并過的單元格
worksheet['!merges'] // 返回一個包含 range 對象的列表,[ {s: { r: 0, c: 0 }, c: { r: 2, c: 1 } } ]
utils.sheet_to_json(worksheet) //針對單個表,返回序列化json數(shù)據(jù)。
(3)、分詞和基于TF-IDF算法的關(guān)鍵詞抽取:將已有的有效數(shù)據(jù)信息做分詞操作,返回指定個數(shù)的 TF-IDF 權(quán)重最大的關(guān)鍵詞;提起關(guān)鍵詞使用逆向文件頻率(IDF)文本語料庫或自定義文本庫,自定義文本庫是指自己自定義的詞典,包含詞庫中未包含的詞,雖然有新詞識別能力,但是自行添加新詞可以保證更高的正確率。
需要分詞的字符串;cut_all 參數(shù)用來控制是否采用全模式;HMM 參數(shù)用來控制是否使用 HMM 模型。
待分詞的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建議直接輸入 GBK 字符串,可能無法預(yù)料地錯誤解碼成 UTF-8。
返回的結(jié)構(gòu)都是一個可迭代的 generator,可以使用 for 循環(huán)來獲得分詞后得到的每一個詞語(unicode)。
其中,基于TF-IDF算法的關(guān)鍵詞抽取,具體事例如下:
USAGE = "usage: python extract_tags.py [file name] -k [top k]"
parser = OptionParser(USAGE)
parser.add_option("-k", dest="topK")
opt, args = parser.parse_args()
if len(args) < 1:
print(USAGE)
sys.exit(1)
file_name = args[0]
if opt.topK is None:
topK = 10
else:
topK = int(opt.topK)
content = open(file_name, 'rb').read()
tags = jieba.analyse.extract_tags(content, topK=topK)
print(",".join(tags))
(4)、調(diào)整詞語序列;
(5)、在excel或文檔指定data中設(shè)置數(shù)據(jù)變量,形成高低分解模式,基于高低分解模式展示圖表,圖表展示還可以采用html和flash格式。
該方法使用過程中還包括如下步驟:
①、加載工作表并解析,具體事例如下:
app.get('/', function (req, res) {
var obj = xlsx.parse('jfls.xlsx');
//第一個工作表的數(shù)據(jù)
var data = obj[0].data;
var results = data.map(function(item) {
if (item[2]) {
return node.cut(item[2]);
}else {
return [];
}
});
var sumResult = [];
for (var i = 0; i < results.length; i++) {
for (var j = 0; j < results[i].length;j++) {
sumResult = sumResult.concat(results[i][j]);
}
}
// console.log(result);
res.send(JSON.stringify(sumResult));
});
app.use(express.static('public'));
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
})。
②、加載數(shù)據(jù)并啟動服務(wù),具體事例如下:
function createRandomItemStyle() {
return {
normal: {
color: 'rgb(' + [
Math.round(Math.random() * 160),
Math.round(Math.random() * 160),
Math.round(Math.random() * 160)
].join(',') + ')'
}
};
}
function generateWordCloud(data) {
var mergedData = mergeData(data);
console.log(mergedData);
var option = {
title: {
text: '自定義標(biāo)簽',
link: ' '
},
tooltip: {
show: true
},
series: [{
name: 'Google Trends',
type: 'wordCloud',
size: ['100%', '100%'],
textRotation : [0, 45, -45],
textPadding: 0,
autoSize: {
enable: true,
minSize: 14
},
data: mergedData
}]
};
var my = e.init(document.getElementById('test'));
my.setOption(option);
}
function mergeData(data) {
var result = {};
data.forEach(function(item) {
if (result.hasOwnProperty(item)) {
result[item] = result[item] + 1;
}else {
result[item] = 1;
}
});
var optionData = [];
for (var key in result) {
if (key !== ',' && key.length >= 2 && result[key] > 3) {
optionData.push({
name: key,
value: result[key],
itemStyle: createRandomItemStyle()
});
}
}
return optionData;
}
$.ajax({
type: 'GET',
url: 'http://localhost:3000/',
dataType: 'JSON',
data: {},
success: generateWordCloud
})。
通過上面具體實施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的一種具體實施方式。在公開的實施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實現(xiàn)不同的技術(shù)方案。
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。