——提升審計效率的Python技術應用"/>
999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Python技術在圍標和串標審計項目中的應用
——提升審計效率的Python技術應用

2023-07-17 11:04:34吳大進
中國新技術新產品 2023年8期

吳大進

(安徽寶申會計師事務所,安徽 合肥 230001)

0 引言

圍標和串標是招投標過程中比較典型的一類違法違規行為,嚴重擾亂了正常市場秩序,直接傷害了發標人和其他投標人的合法權益,也給投標項目質量和安全帶來嚴重的風險隱患,查處圍標和串標行為一直是審計的重點內容。傳統的審計思路是核對MAC 地址是否一致、IP 地址是否一致、工程造價軟件鎖編碼是否一致以及投標保證金繳付賬號是否一致。根據《中華人民共和國招標投標法實施條例》第40 條規定發現上述情形之一的,視為投標人相互串通投標。

目前,圍標和串標行為也隨之發生了新變化,為逃避法律法規監管,圍標和串標行為越來越隱蔽,越來越職業化。圍標人一般會聯系多家投標人對某個重大項目進行重點投標,由圍標人團隊統一制作各家標書,陪標人負責提供復印件、簽字、蓋章、繳付投標保證金、上傳標書等事項。這種圍標和串標方式隱蔽性強,一般很難通過MAC 地址、IP 地址、工程造價軟件鎖編碼和投標保證金賬號一致等途徑發現審計證據,如何發現重大項目中圍標和串標行為已經成為擺在審計人員面前亟待解決的重要難題。

1 審計思路

圍標人團隊統一編寫各家標書時會刻意避免雷同文本出現,但是語言風格、表達習慣、詞匯特征等語言表達特點不會發生本質變化,因此投標文件異常一致或高度雷同是重點審計方向。投標文件響應招標文件,部分內容雷同屬于正常情況,但不同投標人技術標中個性化內容不可能完全相同,即使部分技術參數指標基本相同(如技術方案、產品技術參數和實施計劃等),但落實到紙面上的文字也不會完全相同,因此不同投標人制作的標書內容會有差異。如果2 份投標文件使用詞匯、出現頻次、生僻詞、錯別字高度一致,則存在由同一個人或同一團隊編寫的重大嫌疑[1]。

傳統的審計方法是人工比對、分析招投標文件,查找圍標和串標線索,如技術標中方案細節一致、投標文件中瑕疵或錯別字一致和大段內容重復雷同等。通常每份投標文件都在幾萬字左右,大型投標項目一般都有幾十家甚至上百家投標企業,人工梳理如同大海撈針,難以全面處理大批量文該文件。而利用Python 的分詞技術、字典容器和矩陣演算等方法,可以用少量基礎代碼構建算法模型,幫助審計人員高效地完成投標文件詞頻統計、集合運算和結構化分析、掃描投標文件,為復雜的審計項目提供技術支持。

算法模型:設置文本詞組重合比例和重復比例2 份閾值來判斷2 份投標文件的相似程度,如果2 份投標文件的相似度超過一定閾值,則2 份投標文件存在由同一個人或同一團隊編寫的重大嫌疑。

閾值1:詞組重合比例,即2 份文本中共同使用的詞組數量占2 份文本全部使用詞組數量的比例,每個詞組只計數一次[2]。

閾值2:詞組重復比例,即2 份文本中重復出現的詞組數量占2 份文本總詞組數量的比例,每個詞組按出現頻次計數。

由于漢字的使用習慣,不同文本之間都會存在詞組重合基數,根據收集的500 份1.5 萬~3 萬字不同類型文該文件(包括小說、通信稿件、審計報告、產品說明書、投標文件、游戲攻略和電影劇本等)的分析結果,不同類型文本之間詞組重合比例在11%~24%,詞組重復比例在13%~30%。投標文件響應招標文件部分內容雷同,同一項目投標文件詞組重合比例和詞組重復比例較高屬于正常現象。2021 年某省公共資源交易中心圍標和串標審計項目經公安機關協調篩選了17 個完全沒有圍標和串標嫌疑的項目,取得838 份投標文件電子版,經過分析比對同一項目投標文件的詞組重合比例在28%~43%,詞組重復比例在31%~52%。

綜上所述,將2 份投標文件詞組重合比例閾值設定為70%和詞組重復比例閾值設定為75%,如果詞組重合比例和詞組重復比例都超過了閾值,則2 份投標文件高度相似,存在圍標和串標的重大嫌疑。進一步通過“詞頻分析結果”Excel 文件梳理關鍵詞組(生僻詞、錯別字等)出現頻次是否高度一致,固定審計證據,鎖定涉嫌圍標和串標的投標文件。

2 程序代碼語句

基于Python 編寫的算法模型由主程序和4 個可調用的自定義函數構成。

2.1 主程序

第一步,導入需要使用的模塊,包括jieba(用于中文分詞)、docx(用于讀取word 文檔)、Counter(用于計算詞頻)和xlwings(用于Excel 數據輸出)。第二步,連續2 次調用自定義函數1,即def group_dict(file),對2 個指定的word 文檔進行分詞,并將每個詞組出現的次數記錄在字典中。第三步,調用自定義函數2,即def coincide(dict1,dict2),比較2 個文檔的詞組,找出重復的詞組,并將重復的詞組及其出現次數記錄在另一個字典中。第四步,調用自定義函數3,即def analyse(dict1,dict2,dict3),根據以上統計結果,輸出2 個文檔的詞組數量、重復詞組數量及比例等信息。第五步,使用print()語句將文檔的詞組數量、重復詞組數量及比例等信息打印在屏幕上,實際運行效果如圖1 所示。第六步,調用自定義函數4,即def output(dict1,dict2),將詞組及其出現次數分別輸出到Excel 文件中。

圖1 主程序在Python 解釋器中實際運行效果

主程序代碼如下。

import jieba # 導入jieba 模塊

from docx import Document # 導入Document模塊,用于讀取word 文檔

from collections import Counter # 導入Counter 模塊,用于計算詞頻

mport xlwings as xw # 導入xlwings 模塊

file1 = "C:/Users/86139Desktop/比對文本/20210104投標文件1.docx"file2 ="C:/Users/86139Desktop/比對文本/20210104 投標文件2.docx"

word_dict1=group_dict(file1) #調用自定義函數1

word_dict2=group_dict(file2) #調用自定義函數1

word_dict3=coincide(word_dict1,word_dict2) #調用自定義函數2

n1,n2,n3,n4,n5=analyse(word_dict1,word_dict2,word_dict3)#調用自定義函數3

results1=f'投標文件1 使用詞組{len(word_dict1)}個,投標文件2 使用詞組{len(word_dict2)}個,二個文件使用詞組重合{n1}個,詞組重合比例{n2}%'

results2=f'投標文件1 詞組合計{sum(word_dict1.values())}個,投標文件2 詞組合計{sum(word_dict2.values())}個,

二個文件使用重復詞組合計{n4}個,詞組重復比例{n5}%'

print(results1)

print(results2)

output(word_dict1,word_dict2) #調用自定義函數4

2.2 自定義函數1:def group_dict(file)

第一步,使用Document 函數讀取word 文檔。第二步,使用for paragraph in document.paragraphs 語句遍歷文檔的每段,調用jieba.lcut(paragraph.text)方法進行分詞,for 循環將每個詞組添加到word_list 列表中。第三步,使用Counter 函數統計每個詞出現的次數,并使用del word_dict[key]方法刪除字典中的標點符號、特殊字符、換行符和空格等干擾信息。第四步,使用sorted(word_dict.items(), key=lambda x:x[1], reverse=True)方法按照詞頻降序排序,返回排序后的“詞頻字典”return word_dict。

Python 中的字典是一種特殊的數據結構,它是一種鍵值對的集合,每個鍵都與一個值相關聯。字典的特點是其中的鍵是唯一的,值可以是任何類型,可以使用鍵來訪問值[3]。

自定義函數1 程序代碼如下。

def group_dict(file):

document = Document(file)

word_list = []

for paragraph in document.paragraphs:words = jieba.lcut(paragraph.text)for word in words:

word_list.append(word)word_dict = Counter(word_list)for key in list(word_dict.keys()):

del word_dict[key]

if key in '是的和與在等為對中年月日嗎':del word_dict[key]

if key=='':

del word_dict[key]

word_dict_sort = sorted(word_dict.items(), key=lambda x:x[1], reverse=True)

word_dict=dict(word_dict_sort)return word_dict

2.3 自定義函數2:def coincide(dict1,dict2)

第一步,以dict3t = {}創建一個新字典。第二步,for key in dict 循環遍歷投標文件“詞頻字典”dict1 和dict2,使用if key in dict2 判斷語句,如果2 個字典中有相同的鍵,使用min(dict1[key], dict2[key])方法將交集的鍵和較小的鍵值添加到新字典dict3 中。第三步,返回“重復詞組詞頻字典”return dict3。

自定義函數2 程序代碼如下。

def coincide(dict1,dict2):dict3t = {}

1.2.3 Transwell實驗檢測細胞遷移和侵襲能力 收集1.2.1穩定表達miR-145SiHa細胞,無血清培養基制細胞懸液,接種于Transwell小室上層(3×103個/孔)[6]。Transwell小室風干后,加入500 μL 0.1%結晶紫染色,顯微鏡下拍照并計數發生遷移的細胞數量。細胞侵襲實驗在Transwell小室上層加入50 μL 2.0 mg/mL基質膠Matrigel,凝固后接種SiHa細胞,之后同細胞遷移操作。

for key in dict1:

if key in dict2:

dict3 [key] = min(dict1[key], dict2[key])return dict3

2.4 自定義函數3:def analyse(dict1,dict2,dict3)

第一步,使用for word in dict 語句分別遍歷dict1、 dict2和dict3 這3 個字典。第二步,分析計算2 份投標文件詞組重合比例n2 和重復比例n5 來判斷2 份文件的相似程度。第三步,返回n1、n2、n3、n4 和n5(詞組數量、詞組重合比例、總數量、重復詞組數量以及詞組重復比例),用于主程序print 語句輸出程序結果。

詞組重合比例n2=dict3 字典鍵的數量/(dict1 字典鍵的數量+dict2 字典鍵的數量-dict3 字典鍵的數量)。

詞組重復比例n5=dict3 字典鍵值合計/(dict1 字典鍵值合計+dict2 字典鍵值合計-dict3 字典鍵值合計)。

自定義函數3 程序代碼如下:

def analyse(dict1,dict2,dict3):n1 = 0

for word in dict1:

if word in dict2:

n1 += 1

n2 = round(n1 / (len(dict1) + len(dict2) - n1)*100,2)

n3 = sum(dict1.values())+sum(dict2.values())

n4 = sum(dict3.values())

n5=round(n4/(n3-n4)*100,2)

return(n1,n2,n3,n4,n5)

2.5 自定義函數4:def output(dict1,dict2)

第一步,使用xlwings 模塊xw.Book()和wb.sheets[0]生成一個新的Excel 文件。第二步,利用解包方法for key,value in dict1.items()取得詞組重合比例和詞組重復比例。第三步,使用sht.range().value 賦值語句將詞組重合比例和詞組重復比例分析結果分別寫入A1 和A2 單元格。第四步,使用sht.range().options(transpose=True).value = list(dict3.keys())語句寫入分析過程,A4 單元格縱向寫入投標文件1 或文件2 中曾經使用過的全部詞組,B4 單元格寫入投標文件1 和文件2 中該詞組出現總次數,C4 單元格寫入投標文件1 該詞組出現次數,D4 單元格寫入投標文件2該詞組出現次數。第五步,以wb.save(“C:/Users/86139/Desktop/詞頻分析結果.xlsx”)語句將記錄上述分析過程的文件保存在桌面并命名“詞頻分析結果.xlsx”。自定義函數4 程序代碼如下。def output(dict1,dict2):

wb = xw.Book()

sht = wb.sheets[0]

sht.range('A1').value = results1

sht.range('A2').value = results2

dict3 = {}

for key, value in dict1.items():if key in dict2:

dict3[key] = value + dict2[key]else:

dict3[key] = value

for key, value in dict2.items():

if key not in dict1:

dict3[key] = value

sht.range('A4').value =“ 詞組”

sht.range('A5').options(transpose=True).value = list(dict3.keys())

sht.range('B4').value = '總次數'

sht.range('B5').options(transpose=True).value = list(dict3.values())

sht.range('C4').value = '投標文件1 出現次數'A_list = list(dict3.keys())n=5

for i in range(len(A_list)):

if A_list[i] in dict1.keys():

sht.range('C' + str(n)).value = dict1[A_list[i]]n = n + 1

sht.range('d4').value = '投標文件2 出現次數'A_list = list(dict3.keys())

n = 5

for i in range(len(A_list)):

if A_list[i] in dict2.keys():

sht.range('d' + str(n)).value = dict2[A_list[i]]n = n + 1

wb.save("C:/Users/86139/Desktop/詞頻分析結果.xlsx")wb.close()

3 實際應用案例

2021 年初某省公共資源交易中心收到舉報材料,年初某市重點安置房建設項目中標結果存在圍標嫌疑,項目涉案金額巨大,投標人涉及38 家企業,圍標手段非常專業,檢查MAC 地址、IP 地址、工程造價軟件鎖編碼和投標保證金賬號等均未發現異常。僅剩的審計方向就是比對投標文件是否異常一致或高度雷同,如果使用傳統的人工方式對38 份投標文件進行比對分析,需要3~4 名審計人員加班加點工作3 周才有可能完成,且而且比對分析效果也很難保證。

審計組運用該文審計技術僅4天時間就完成了全部38份投標文件的相似度分析。一共38 份投標文件,每次比對分析2 份投標文件,共有(38×37)/2=1406 種比對組合,排除反向組合(A-B 組合與B-A 組合是相同的),有效比對組合共計1406/2=703 組。對703 組比對分析結果梳理進行匯總,發現32 份投標文件呈現4 個規律性集合,詳見表1。其中,一個集合內元素相似度正常,3 個集合內元素高度相似。集合1 包括6 份投標文件,詞組重合比例平均值為35.45%,詞組重復比例平均值為38.45%,未超過閾值;集合2 包括12 份投標文件,詞組重合比例平均值為77.17%,詞組重復比例平均值為81.03%,超過閾值;集合3 包括9 份投標文件,詞組重合比例平均值為79.45%,詞組重復比例平均值為82.05%,超過閾值;集合4 包括11份投標文件,詞組重合比例平均值為74.07%,詞組重復比例平均值為79.73%,超過閾值。

表1 38 份投標文件集合分析結果

審計組進一步利用“詞頻分析結果”Excel 文件重點梳理了38 份投標文件的62 項關鍵詞組(生僻詞和錯別字等)的出現頻率,呈現出高度的一致性和規律性。如“砌筑檢查井”,32 份投標文件出現頻次在32~35 次,其他投標文件均少于5 次;“工程定位復測”,32 份投標文件均出現8 次,其他投標文件均未出現。“墻角(腳)防潮層”錯別字32 份投標文件均出現,其他投標文件均正確,詳見表2(關鍵詞頻率對比情況)。

表2 關鍵詞組頻率對比情況

初步鎖定32 家企業涉嫌圍標,同舉報材料反映的9 家企業涉嫌圍標的情況大相徑庭。起初公安機關對如此短的時間就反饋審計結果和涉嫌圍標企業如此之多也持懷疑態度,后經公安機關偵辦核實32 家投標人全部參與該項目串通投標犯罪行為,32 份標書由圍標人團隊統一通過3 份標書復制、修改、增刪制作完成。最終成功破獲該起涉及安置房工程招標的特大串通投標案,事半功倍的效率和精準定位的審計手段得到了司法機關的高度評價和專項表彰。

4 小結和前瞻

該文審計方法核心通過Python 技術自動讀取文件、中文智能分詞、矩陣演算和集合運算,完成了大批量文該文件數據信息要點分割、獲取和數據關聯性分析,解決了傳統方法和人工手段難以全面處理大批量文該文件的難題,未來在判定論文抄襲、快速提取文本關鍵詞、敏感詞匯預警等方面都有重要的推廣意義。雖然該文審計方法提高了圍標和串標審計項目的審計質量和精準度,但是在程序交互性設計和算法模型方面有待進一步完善和提升。

除了上述介紹的Python 技術在圍標和串標項目中的審計方法,還有很多基于Python 技術的審計方法值得審計人員不斷探索和研究。Python 技術未來在審計項目數據采集清洗、數據挖掘性分析和辦公自動化等方面有廣泛的應用前景[4]。首先,傳統審計范圍主要是財務數據,Python技術可以將音視頻、圖像、定位信息、傳感器信息等非結構化信息進行采集、清洗并轉換為結構化信息,從而突破傳統審計內容的限制,可提供不同維度的大數據,助力于挖掘性分析,推動數據驅動型審計模式的發展[5]。其次,傳統審計多數是面對數據和文本的一維界面,很難找出數據中隱藏的規律和問題。Python 技術在數據交互分析、自動化輸出以及數據可視化方面都具有無與倫比的優勢,包括審計數據以圖表、數據矩陣等形式的多維表達,可展示出豐富的細節,為大數據時代創新審計思路、拓寬審計方法提供技術可能性。

5 結語

大數據時代的到來和大數據技術的發展推動了各個行業的轉型升級,也給審計人員帶來了新的機遇和挑戰,“君子性非異也,善假于物也”,審計人員也應與時俱進,主動迎接挑戰,創新審計思維,善于運用Python 等大數據技術,將大數據技術與審計業務進行有機融合,努力使自己成長為大數據時代“一專多能”的復合型審計人才,推動審計技術的不斷創新。

主站蜘蛛池模板: 干中文字幕| 天堂在线www网亚洲| 日韩美毛片| 亚洲va视频| 亚洲视频黄| 国产精品手机视频一区二区| 国产一级特黄aa级特黄裸毛片| 人人看人人鲁狠狠高清| 欧美激情,国产精品| 日本一区高清| 欧洲日本亚洲中文字幕| 亚洲国产亚洲综合在线尤物| 免费又黄又爽又猛大片午夜| 中文字幕亚洲综久久2021| 欧美一级特黄aaaaaa在线看片| 又黄又湿又爽的视频| 国产av一码二码三码无码 | 欧美国产菊爆免费观看| 国内精品久久久久久久久久影视 | 国产精品亚洲片在线va| 国产午夜精品鲁丝片| 漂亮人妻被中出中文字幕久久| 一级成人a做片免费| 成人无码一区二区三区视频在线观看 | 天天躁日日躁狠狠躁中文字幕| 亚洲精品无码久久毛片波多野吉| 亚洲第一精品福利| 一本一道波多野结衣av黑人在线| 不卡的在线视频免费观看| 午夜日b视频| 97影院午夜在线观看视频| 丁香六月激情综合| 极品国产在线| 国产美女精品人人做人人爽| 3p叠罗汉国产精品久久| 国产精品自在在线午夜| 国产午夜一级毛片| 99久久亚洲综合精品TS| 99草精品视频| 一级毛片免费观看不卡视频| 久久www视频| 色成人综合| www精品久久| 亚洲日韩久久综合中文字幕| 久久人人爽人人爽人人片aV东京热| 欧美啪啪视频免码| 国内黄色精品| 午夜一区二区三区| 欧美国产综合色视频| 欧美日在线观看| 亚洲熟女偷拍| 久久久久久国产精品mv| 广东一级毛片| 国内精品自在自线视频香蕉| 九九免费观看全部免费视频| 国产91视频免费观看| 青青操国产| 国产农村妇女精品一二区| 亚洲成人动漫在线观看| 91精品小视频| 中文字幕在线观| 精品视频在线观看你懂的一区| 国产69精品久久久久孕妇大杂乱 | 欧美激情综合| 国产亚洲欧美在线视频| 日韩AV无码免费一二三区| 四虎永久免费在线| 亚洲第一成人在线| 国产精品妖精视频| 亚洲综合久久成人AV| 992tv国产人成在线观看| av无码久久精品| 2021国产精品自拍| 97久久精品人人| 国产精品成人观看视频国产 | 日韩一区二区三免费高清| 精品国产一区二区三区在线观看| 国产视频资源在线观看| 国产成人a在线观看视频| 精品视频一区二区三区在线播| 亚洲成人高清无码| 日韩无码黄色|