◎周世俊 李波
為響應(yīng)國家“新基建”號(hào)召:加快推進(jìn)國家規(guī)劃已明確的重大工程和基礎(chǔ)設(shè)施建設(shè),加快5G網(wǎng)絡(luò)、數(shù)據(jù)中心等新型基礎(chǔ)設(shè)施建設(shè)進(jìn)度,作為重要的基礎(chǔ)產(chǎn)業(yè)和新興產(chǎn)業(yè),“新基建”一頭連著巨大的投資與需求,一頭牽著不斷升級(jí)的強(qiáng)大消費(fèi)市場(chǎng),是中國經(jīng)濟(jì)增長(zhǎng)的新引擎。當(dāng)前,大數(shù)據(jù)產(chǎn)業(yè)已經(jīng)成為我國數(shù)字經(jīng)濟(jì)發(fā)展的重要引擎。隨著國家加大力度支持新基建發(fā)展,人工智能、5G、物聯(lián)網(wǎng)、數(shù)據(jù)中心等產(chǎn)業(yè)有望駛上“高速路”,這對(duì)國內(nèi)大數(shù)據(jù)產(chǎn)業(yè)來說也是一大關(guān)鍵利好。由之前際高速鐵路和城市軌道交通、新能源汽車充電樁、大數(shù)據(jù)中心、人工智能、工業(yè)互聯(lián)網(wǎng)這幾大領(lǐng)域,又新增5G、超高壓,對(duì)數(shù)字化、智能化的重要的程度越來越高,從而加大對(duì)外業(yè)務(wù)工程的需求,對(duì)外業(yè)務(wù)工程對(duì)英語的需要也越來越高,而工程英語多為生僻詞匯且詞匯量龐大,翻譯起來困難是造成對(duì)外業(yè)務(wù)發(fā)展極大的不利因素,大大降低工作效率,所以對(duì)工程英語有極高的需求,進(jìn)行英語詞頻數(shù)據(jù)分析有助于建立工程英語詞庫,來更好的找到所需的單詞來進(jìn)步對(duì)業(yè)務(wù)的交涉大大增加對(duì)外業(yè)務(wù)工程的效率,從而間接增加經(jīng)濟(jì)效益。
本文章所涉及的數(shù)據(jù)來自于長(zhǎng)春工程學(xué)院的“新基建”+”一帶一路”涉外工程英語應(yīng)用研究的創(chuàng)新團(tuán)隊(duì),本文所包含的據(jù)都是一些國內(nèi)外所達(dá)成的工程合同,這里在本文中不支持展示。
在目前國內(nèi)的對(duì)外的工程合同大部分都是用pdf的形式來進(jìn)行保存,首先我們得將pdf形式轉(zhuǎn)成word形式或者txt文檔的形式,通過python的一些庫或者自定義函數(shù)的用法來統(tǒng)計(jì)詞頻,通過python的wordcloud庫來進(jìn)行詞云圖的制作,詞云圖可以幫助我們更好分辨不同元素的重要性,對(duì)文本出現(xiàn)頻率較高的文本信息進(jìn)行展示。
1.將文本轉(zhuǎn)換成中文進(jìn)行處理。
(1)讀取文件。
①可以將PDF文件用相關(guān)軟件轉(zhuǎn)換成word或者txt文件來進(jìn)行讀取,不過因?yàn)樵谙嚓P(guān)軟件下轉(zhuǎn)換時(shí)會(huì)發(fā)生亂碼的存在就不能很好的達(dá)到想要的那種效果。
②在讀取PDF文檔的時(shí)候可以在python中選擇安裝pdfminer或者PyPDF2這個(gè)庫來進(jìn)行讀取,不過對(duì)于PyPDF2這個(gè)庫來說的話,只支持英文,對(duì)中文支持不太好,相對(duì)于PyPDF2來說,pdfminer支持多種語言、圖表、圖片等,功能較為強(qiáng)大。對(duì)于pdfminer是一個(gè)從pdf文檔提取信息并且完全專注于獲取和分析文本數(shù)據(jù)的工具,所以說對(duì)于要對(duì)工程合同進(jìn)行數(shù)據(jù)處理的話,可以考慮這個(gè)工具包,里面有專門的模塊來進(jìn)行存儲(chǔ),獲得數(shù)據(jù)、解析page內(nèi)容,最為關(guān)鍵的是可以不去讀取圖片,防止工程合同中存在一些圖片導(dǎo)致程序報(bào)錯(cuò)。像一般python2和python3不兼容這點(diǎn)也著重注意需要對(duì)應(yīng)的pdfminer版本。
③對(duì)word文檔進(jìn)行讀取的可以使用python-docx庫進(jìn)行讀取,python-docx庫可以讀取表格里的內(nèi)容,像word進(jìn)行保存時(shí)可能是docx或者是doc形式,不同的存儲(chǔ)格式需要不同的python庫。
(2)翻譯且進(jìn)行保存。
可以將文檔中的進(jìn)行讀取后,要做一個(gè)爬蟲來進(jìn)行翻譯,像百度翻譯、谷歌翻譯、有道翻譯等這個(gè)翻譯網(wǎng)站來爬取或者是直接進(jìn)行翻譯,這里用爬取百度翻譯為例:
①首先百度翻譯,是使用ajax的局部的刷新技術(shù),進(jìn)入百度翻譯的頁面,在翻譯面板中隨便輸入或者刪除一些字比如把“吃早飯”變成“吃飯”就會(huì)出現(xiàn)“sug”,獲得url。
②進(jìn)行UA偽裝,在python對(duì)網(wǎng)頁進(jìn)行請(qǐng)求時(shí),會(huì)直接以一個(gè)爬蟲的形式去請(qǐng)求網(wǎng)站,這樣的話就會(huì)被大部分網(wǎng)站給禁止,所以在這進(jìn)行UA偽裝能幫助我們找到百度翻譯的接口。
③獲得數(shù)據(jù),然后將數(shù)據(jù)存儲(chǔ)在word、pdf、txt文件。
(3)進(jìn)行詞頻分析并制作詞云。
①下載jieba、wordcloud庫。
第一種方法,可以去官網(wǎng)中尋找jieba、wordcloud庫一定要找好對(duì)應(yīng)自己python版本的庫,不然會(huì)報(bào)錯(cuò)或者找不到該程序,將下載whl文件復(fù)制到自己python的Script文件下,然后在命令指示符那輸入pip install+Script路徑+所下載的jieba和wordcloud的文件全部名第二種方法,在python的開發(fā)工具pycharm中setting中進(jìn)行下載或者直接在在命令指示符中輸入pip install+庫名,也可以用清華的鏡像的方法來進(jìn)行下載
②進(jìn)行分詞和數(shù)據(jù)處理。
像英文的話有空格區(qū)隔就相當(dāng)于分詞了,但是中文不行,中文有詞語,成語這些的,這時(shí)候就需要運(yùn)用到分詞庫了,jieba、pynlpir庫都是中文分詞庫,本文章使用的是jieba庫,它可以進(jìn)行分詞,命令行分詞,還支持關(guān)鍵詞提取等,同時(shí)還有jieba庫分詞有三種模式:第一種精確模式、第二種全模式、第三種搜索引擎模式,所以說jieba庫是十分好用的。首先先import jieba再定義一個(gè)函數(shù)readfile()讀取文本文檔內(nèi)容(像這里的讀取方法。上文已經(jīng)論述過了)在讀取過程中要注意文本保存內(nèi)容的編碼,不然讀取的內(nèi)容會(huì)是亂碼,然后給讀取的文檔內(nèi)容返回回來,其次可以進(jìn)行一個(gè)簡(jiǎn)單的預(yù)處理定義一個(gè)函數(shù)clean(),使用一個(gè)for循環(huán)對(duì)于文本中存在的標(biāo)點(diǎn)符號(hào)去除,最后進(jìn)行分詞處理,在這定義一個(gè)wordcount()方法像這里本文章使用jieba。lcut()方法進(jìn)行分詞,這里在定義一個(gè)空的字典然后可以進(jìn)行一些無用字的處理,像一些“啊,嗯”等這些無價(jià)值的詞,像可以在百度上尋找停用詞表,很容易就能找,像這里本文使用的是哈工大的停用詞表,將停用詞表進(jìn)行一個(gè)分詞然后以列表的形式進(jìn)行存儲(chǔ),然后用if-else語句進(jìn)行一個(gè)遍歷將合同里的無價(jià)值的詞給優(yōu)先刪除,然后在將刪除完停用詞的內(nèi)容存入sdict字典然后將字典類型強(qiáng)制類型轉(zhuǎn)換成列表,以詞頻從多到少的寫入列表中,函數(shù)最后將列表返回。最后定義writeFile()函數(shù)將處理完的數(shù)據(jù)存入txt的文件。
部分代碼展示以部分可見內(nèi)容展示
(4)進(jìn)行詞云圖制作。
wordcloud可以對(duì)文本中出現(xiàn)頻率較高的詞語給予視覺化展示的圖形,這個(gè)庫的wordcloud。WordCloud()方法可以進(jìn)行對(duì)畫板大小的構(gòu)建,背景的顏色,字體等等一系列的自定義,或者是可以自定義詞云圖的形狀,可以選擇一個(gè)圖片形狀來自定義詞云圖的形狀。本文展示簡(jiǎn)單的制作云圖的代碼,如下圖:
2.將英文文本進(jìn)行處理。
讀取文件文件在上文都已經(jīng)進(jìn)行過仔細(xì)的講解可以去上文繼續(xù)了解了解,英文文檔可以直接進(jìn)行處理,像前文的clean()、fenci()、wordcount()、readfile()方法幾乎都是一樣,就是比較注意的一點(diǎn)是英文分詞是不需要進(jìn)行分詞,就是不需要像中文那樣jieba庫來特地的進(jìn)行分詞,像英文就是一個(gè)單詞一個(gè)空格,所以可以用python自帶的split()函數(shù)(split()函數(shù)是對(duì)指定的分隔符對(duì)字符串進(jìn)行切片,并且以列表的形式返回已經(jīng)分隔完成的字符串列表)進(jìn)行分隔,最終進(jìn)行打印存儲(chǔ)到txt文件里面,最后進(jìn)行詞云圖的制作,來展示合同中高頻出現(xiàn)的關(guān)鍵詞。
本項(xiàng)目從“新基建”下的工程合同出發(fā)進(jìn)行數(shù)據(jù)分析以及詞云圖的制作,我們采取現(xiàn)在新興的python語言來進(jìn)行數(shù)據(jù)的清洗、提取等一些操作,同時(shí)本文章在讀取工程合同時(shí)采取不同python庫來進(jìn)行讀取,展示python語言的簡(jiǎn)單以及方便性,在處理數(shù)據(jù)方面也沒使用過難的技術(shù)都是采取了函數(shù)的方法來進(jìn)行處理,最后做出詞云圖。這同時(shí)也為我國涉外工程對(duì)工程合同處理提供了一個(gè)思路,也為我國涉外工程解決了一些實(shí)際的需求。