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