用于自然語言處理的12大開源工具

開發技術 2019-03-28

自然語言處理(NLP),為所有聊天機器人,語音助理,預測文本以及其他滲透到我們生活中的語音/文本應用提供支持的技術,在過去幾年中已經有了長足的發展。本文為大家推薦一些開源NLP工具,幫助大家規劃基于語音或文本的應用程序。

一、Python工具

1. 自然語言工具包(NLTK)

自然語言工具包(NLTK)是最全功能的工具。它幾乎實現了你需要的任何NLP組件,如分類,標記化,解析和語義推理。并且每種方法通常都有多個實現,因此你可以選擇想要使用的確切算法或方法。它還支持多種語言。但是它以字符串的形式表示所有數據,這對于簡單的架構很好,但是很難使用某些高級功能。與其他工具相比,它的發展點慢。總的來說,這是一個很好的工具包,適用于需要特定算法組合的實驗,探索和應用程序。

2. SpaCy

SpaCy是NLTK的主要競爭對手。在大多數情況下它速度更快,但每個NLP組件只有一個實現。此外,它將所有內容表示為對象而不是字符串,這簡化了構建應用程序的界面。這也有助于它與許多其他框架和數據科學工具集成,因此你可以在更好地理解文本數據后執行更多操作。但是,SpaCy不支持與NLTK一樣多的語言。它確實有一個簡單的界面,一組簡化的選擇和優秀的文檔,以及語言處理和分析的各種組件的多個神經模型。總的來說,對于需要在生產中具有高性能并且不需要特定算法的新應用程序來說,這是一個很好的工具。

SpaCy

3. TextBlob

TextBlob是NLTK的擴展。可以通過TextBlob以簡化方式訪問許多NLTK函數,TextBlob還包含Pattern庫中的功能。如果你剛剛開始,這可能是學習時使用的好工具,它可以在生產中用于不需要過度執行的應用程序。總的來說,TextBlob在所有地方都使用,非常適合小型項目。

4. Textacy

Textacy也是一個很棒的工具。它使用SpaCy作為其核心NLP功能,但它處理了處理前后的大量工作。如果你打算使用SpaCy,也可以使用Textacy,這樣就可以輕松地引入許多類型的數據,而無需編寫額外的幫助代碼。

5. PyTorch-NLP

PyTorch-NLP已經推出了一段時間了,但它已經有了一個龐大的社區。它是快速原型制作的絕佳工具。它也經常通過最新的研究進行更新,頂級公司和研究人員已經發布了許多其他工具來進行各種驚人的處理,例如圖像變換。總體而言,PyTorch針對的是研究人員,但它也可以用于原型和初始生產工作負載,并提供最先進的算法。在它之上創建的庫也可能值得研究。

二、Node工具

6. Retext

Retext是unified collective的一部分。Unified是一個允許多個工具和插件有效集成和協同工作的界面。Retext是統一工具使用的三種語法之一;其他是Markmark的Remark和HTML的Rehype。Retext沒有公開它的許多底層技術,而是使用插件來實現你可能用NLP瞄準的結果。這很容易做一些事情,比如檢查拼寫,修復排版,檢測情緒,或確保簡單的插件可以讀取文本。總的來說,如果你只需要完成某些工作而無需了解底層流程中的所有內容,那么這是一個出色的工具和社區。

7. Compromise

Compromise肯定不是最復雜的工具。如果你正在尋找最先進的算法或最完整的系統,這可能不適合你。但是,如果想要一個具有廣泛功能并且可以在客戶端運行的高性能工具,那么你應該看看Compromise。

8. Natural

Natural包含你在一般NLP庫中可能期望的大多數功能。它主要側重于英語,但其他一些語言已經提供,社區對其他貢獻持開放態度。它支持標記化,詞干化,分類,語音,術語頻率——逆文檔頻率,WordNet,字符串相似性和一些變形。它可能與NLTK最具可比性,因為它試圖將所有內容都包含在一個包中,但它更易于使用,并且不一定集中在研究上。總的來說,這是一個非常完整的庫,但它仍處于積極開發階段,可能需要額外的底層實現知識才能完全有效。

9. Nlp.js

Nlp.js建立在其他幾個NLP庫之上,包括Franc和Brain.js。它為NLP的許多組件提供了一個很好的界面,如分類,情感分析,詞干,命名實體識別和自然語言生成。它還支持多種語言,如果你計劃使用非英語以外的其他語言,這將非常有用。總的來說,這是一個很棒的通用工具,它簡化了與其他幾個工具的接口。在你需要更強大或更靈活的功能之前,這可能會在你的應用程序中長期使用。

三、Java工具

10. OpenNLP

OpenNLP由Apache Foundation托管,因此很容易將其集成到其他Apache項目中,如Apache Flink,Apache NiFi和Apache Spark。它是一個通用的NLP工具,涵蓋了NLP的所有常見處理組件,可以從命令行或應用程序中用作庫。它還廣泛支持多種語言。總體而言,OpenNLP是一個功能強大的工具,具有許多功能,并且如果你使用Java,則可以為生產工作負載做好準備。

11. StanfordNLP

Stanford CoreNLP是一組工具,提供統計NLP,深度學習NLP和基于規則的NLP功能。已經創建了許多其他編程語言綁定,因此可以在Java之外使用此工具。它是一個由精英研究機構創建的非常強大的工具,但它可能不是生產工作負載的最佳選擇。此工具具有雙重許可,具有商業用途的特殊許可。總的來說,這是一個很好的研究和實驗工具,但它可能會在生產系統中產生額外的成本。

12. CogCompNLP

由伊利諾伊大學開發的CogCompNLP也有一個具有類似功能的Python庫。它可以用于本地或遠程系統上的文本處理,這可以消除本地設備的巨大負擔。它提供處理功能,例如標記化,詞性標記,分塊,命名實體標記,詞形還原,依賴和選區分析以及語義角色標記。總的來說,這是一個很好的研究工具,它有很多你可以探索的組件。我不確定它對于生產工作負載是否很好,但如果你打算使用Java,那么值得嘗試。


中國· 上海

谷谷二維碼
添加微信咨詢

CopyRight?2009-2019 上海谷谷網絡科技有限公司 All Rights Reserved.  

關于我們 | 聯系我們

捕鱼平台兑换 2779227792王中王手机论坛 天津快乐10分走势 gt时时地址 187极速时时网 广东快乐十分购彩平台 新疆11选5开奖走势 重庆时时最新开奖结果 全年公式规律 北京时时是官方的吗 360老时时走势图表