本文概述和比較了最流行、最有用的自然語(yǔ)言處理庫(kù),,包含 NLTK,、spaCy,、scikit-learn,、gensim、Pattern,、polyglot,。
現(xiàn)在自然語(yǔ)言處理(NLP)變得越來(lái)越流行,這在深度學(xué)習(xí)發(fā)展的背景下尤其引人注目,。NLP 是人工智能的一個(gè)分支,,旨在從文本中理解和提取重要信息,進(jìn)而基于文本數(shù)據(jù)進(jìn)行訓(xùn)練,。NLP 的主要任務(wù)包括語(yǔ)音識(shí)別和生成,、文本分析、情感分析,、機(jī)器翻譯等,。
近幾十年,,只有適當(dāng)受過(guò)語(yǔ)言學(xué)教育的專(zhuān)家才能從事自然語(yǔ)言處理方向的工作。除了數(shù)學(xué)和機(jī)器學(xué)習(xí),,他們還應(yīng)該熟悉一些重要的語(yǔ)言概念,。但是現(xiàn)在,我們可以使用寫(xiě)好的 NLP 庫(kù),。它們的主要目的是簡(jiǎn)化文本預(yù)處理過(guò)程,,這樣我們可以專(zhuān)注于構(gòu)建機(jī)器學(xué)習(xí)模型和超參數(shù)調(diào)整。
人們?cè)O(shè)計(jì)了很多工具和庫(kù)來(lái)解決 NLP 問(wèn)題,。今天,,我們想基于自身經(jīng)驗(yàn),概述和比較最流行,、最有用的自然語(yǔ)言處理庫(kù)。本文介紹的所有庫(kù)只有部分任務(wù)會(huì)重合,。因此,,有時(shí)候很難直接將它們進(jìn)行對(duì)比。我們將介紹一些特征,,然后對(duì)比這些庫(kù),。
概覽
NLTK(自然語(yǔ)言工具包)用于分詞、詞形還原,、詞干提取,、解析、句法分析,、詞性標(biāo)注等任務(wù),。該庫(kù)具備可用于幾乎所有 NLP 任務(wù)的工具。
spaCy 是 NLTK 的主要競(jìng)爭(zhēng)者,。這兩個(gè)庫(kù)可用于同樣的任務(wù),。
scikit-learn 提供一個(gè)用于機(jī)器學(xué)習(xí)的大型庫(kù),包含用于文本預(yù)處理的工具,。
gensim 是用于話題空間建模,、向量空間建模和文檔相似度的工具包。
Pattern 庫(kù)是作為 web 挖掘模塊提供服務(wù)的,,因此,,它也支持 NLP 任務(wù)。
polyglot 是另一個(gè)用于 NLP 的 Python 包,。它不是很流行,,但也可以用于大量 NLP 任務(wù)。
為了更清晰地對(duì)比這些庫(kù),,我們制作了下表來(lái)展示它們的優(yōu)缺點(diǎn),。
更新:2018 年 7 月
結(jié)論
本文對(duì)比了幾個(gè)流行的 NLP 庫(kù)的特征,。盡管大部分庫(kù)適用的任務(wù)有重合,但一些庫(kù)需要用獨(dú)特的方法來(lái)解決特定的問(wèn)題,。確切來(lái)說(shuō),,現(xiàn)在最流行的 NLP 包是 NLTK 和 spaCy。它們是 NLP 領(lǐng)域中的主要競(jìng)爭(zhēng)者,。我們認(rèn)為,,二者之間的差別在于解決問(wèn)題的一般哲學(xué)。
NLTK 更加學(xué)術(shù),。你可以用它嘗試不同的方法和算法,,結(jié)合使用等等。spaCy 為每個(gè)問(wèn)題提供一個(gè)開(kāi)箱即用的解決方案,。你不用思考哪種方法更好:spaCy 的作者已經(jīng)替你考慮了,。此外,spaCy 速度很快(是 NLTK 的好幾倍),。它的一個(gè)缺陷在于支持的語(yǔ)言種類(lèi)有限,。但是,它所支持的語(yǔ)言數(shù)量在持續(xù)增加,。因此,,我們認(rèn)為 spaCy 在大部分情況下是最優(yōu)選,但是如果你想嘗試一些特別的任務(wù),,可以使用 NLTK,。
盡管這兩個(gè)庫(kù)非常流行,但還存在很多不同的選擇,,選擇使用哪個(gè) NLP 包取決于你要解決的問(wèn)題,。