spaCy 是一個Python自然語言處理工具包,誕生於2014年
㈡ python和人工智慧有什麼關系
人工智慧是研究、開發用於模擬、延伸和擴展人的智能的理論、方法、技術及應
用系統的一門新的技術科學。人工智慧是計算機科學的一個分支,它企圖了解智
能的實質,並生產出一種新的能以人類智能相似的方式做出反應的智能機器,該
領域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。
Python因簡單高效、優質的文檔、強大的AI庫、海量的模塊,成為研究AI最
常用的開發語言。由於ExplosionAI是基於Python的NLP庫spaCy的製作者,
所以調查中Python開發者佔多數。
人工智慧在近幾年的發展因相關政策的支持,相應產業發展迅速,崗位需求也在
不斷增加,相應的崗位薪資也是很可觀的。Python編程一般是學習人工智慧的
必備基礎。
㈢ ipad能用來學習python嗎
人工智慧+區塊鏈的發展趨勢及應用調研報告
其實,不只是iPad,手機也可以。
痛點
我組織過幾次線下編程工作坊,帶著同學們用Python處理數據科學問題。
其中最讓人頭疼的,就是運行環境的安裝。
實事求是地講,參加工作坊之前,我已經做了認真准備。
例如集成環境,選用了對用戶很友好的Anaconda。
代碼在我的Macbook電腦上跑,沒有問題。還拿到學生的Windows 7上跑,也沒有問題。這才上傳到了Github。
在發布的教程文章里,我也已經把安裝軟體包的說明寫得非常詳細。
還針對 Anaconda 這一 Python 運行環境的安裝和運行,專門錄制了視頻。
但是,工作坊現場遇見的問題,依然五花八門。
有的是操作系統。例如你可能用Windows 10。實話實說,我確實沒用過。拿著Surface端詳,連安裝後的Anaconda文件夾都找不到在哪兒。
有的是編碼。不同操作系統,有的默認中文編碼是UTF-8,有的是GBK。同樣一段中文文本,我這里顯示一切正常,你那裡就是亂碼。
有的是套件路徑。來參加工作坊前,你可能看過我一些教程,並安裝了 Python 2.7 版本 Anaconda。來到現場,一看需要 Python 3.6 版本,你就又安裝了一份新的。結果執行起來,你根本分不清運行的 Python, pip 命令來自哪一個套件,更搞不清楚軟體包究竟安裝到哪裡去了。再加上虛擬環境配置,你就要抓狂了。
還有的,甚至是網路擁塞問題。因為有時需要現場安裝調用體積龐大的軟體包,幾十台電腦「預備——齊」一起爭搶有限的Wifi帶寬,後果可想而知。
痛定思痛,我決定改變一下現狀。
目前的教程只提供基礎源代碼。對於許多新手同學來說,是不夠的。
許多同學,就倒在了安裝依賴軟體包的路上,繼而乾脆放棄了。
變通的辦法有許多。例如乾脆錄制代碼執行視頻給你看。
但是正如我在《MOOC教學,什麼最重要?》一文中說過的,學習過程里,反饋最重要。
你需要能運行代碼,並且第一時間獲得結果反饋。
在此基礎上,你還得能修改代碼,對比前後執行結果的差別。
我得給你提供一個直接可以運行的環境。
零安裝,自然也就沒了上述煩惱。
這個事兒可能嗎?
我研究了一下,沒問題。
只要你的設備上有個現代化瀏覽器(包括但不限於Google Chrome, Firefox, Safari和Microsoft Edge等)就行。
IE 8.0?
那個不行,趕緊升級吧!
讀到這里,你應該想明白了。因為只挑瀏覽器,不挑操作系統,所以別說你用Windows 10,你就是用iPad,都能運行代碼。
嘗試
請你打開瀏覽器,輸入這個鏈接(http://t.cn/R35fElv)。
看看會發生什麼?
我這里用iPad給你演示。
一開始會有個啟動界面出來。請你稍等10幾秒鍾。
然後,你就能看到熟悉的Python代碼運行界面了。
這個界面來自 Jupyter Lab。
你可以將它理解為 Jupyter Notebook 的增強版,它具備以下特徵:
代碼單元直接滑鼠拖動; 一個瀏覽器標簽,可打開多個Notebook,而且分別使用不同的Kernel; 提供實時渲染的Markdown編輯器; 完整的文件瀏覽器; CSV數據文件快速瀏覽 ……
圖中左側分欄,是工作目錄下的全部文件。
右側打開的,是咱們要使用的ipynb文件。
為了證明這不是逗你玩兒,請你點擊右側代碼上方工具欄的運行按鈕。
點擊一下,就會運行出當前所在代碼單元的結果。
不斷點擊下來,你可以看見,結果都被正常渲染。
連圖像也能正常顯示。
甚至連下面這種需要一定運算量的可視化結果,都沒問題。
為了證明這不是變魔術,你可以在新的單元格,寫一行輸出語句。
就讓Python輸出你的名字吧。
假如你叫 Chuck,就這樣寫:
print("Hello, Chuck!")
把它替換成你自己的姓名,看看輸出結果是否正確?
其實,又何止是iPad而已?
你如果足夠勇(sang) 於(xin) 嘗(bing) 試(kuang),手機其實也是可以的。
就像這樣。
流程
下面我給你講講,這種效果是怎麼做出來的。
我們需要用到一款工具,叫做 mybinder 。它可以幫助我們,把 github 上的某個代碼倉庫(repo),快速轉換成為一個可運行的環境。
注意 mybinder 為我們提供了雲設施,也就是計算資源和存儲資源。因此即便許許多多的用戶同時在線使用同一份代碼轉換出來的環境,也不會互相沖突。
我們先來看看,怎麼准備一個可供 mybinder 順利轉換的代碼倉庫。
我為你提供的樣例在這里(http://t.cn/R35MEqk):
順便說一句,這個樣例來自於我的數據科學系列教程之《如何用Python處理自然語言?(Spacy與Word dding)》。感興趣的同學可以點擊鏈接,查看原文。
在該 GitHub 頁面展示的文件列表中,你需要注意以下3個文件:
demo.ipynb environment.yml postBuild
㈣ python庫有哪些
Python比較常見的庫有:Arrow、Behold、Click、Numba、Matlibplot、Pillow等:
1、Arrow
Python中處理時間的庫有datetime,但是它過於簡單,使用起來不夠方便和智能,而Arrow可以說非常的方便和智能。它可以輕松地定位幾個小時之前的時間,可以輕松轉換時區時間,對於一個小時前,2個小時之內這樣人性化的信息也能夠准確解讀。
2、Behold
調試程序是每個程序員必備的技能,對於腳本語言,很多人習慣於使用print進行調試,然而對於大項目來說,print的功能還遠遠不足,我們希望有一個可以輕松使用,調試方便,對變數監視完整,格式已於查看的工具,而Behold就是那個非常好用的調試庫。
3、Click
現在幾乎所有的框架都有自己的命令行腳手架,Python也不例外,那麼如何快速開發出屬於自己的命令行程序呢?答案就是使用Python的Click庫。Click庫對命令行api進行了大量封裝,你可以輕松開發出屬於自己的CLI命令集。終端的顏色,環境變數信息,通過Click都可以輕松進行獲取和改變。
4、Numba
如果你從事數學方面的分析和計算,那麼Numba一定是你必不可少的庫。Numpy通過將高速C庫包裝在Python介面中來工作,而Cython使用可選的類型將Python編譯為C以提高性能。但是Numba無疑是最方便的,因為它允許使用裝飾器選擇性地加速Python函數。
5、Matlibplot
做過數據分析,數據可視化的數學學生一定知道matlab這個軟體,這是一個收費的數學商用軟體,在Python中,Matlibplot就是為了實現這個軟體中功能開發的第三方Python庫。並且它完全是免費的,很多學校都是用它來進行數學教學和研究的。
6、Pillow
圖像處理是任何時候我們都需要關注的問題,平時我們看到很多ps中的神技,比如調整畫面顏色,飽和度,調整圖像尺寸,裁剪圖像等等,這些其實都可以通過Python簡單完成,而其中我們需要使用的庫就是Pillow。
7、pyqt5
Python是可以開發圖形界面程序的。而pyqt就是一款非常好用的第三方GUI庫,有了它,你可以輕松開發出跨平台的圖形應用程序,其中qtdesigner設計器,更是加速了我們開發圖形界面的速度。
除了上述介紹的之外,Python還有很多庫,比如:Pandas、NumPy、SciPy、Seaborn、Keras等。
㈤ python常用的資料庫有哪些
主流的關系型資料庫:
1. MySQL:目前使用最廣泛的開源、多平台的關系型資料庫,支持事務、符合ACID、支持多數SQL規范。
2. SQL Server:支持事務、符合ACID、支持多數SQL規范,屬於商業軟體,需要注意版權和licence授權費用。
3. Oracle:支持事務,符合關系型資料庫原理,符合ACID,支持多數SQL規范,功能最強大、最復雜、市場佔比最高的商業資料庫。
4. Postgresql:開源、多平台、關系型資料庫,功能最強大的開源資料庫,需要Python環境,基於postgresql的time
scaleDB,是目前比較火的時序資料庫之一。
非關系型資料庫
Redis:開源、Linux平台、key-value鍵值型nosql資料庫,簡單穩定,非常主流的、全數據in-momory,定位於快的鍵值型nosql資料庫。
Memcaced:一個開源的、高性能的、具有分布式內存對象的緩存系統,通過它可以減輕資料庫負載,加速動態的web應用。
面向文檔資料庫以文檔的形式存儲,每個文檔是一系列數據項的集合,每個數據項有名稱與對應的值,主要產品有:
MongoDB:開源、多平台、文檔型nosql資料庫,最像關系型資料庫,定位於靈活的nosql資料庫。適用於網站後台資料庫、小文件系統、日誌分析系統。
㈥ R,Python,Scala 和 Java,到底該使用哪一種大數據編程語言
如果你對晦澀的統計運算進行繁重的數據分析工作,那麼你不青睞R才怪。如果你跨GPU進行NLP或密集的神經網路處理,那麼Python是很好的選擇。如果想要一種加固的、面向生產環境的數據流解決方案,又擁有所有重要的操作工具,Java或Scala絕對是出色的選擇。
有一個大數據項目,你知道問題領域(problem domain),也知道使用什麼基礎設施,甚至可能已決定使用哪種框架來處理所有這些數據,但是有一個決定遲遲未能做出:我該選擇哪種語言?(或者可能更有針對性的問題是,我該迫使我的所有開發人員和數據科學家非要用哪種語言?)這個問題不會推遲太久,遲早要定奪。
當然,沒有什麼阻止得了你使用其他機制(比如XSLT轉換)來處理大數據工作。但通常來說,如今大數據方面有三種語言可以選擇:R、Python和Scala,外加一直以來屹立於企業界的Java。那麼,你該選擇哪種語言?為何要選擇它,或者說何時選擇它?
下面簡要介紹了每種語言,幫助你做出合理的決定。
R
R經常被稱為是「統計人員為統計人員開發的一種語言」。如果你需要深奧的統計模型用於計算,可能會在CRAN上找到它――你知道,CRAN叫綜合R檔案網路(Comprehensive R Archive Network)並非無緣無故。說到用於分析和標繪,沒有什麼比得過ggplot2。而如果你想利用比你機器提供的功能還強大的功能,那可以使用SparkR綁定,在R上運行Spark。
然而,如果你不是數據科學家,之前也沒有用過Matlab、SAS或OCTAVE,可能需要一番調整,才能使用R來高效地處理。雖然R很適合分析數據,但是就一般用途而言不太擅長。你可以用R構建模型,但是你需要考慮將模型轉換成Scala或Python,才能用於生產環境,你不太可能使用這種語言編寫一種集群控制系統(運氣好的話,你可以對它進行調試)。
Python
如果你的數據科學家不使用R,他們可能就會徹底了解Python。十多年來,Python在學術界當中一直很流行,尤其是在自然語言處理(NLP)等領域。因而,如果你有一個需要NLP處理的項目,就會面臨數量多得讓人眼花繚亂的選擇,包括經典的NTLK、使用GenSim的主題建模,或者超快、准確的spaCy。同樣,說到神經網路,Python同樣游刃有餘,有Theano和Tensorflow;隨後還有面向機器學習的scikit-learn,以及面向數據分析的NumPy和Pandas。
還有Juypter/iPython――這種基於Web的筆記本伺服器框架讓你可以使用一種可共享的日誌格式,將代碼、圖形以及幾乎任何對象混合起來。這一直是Python的殺手級功能之一,不過這年頭,這個概念證明大有用途,以至於出現在了奉行讀取-讀取-輸出-循環(REPL)概念的幾乎所有語言上,包括Scala和R。
Python往往在大數據處理框架中得到支持,但與此同時,它往往又不是「一等公民」。比如說,Spark中的新功能幾乎總是出現在Scala/Java綁定的首位,可能需要用PySpark編寫面向那些更新版的幾個次要版本(對Spark Streaming/MLLib方面的開發工具而言尤為如此)。
與R相反,Python是一種傳統的面向對象語言,所以大多數開發人員用起來會相當得心應手,而初次接觸R或Scala會讓人心生畏懼。一個小問題就是你的代碼中需要留出正確的空白處。這將人員分成兩大陣營,一派覺得「這非常有助於確保可讀性」,另一派則認為,2016年,我們應該不需要就因為一行代碼有個字元不在適當的位置,就要迫使解釋器讓程序運行起來。
Scala
現在說說Scala:在本文介紹的四種語言中,Scala是最輕松的語言,因為大家都欣賞其類型系統。Scala在JVM上運行,基本上成功地結合了函數範式和面向對象範式,目前它在金融界和需要處理海量數據的公司企業中取得了巨大進展,常常採用一種大規模分布式方式來處理(比如Twitter和LinkedIn)。它還是驅動Spark和Kafka的一種語言。
由於Scala在JVM裡面運行,它可以立即隨意訪問Java生態系統,不過它也有一系列廣泛的「原生」庫,用於處理大規模數據(尤其是Twitter的Algebird和Summingbird)。它還包括一個使用非常方便的REPL,用於互動式開發和分析,就像使用Python和R那樣。
我個人非常喜歡Scala,因為它包括許多實用的編程功能,比如模式匹配,而且被認為比標準的Java簡潔得多。然而,用Scala來開發不止一種方法,這種語言將此作為一項特色來宣傳。這是好事!不過考慮到它擁有圖靈完備(Turing-complete)的類型系統和各種彎彎曲曲的運算符(「/:」代表foldLeft,「:\」代表foldRight),很容易打開Scala文件,以為你看到的是某段討厭的Perl代碼。這就需要在編寫Scala時遵循一套好的實踐和准則(Databricks的就很合理)。
另一個缺點是,Scala編譯器運行起來有點慢,以至於讓人想起以前「編譯!」的日子。不過,它有REPL、支持大數據,還有採用Jupyter和Zeppelin這一形式的基於Web的筆記本框架,所以我覺得它的許多小問題還是情有可原。
Java
最終,總是少不了Java――這種語言沒人愛,被遺棄,歸一家只有通過起訴谷歌才有錢可賺時才似乎關心它的公司(註:Oracle)所有,完全不時髦。只有企業界的無人機才使用Java!不過,Java可能很適合你的大數據項目。想一想Hadoop MapRece,它用Java編寫。HDFS呢?也用Java來編寫。連Storm、Kafka和Spark都可以在JVM上運行(使用Clojure和Scala),這意味著Java是這些項目中的「一等公民」。另外還有像Google Cloud Dataflow(現在是Apache Beam)這些新技術,直到最近它們還只支持Java。
Java也許不是搖滾明星般備受喜愛的首選語言。但是由於研發人員在竭力理清Node.js應用程序中的一套回調,使用Java讓你可以訪問一個龐大的生態系統(包括分析器、調試器、監控工具以及確保企業安全和互操作性的庫),以及除此之外的更多內容,大多數內容在過去二十年已久經考驗(很遺憾,Java今年迎來21歲,我們都老矣)。
炮轟Java的一個主要理由是,非常繁瑣冗長,而且缺少互動式開發所需的REPL(R、Python和Scala都有)。我見過10行基於Scala的Spark代碼迅速變成用Java編寫的變態的200行代碼,還有龐大的類型語句,它們占據了屏幕的大部分空間。然而,Java 8中新的Lambda支持功能對於改善這種情況大有幫助。Java從來不會像Scala那麼緊湊,但是Java 8確確實實使得用Java進行開發不那麼痛苦。
至於REPL?好吧,目前還沒有。明年推出的Java 9會包括JShell,有望滿足你的所有REPL要求。