本發(fā)明屬于數(shù)據(jù)可視化、程序可視化以及人機(jī)交互的,具體涉及一種基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法。
背景技術(shù):
1、在大數(shù)據(jù)時(shí)代,每天都會產(chǎn)生海量的數(shù)據(jù)。這些原始數(shù)據(jù)通常格式雜亂無章,數(shù)據(jù)內(nèi)容混亂,需要經(jīng)過轉(zhuǎn)換和清洗,以滿足諸如可視化分析、機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘等下游任務(wù)的需求。數(shù)據(jù)整理是將數(shù)據(jù)轉(zhuǎn)換為下游任務(wù)預(yù)期格式和內(nèi)容的過程,用戶常需要根據(jù)任務(wù)需求對原始數(shù)據(jù)進(jìn)行數(shù)據(jù)整理任務(wù)。數(shù)據(jù)工作者通常通過編寫腳本來完成數(shù)據(jù)整理任務(wù)。常用的腳本語言包括python和r,配合相應(yīng)的函數(shù)庫,如pandas和tidyverse。
2、數(shù)據(jù)工作者為了提升完成數(shù)據(jù)整理任務(wù)的效率,通常會復(fù)用已有的數(shù)據(jù)整理腳本。這些數(shù)據(jù)整理腳本可能來源于自己過去編寫的,或是從代碼倉庫或技術(shù)博客中獲取他人編寫的腳本。此外,現(xiàn)有的不少數(shù)據(jù)工作者會選擇將自己的需求提供給大語言模型,讓其生成相應(yīng)的數(shù)據(jù)整理腳本。在復(fù)用腳本之前,數(shù)據(jù)工作者首先需要理解所選用的腳本,判斷其是否能處理當(dāng)前需要整理的數(shù)據(jù),以及腳本的輸出能否滿足下游任務(wù)的需求。
3、盡管部分?jǐn)?shù)據(jù)整理腳本在代碼倉庫或技術(shù)博客中附有少量可執(zhí)行數(shù)據(jù),即使是同一領(lǐng)域、類似任務(wù)的腳本,也難以保證當(dāng)前腳本能適用于新數(shù)據(jù)。這是因?yàn)槊糠輸?shù)據(jù)可能都有獨(dú)特的問題,而數(shù)據(jù)工作者在編寫腳本時(shí)通常只考慮了單一數(shù)據(jù)或樣本數(shù)據(jù)中的特定問題,難以全面覆蓋所有可能出現(xiàn)的問題。對于沒有可執(zhí)行數(shù)據(jù)的腳本,例如由于隱私問題導(dǎo)致無法在網(wǎng)絡(luò)中上傳分享數(shù)據(jù),或是由大語言模型生成的腳本,用戶需要逐行閱讀腳本,理解其數(shù)據(jù)轉(zhuǎn)換操作,并構(gòu)建相應(yīng)的輸入與輸出。這一過程要求用戶對腳本的邏輯和轉(zhuǎn)換操作有深入的了解,以確保數(shù)據(jù)整理的準(zhǔn)確性和有效性。
4、現(xiàn)有幫助用戶理解數(shù)據(jù)整理腳本的方法主要分為兩類:一是通過提供數(shù)據(jù)整理腳本的輸入與輸出的統(tǒng)計(jì)信息,或是執(zhí)行情況,幫助數(shù)據(jù)工作者調(diào)試腳本;二是通過可視化每一步數(shù)據(jù)轉(zhuǎn)換操作對數(shù)據(jù)造成的變化,幫助數(shù)據(jù)工作者理解每一步操作的執(zhí)行結(jié)果。然而,這兩類方法都需要可執(zhí)行的數(shù)據(jù),借助這些數(shù)據(jù)的內(nèi)容才能理解腳本。此外,這些方法無法展示腳本完整的輸入和輸出空間,即無法明確腳本能夠處理的輸入數(shù)據(jù)的邊界條件,以及生成的數(shù)據(jù)能否完全滿足下游任務(wù)的需求。對于對腳本輸入輸出有明確要求的數(shù)據(jù)工作者,更關(guān)注數(shù)據(jù)整理腳本的輸入和輸出,而非腳本中具體執(zhí)行了哪些數(shù)據(jù)轉(zhuǎn)換操作。因此,數(shù)據(jù)工作者常需要花費(fèi)大量時(shí)間來構(gòu)建腳本的輸入輸出空間。如何高效地幫助數(shù)據(jù)工作者理解一份腳本的輸入和輸出空間,成為一項(xiàng)具有挑戰(zhàn)性的任務(wù)。
技術(shù)實(shí)現(xiàn)思路
1、為解決上述技術(shù)挑戰(zhàn),本發(fā)明的目的是提供一種基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法。該方法通過基于規(guī)則的模型從數(shù)據(jù)整理腳本中構(gòu)建輸入輸出表的約束,并結(jié)合可視化和人機(jī)交互技術(shù)幫助用戶理解腳本的輸入輸出空間,支持用戶根據(jù)需求對輸入輸出空間進(jìn)行調(diào)整,并引導(dǎo)用戶發(fā)現(xiàn)需求與腳本間的沖突以及對腳本進(jìn)行調(diào)試,從而增強(qiáng)腳本的魯棒性。
2、為實(shí)現(xiàn)上述發(fā)明目的,實(shí)施例提供的一種基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,包括以下步驟:
3、利用數(shù)據(jù)表約束生成器生成數(shù)據(jù)整理腳本的輸入輸出表的約束空間;
4、對輸入輸出表的約束空間進(jìn)行可視化;
5、支持對輸入輸出表的約束空間進(jìn)行修改,以對齊原始數(shù)據(jù)或是下游任務(wù)的需求,在修改約束空間后,將再次調(diào)用數(shù)據(jù)表約束生成器生成新的輸入輸出表的約束空間;
6、檢測約束間的沖突、數(shù)據(jù)與約束間的沖突,并進(jìn)行沖突定位。
7、本發(fā)明方法中,所述數(shù)據(jù)表約束生成器包括輸入表空間約束構(gòu)建模塊、輸出表空間約束構(gòu)建模塊、約束反向傳播模塊、以及約束反向構(gòu)建模塊,基于這四個(gè)模塊生成輸入輸出表的約束空間;
8、所述輸入表空間約束構(gòu)建模塊通過分析數(shù)據(jù)整理腳本中的每一步數(shù)據(jù)轉(zhuǎn)換操作,確定這些數(shù)據(jù)轉(zhuǎn)換操作對輸入表產(chǎn)生的約束;
9、所述輸出表空間約束構(gòu)建模塊將輸入表產(chǎn)生的約束通過數(shù)據(jù)轉(zhuǎn)換操作的內(nèi)容傳遞到輸出表中;
10、所述約束反向傳播模塊在輸入表空間約束構(gòu)建模塊更新了一列非輸入表中的原始列的約束且需要更新生成列的約束空間時(shí),定位由生成列到原始列的反向傳播路徑,并沿此約束傳播路徑反向傳播直至到原始列停止,再由終止點(diǎn)開始正向傳播;
11、所述約束反向構(gòu)建模塊在定位反向傳播路徑后,需要將輸出表中的約束傳播到輸入表中,具體根據(jù)數(shù)據(jù)轉(zhuǎn)換操作的內(nèi)容,將約束內(nèi)容傳遞到輸入表中,使輸入表的空間更加明確。
12、本發(fā)明方法中,對輸入輸出表的約束空間進(jìn)行可視化,包括可視化約束圖標(biāo)、約束標(biāo)簽、以及數(shù)據(jù)范圍多層條形圖,其中,約束圖標(biāo)用來表示數(shù)據(jù)類型、數(shù)據(jù)排序、數(shù)據(jù)內(nèi)的缺失值、以及數(shù)據(jù)內(nèi)的重復(fù)值;數(shù)據(jù)標(biāo)簽表示所有的約束類型;數(shù)據(jù)范圍多層條形圖用來表示數(shù)據(jù)范圍。
13、本發(fā)明方法中,所述約束類型包括數(shù)據(jù)類型、數(shù)據(jù)范圍、數(shù)據(jù)格式、數(shù)據(jù)排序、數(shù)據(jù)內(nèi)的特殊值、數(shù)據(jù)內(nèi)的重復(fù)值、數(shù)據(jù)內(nèi)的缺失值、數(shù)據(jù)間的比較關(guān)系、數(shù)據(jù)間的派生關(guān)系、以及數(shù)據(jù)間的聯(lián)合關(guān)系。
14、本發(fā)明方法中,約束標(biāo)簽和數(shù)據(jù)范圍多層條形圖采用統(tǒng)一的顏色編碼來表示約束作用的數(shù)據(jù)范圍,其中,顏色一表示所有的數(shù)據(jù)都要滿足約束,顏色二表示至少有一條數(shù)據(jù)需要滿足約束;顏色三表示可選數(shù)據(jù)滿足約束;顏色四表示沒有數(shù)據(jù)滿足約束。
15、本發(fā)明方法中,所述約束間的沖突產(chǎn)生在用戶修改輸入輸出表的約束空間后,與腳本生成的約束產(chǎn)生沖突,所述數(shù)據(jù)與約束的沖突產(chǎn)生在用戶上傳需要數(shù)據(jù)整理腳本執(zhí)行的數(shù)據(jù)表后,檢測數(shù)據(jù)表和約束之間的沖突。
16、本發(fā)明方法中,還包括:根據(jù)輸入輸出表的約束空間,生成符合約束且富有語義的樣例數(shù)據(jù)。
17、本發(fā)明方法中,還包括:根據(jù)數(shù)據(jù)整理腳本中的數(shù)據(jù)轉(zhuǎn)換操作以及輸入輸出表的約束空間,構(gòu)建腳本中數(shù)據(jù)列的派生情況,將生成數(shù)據(jù)列派生可視化視圖。
18、與現(xiàn)有技術(shù)相比,本發(fā)明具有的有益效果至少包括:
19、本發(fā)明利用基于約束的方法,表示數(shù)據(jù)整理腳本輸入輸出表的空間,能夠幫助用戶理解一份數(shù)據(jù)整理腳本是否能夠處理當(dāng)前數(shù)據(jù),以及能否將原始數(shù)據(jù)轉(zhuǎn)換為符合下游任需求的預(yù)期數(shù)據(jù),支持用戶調(diào)整約束空間與任務(wù)需求對齊,幫助用戶修改,調(diào)試腳本?;趯?shí)驗(yàn)發(fā)現(xiàn),本方法相比于現(xiàn)有的腳本調(diào)試工具,能夠提升用戶理解,調(diào)試腳本的效率。并且能夠通過約束幫助用戶發(fā)現(xiàn)隱藏的,不易發(fā)現(xiàn)的錯(cuò)誤,提升腳本的魯棒性。
1.一種基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,其特征在于,包括以下步驟:
2.根據(jù)權(quán)利要求1所述的基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,其特征在于,所述數(shù)據(jù)表約束生成器包括輸入表空間約束構(gòu)建模塊、輸出表空間約束構(gòu)建模塊、約束反向傳播模塊、以及約束反向構(gòu)建模塊,基于這四個(gè)模塊生成輸入輸出表的約束空間;
3.根據(jù)權(quán)利要求1所述的基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,其特征在于,對輸入輸出表的約束空間進(jìn)行可視化,包括可視化約束圖標(biāo)、約束標(biāo)簽、以及數(shù)據(jù)范圍多層條形圖,其中,約束圖標(biāo)用來表示數(shù)據(jù)類型、數(shù)據(jù)排序、數(shù)據(jù)內(nèi)的缺失值、以及數(shù)據(jù)內(nèi)的重復(fù)值;數(shù)據(jù)標(biāo)簽表示所有的約束類型;數(shù)據(jù)范圍多層條形圖用來表示數(shù)據(jù)范圍。
4.根據(jù)權(quán)利要求3所述的基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,其特征在于,所述約束類型包括數(shù)據(jù)類型、數(shù)據(jù)范圍、數(shù)據(jù)格式、數(shù)據(jù)排序、數(shù)據(jù)內(nèi)的特殊值、數(shù)據(jù)內(nèi)的重復(fù)值、數(shù)據(jù)內(nèi)的缺失值、數(shù)據(jù)間的比較關(guān)系、數(shù)據(jù)間的派生關(guān)系、以及數(shù)據(jù)間的聯(lián)合關(guān)系。
5.根據(jù)權(quán)利要求3所述的基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,其特征在于,約束標(biāo)簽和數(shù)據(jù)范圍多層條形圖采用統(tǒng)一的顏色編碼來表示約束作用的數(shù)據(jù)范圍,其中,顏色一表示所有的數(shù)據(jù)都要滿足約束,顏色二表示至少有一條數(shù)據(jù)需要滿足約束;顏色三表示可選數(shù)據(jù)滿足約束;顏色四表示沒有數(shù)據(jù)滿足約束。
6.根據(jù)權(quán)利要求1所述的基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,其特征在于,所述約束間的沖突產(chǎn)生在用戶修改輸入輸出表的約束空間后,與腳本生成的約束產(chǎn)生沖突,所述數(shù)據(jù)與約束的沖突產(chǎn)生在用戶上傳需要數(shù)據(jù)整理腳本執(zhí)行的數(shù)據(jù)表后,檢測數(shù)據(jù)表和約束之間的沖突。
7.根據(jù)權(quán)利要求1所述的基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,其特征在于,還包括:根據(jù)輸入輸出表的約束空間,生成符合約束且富有語義的樣例數(shù)據(jù)。
8.根據(jù)權(quán)利要求1所述的基于約束的數(shù)據(jù)整理腳本輸入輸出空間可視化方法,其特征在于,還包括:根據(jù)數(shù)據(jù)整理腳本中的數(shù)據(jù)轉(zhuǎn)換操作以及輸入輸出表的約束空間,構(gòu)建腳本中數(shù)據(jù)列的派生情況,將生成數(shù)據(jù)列派生可視化視圖。