湯連杰
大快搜索是一個(gè)相對(duì)年輕的公司,組建時(shí)間不算很長(zhǎng),我們公司主要是聚焦大數(shù)據(jù)底層軟件、大數(shù)據(jù)開發(fā)框架、人工智能這幾個(gè)方向。在大數(shù)據(jù)底層軟件方面,有DKH大數(shù)據(jù)分析處理平臺(tái),在人工智能方面的主要產(chǎn)品就是HanLP。HanLP從2015年開始進(jìn)行研發(fā),目前,我們已經(jīng)開源了全部源代碼。
由于HanLP1.x的開發(fā)主要以傳統(tǒng)方式進(jìn)行,我們可以直接在工程里面進(jìn)行調(diào)用。從HanLP2.0開始,我們走入深度學(xué)習(xí)技術(shù)路線,把以前的算法重新用C++進(jìn)行打造。由于深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)時(shí)代的到來,HanLP2.0全面擁抱深度學(xué)習(xí),采用Python作為主要開發(fā)語言,以前的對(duì)外接口是Java,現(xiàn)在可以提供多種語言支持。以前的C語言開發(fā)模塊,通過這個(gè)接口傳送出來,或者用Python來進(jìn)行調(diào)用,其他開發(fā)語言也一樣可以調(diào)用。因?yàn)槎际情_源的,大家可以盡情地使用,都是不收費(fèi)的。
HanLP2.0里面利用C++實(shí)現(xiàn)了高速算法,用SWIG實(shí)現(xiàn)Python語言的接口。雙數(shù)組字典樹/AC自動(dòng)機(jī)詞典匹配是HanLP1.x的優(yōu)良傳統(tǒng),在HanLP2.0會(huì)繼續(xù)保持,大家還可以繼續(xù)使用這個(gè)。
在多語言這個(gè)方面,我們用Python重新寫了外部框架。以前我們要把一段話進(jìn)行分詞處理,也要建立一個(gè)工程,HanLP2.0支持直接向服務(wù)端發(fā)送一個(gè)請(qǐng)求,可以直接返回分詞結(jié)果,這個(gè)就非常方便了。我說多語言指的是自然語言,比如英文、日文、韓文和西班牙文,在底層框架的設(shè)計(jì)上,不在一個(gè)編碼體系里,我們底層的架構(gòu)跟語言無關(guān),你可以使用任何語言,只要提供語料庫就可以處理語言,不論是什么語言。語料庫決定了HanLP最后所支持的語言,如果是西班牙語,將西班牙語語料庫放在里面訓(xùn)練,建立訓(xùn)練模型,最后調(diào)用模型就可以了。所以說,HanLP2.0充分體現(xiàn)了這么一個(gè)人工智能和神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)編程的思路。HanLP預(yù)先存放的模型有繁體中文、簡(jiǎn)體中文、英文、日文,如果有更好的語料庫也可以進(jìn)行訓(xùn)練。
與國際接軌,HanLP2.0的代碼庫、文檔還有OA都采用英文,文檔采用Sphinx工具,大家使用起來更加方便。HanLP2.0對(duì)底層框架是有依賴的,主要是依靠TensorFlow。Keras就是TensorFlow2.0提供的官方高級(jí)API,應(yīng)用特別方便,比其他框架快得多。
有人問HanLP1.0很好,HanLP2.0怎么用呢?很多模型通過神經(jīng)網(wǎng)絡(luò)訓(xùn)練,為了提高速度,我們公司本身提供一個(gè)GPU集群,可以免費(fèi)使用,但如果為了提高效率,可以自己另行搭建GPU集群,可以把你的語料庫放在GPU上進(jìn)行訓(xùn)練。HanLP的各個(gè)組件都是基于模型的,任何組件都可以實(shí)現(xiàn)模型的加載、保存、解碼、訓(xùn)練、評(píng)測(cè)等。組件和組件接口都是以文檔為標(biāo)準(zhǔn)的,傳入的是文檔,輸出的也是文檔,各個(gè)組件很容易構(gòu)成流水線,各種不同功能的模塊把組件搭建起來以后,迅速領(lǐng)取自己的任務(wù)。這樣說起來,可能還是有點(diǎn)抽象,但是真正使用的時(shí)候,HanLP是一個(gè)非常好用的工具,加載速度非???,從加載到啟動(dòng),基本上只需要200毫秒。(根據(jù)演講內(nèi)容整理,未經(jīng)本人審核)