獨家 | 快速掌握spacy在python中進行自然語言處理(附代碼&連結)

2021-03-06 數據派THU

作者:Paco Nathan

翻譯:笪潔瓊

校對:和中華

本文簡要介紹了如何使用spaCy和Python中的相關庫進行自然語言處理(有時稱為「文本分析」)。以及一些目前最新的相關應用。

本文與配套的Domino項目,簡要介紹了如何使用spaCy和相關庫在Python中處理自然語言(有時稱為「文本分析」)。業界的數據科學團隊時常處理大量文本數據,這也是機器學習中使用的四大數據類別之一,通常是人為生成的文本,但也不全是這樣。想想看:商業世界的「作業系統」是如何運行的? 通常,有合同(銷售合同、工作協議、合作關係),發票,保險單,規章制度和其他法律條文等等。所有這些都被表示為文本。你可能會遇到一些縮寫詞:自然語言處理(NLP),自然語言理解(NLU),自然語言生成(NLG),簡單地說,分別是「閱讀文本」、「理解意義」、「輸出文本」。這些任務越來越多地重疊,而且很難分類。spaCy框架——以及越來越多的插件和其他集成(包)——為各種各樣的自然語言任務提供了支持。它已經成為Python中最廣泛使用的工業級自然語言庫之一,並且擁有相當大的社區,因此,隨著該領域的快速發展,它為科研進展進展的商業化提供了足夠地支持。我們已經在Domino中配置了默認的軟體環境,以包含本教程所需的所有包、庫、模型和數據。請查看Domino項目以運行代碼。

如果您對Domino的計算環境如何工作感興趣,請查看說明頁面。

說明頁面

https://support.dominodatalab.com/hc/en-us/articles/115000392643-Environment-management

import spacynlp = spacy.load("en_core_web_sm")

該nlp變量現在是您通向所有spaCy的入口,並裝載了en_core_web_sm英文模型。接下來,讓我們通過自然語言解析器來運行一個小「文檔」:
text = "The rain in Spain falls mainly on the plain."doc = nlp(text)
for token in doc:    print(token.text, token.lemma_, token.pos_, token.is_stop)

The the DET Truerain rain NOUN Falsein in ADP TrueSpain Spain PROPN Falsefalls fall VERB Falsemainly mainly ADV Falseon on ADP Truethe the DET Trueplain plain NOUN False. . PUNCT False

首先,我們從文本創建一個doc(註:spaCy中的一種數據結構)文檔,它是一個容器,存放了文檔以及文檔對應的標註。然後我們遍歷文檔,看看spaCy解析了什麼。由於信息有點多,讀起來有點困難。讓我們將這個句子的用spaCy解析結果重新格式化為pandas庫的 dataframe:
import pandas as pd
cols = ("text", "lemma", "POS", "explain", "stopword")rows = []
for t in doc: row = [t.text, t.lemma_, t.pos_, spacy.explain(t.pos_), t.is_stop] rows.append(row)
df = pd.DataFrame(rows, columns=cols)
df

在這個簡單的例子中,整個文檔僅僅是一個簡短的句子。對於這個句子中的每個單詞,spaCy都創建了一個token,我們訪問每個token中的欄位來顯示:

原始文本

詞形(lemma)引理——這個詞的詞根形式

詞性(part-of-speech)

是否是停用詞的標誌,比如一個可能會被過濾的常用詞

接下來讓我們使用displaCy庫來可視化這個句子的解析樹:
from spacy import displacy
displacy.render(doc, style="dep")

這會讓你回想起小學時候的語文課嗎? 坦率地說,對於我們這些來自計算語言學背景的人來說,這個圖表會讓我們感到開心。比如,句邊界檢測(SBD)的功能,也稱為句子分割,下例基於內置/默認的語句分析器:
text = "We were all out at the zoo one day, I was doing some acting, walking on the railing of the gorilla exhibit. I fell in. Everyone screamed and Tommy jumped in after me, forgetting that he had blueberries in his front pocket. The gorillas just went wild."
doc = nlp(text)
for sent in doc.sents: print(">", sent)

We were all out at the zoo one day, I was doing some acting, walking on the railing of the gorilla exhibit.I fell in.Everyone screamed and Tommy jumped in after me, forgetting that he had blueberries in his front pocket.The gorillas just went wild.

當spaCy創建一個文檔時,它使用了非破壞性標記原則,這意味著tokens、句子等只是長數組中的索引。換句話說,他們沒有將文本切分成小段。因此,每個句子都是一個span(也是spaCy中的一種數據結構)單獨,包含了它在文檔數組中的開始和結束索引:
for sent in doc.sents:    print(">", sent.start, sent.end)

我們可以在文檔數組上切片,取出一個句子的tokens:
doc[48:54]The gorillas just went wild.

或者只是找一個特定的token,例如最後一句話中的動詞「went」:
token = doc[51]print(token.text, token.lemma_, token.pos_)went go VERB

此時,我們可以解析一個文檔,將該文檔分割成句子,然後查看每個句子中token的注釋。這是一個好的開始。既然我們可以解析文本,那麼我們從哪裡獲得文本呢?一個便利的方法是利用網際網路。當然,當我們下載網頁時,我們會得到HTML文件,然後需要從文件中提取文本。這方面,Beautiful Soup是一個很流行的包。
import sysimport warningswarnings.filterwarnings("ignore")

在下面的函數get_text()中,我們將解析HTML以找到所有的<p/>標記,然後提取這些標記的文本:
from bs4 import BeautifulSoupimport requestsimport traceback
def get_text (url): buf = []
try: soup = BeautifulSoup(requests.get(url).text, "html.parser")
for p in soup.find_all("p"): buf.append(p.get_text())
return "\n".join(buf) except: print(traceback.format_exc()) sys.exit(-1)

現在讓我們從網上獲取一些文本。我們可以對比開源倡議上開源許可的情況。開源倡議:
https://opensource.org/licenses/
lic = {}lic["mit"] = nlp(get_text("https://opensource.org/licenses/MIT"))lic["asl"] = nlp(get_text("https://opensource.org/licenses/Apache-2.0"))lic["bsd"] = nlp(get_text("https://opensource.org/licenses/BSD-3-Clause"))for sent in lic["bsd"].sents:    print(">", sent)

> SPDX short identifier: BSD-3-Clause> Note: This license has also been called the "New BSD License" or  "Modified BSD License"> See also the 2-clause BSD License.…

例如,有了這些開源許可,我們可以下載它們的文本,進行解析,然後比較它們之間的相似度:(https://spacy.io/api/doc#similarity)
pairs = [    ["mit", "asl"],     ["asl", "bsd"],     ["bsd", "mit"]]
for a, b in pairs:print(a, b, lic[a].similarity(lic[b]))

mit asl 0.9482039305669306asl bsd 0.9391555350757145bsd mit 0.9895838089575453

這很有趣,因為BSD(https://opensource.org/licenses/BSD-3-Clause)和MIT(https://opensource.org/licenses/MIT)許可似乎是最相似的文檔。無可否認,由於OSI的免責聲明,每個文檔中都包含了一些額外的文本——但是這為比較許可證提供了一個合理的近似值。

現在讓我們深入了解一下spaCy中的NLU特性。假設我們要解析有一個文檔,從純語法的角度來看,我們可以提取名詞塊(https://spacy.io/usage/linguistic-features#noun-chunks),即每個名詞短語:

text = "Steve Jobs and Steve Wozniak incorporated Apple Computer on January 3, 1977, in Cupertino, California."doc = nlp(text)
for chunk in doc.noun_chunks: print(chunk.text)

Steve JobsSteve WozniakApple ComputerJanuaryCupertinoCalifornia

句子中的名詞短語通常提供更多的信息內容——作為一個簡單的過濾器,可以將長文檔簡化為更「精練」的表達。我們可以進一步採用這種方法,並在文本中標識命名實體(https://spacy.io/usage/linguistic-features#named-entities),即專有名詞:
for ent in doc.ents:   print(ent.text, ent.label_)

displacy.render(doc, style="ent")

如果你正在使用知識圖譜(https://www.akbc.ws/2019/)的應用程式和其他關聯數據(http://linkeddata.org/),那麼構建文檔中的命名實體和其他相關信息的聯繫就是一種挑戰,即文本連結(http://nlpprogress.com/english/entity_linking.html)。識別文檔中的命名實體是這類型AI工作的第一步。例如,根據上面的文本,可以將「Steve Wozniak」這個命名實體連結到DBpedia中的查找連結(http://dbpedia.org/page/Steve_Wozniak)。

 

一般來說,人們還可以將詞形與描述其含義的資源聯繫起來。例如,在前面的章節中,我們分析了「the gorillas just went wild」這個句子,並展示「went」這個詞的詞形是動詞go。此時,我們可以使用一個歷史悠久的項目WordNet (https://wordnet.princeton.edu/),它為英語提供了一個詞彙資料庫——換句話說,它是一個可計算的近義詞典。有一個針對WordNet的spaCy集成,名為spaCy - WordNet (https://github.com/recognai/spacy-wordnet),作者是Daniel Vila Suero(https://twitter.com/dvilasuero),他是自然語言和知識圖譜研究的專家。
import nltknltk.download("wordnet")[nltk_data] Downloading package wordnet to /home/ceteri/nltk_data...[nltk_data] Package wordnet is already up-to-date!True

請注意,spaCy像「管道(pipeline)」一樣運行,並允許使用自定義的管道組件。這對於在數據科學中支持工作流是非常好的。在這裡,我們將添加來自spacy-wordnet項目的Wordnet注釋(器):
from spacy_wordnet.wordnet_annotator import WordnetAnnotatorprint("before", nlp.pipe_names)if "WordnetAnnotator" not in nlp.pipe_names:    nlp.add_pipe(WordnetAnnotator(nlp.lang), after="tagger")print("after", nlp.pipe_names)before ['tagger', 'parser', 'ner']after ['tagger', 'WordnetAnnotator', 'parser', 'ner']

例如,在WordNet(http://wordnetweb.princeton.edu/perl/webwn?s=star&sub=Search+WordNet&o2&o0=1&o8=1&o1= 1&o1=1&o7&o5&o9&o6&o3&o4&h)搜索與單詞withdraw相關的詞義。
token = nlp("withdraw")[0]token._.wordnet.synsets()

[Synset('withdraw.v.01'),Synset('retire.v.02'),Synset('disengage.v.01'),Synset('recall.v.07'),Synset('swallow.v.05'),Synset('seclude.v.01'),Synset('adjourn.v.02'),Synset('bow_out.v.02'),Synset('withdraw.v.09'),Synset('retire.v.08'),Synset('retreat.v.04'),Synset('remove.v.01')]

[Lemma('withdraw.v.01.withdraw'),Lemma('withdraw.v.01.retreat'),Lemma('withdraw.v.01.pull_away'), Lemma('withdraw.v.01.draw_back'), Lemma('withdraw.v.01.recede'),Lemma('withdraw.v.01.pull_back'), Lemma('withdraw.v.01.retire'),…

token._.wordnet.wordnet_domains()

['astronomy','school','telegraphy','industry','psychology','ethnology','ethnology','administration','school','finance','economy','exchange','banking','commerce','medicine','ethnology', 'university',…

同樣,如果你使用的是知識圖譜,那麼可以將來自WordNet的那些「詞義」連結與圖算法一起使用,以幫助識別特定單詞的含義。還可以通過一種稱為「摘要」的技術來為較大的文本段生成摘要。這些內容超出了本教程的範圍,但它是目前工業中一個有趣的自然語言應用。反過來說,如果你預先知道某個文檔是關於某個特定領域或主題集的,則可以約束WordNet返回的含義。在下面的例子中,我們來考慮金融和銀行領域數據的NLU結果:
domains = ["finance", "banking"]sentence = nlp("I want to withdraw 5,000 euros.")
enriched_sent = []
for token in sentence: # get synsets within the desired domains synsets = token._.wordnet.wordnet_synsets_for_domain(domains)
if synsets: lemmas_for_synset = []
for s in synsets: # get synset variants and add to the enriched sentence lemmas_for_synset.extend(s.lemma_names()) enriched_sent.append("({})".format("|".join(set(lemmas_for_synset)))) else: enriched_sent.append(token.text)
print(" ".join(enriched_sent))

I (require|want|need) to (draw_off|withdraw|draw|take_out) 5,000 euros .

這個例子看起來很簡單,但是,如果你修改domains列表,你會發現在沒有合理約束的情況下,結果會產生組合爆炸。想像一下,有一個包含數百萬元素的知識圖譜:您希望在可能的地方限制搜索,以避免計算每個查詢需要幾天、幾周、幾個月、幾年的時間。有時在試圖理解文本時遇到的問題—或者在試圖理解語料庫(包含許多相關文本的數據集)時遇到的問題—會變得非常複雜,您需要首先將其可視化。這有是一個用於理解文本的交互式可視化工具:scattertext(https://spacy.io/universe/project/scattertext),由Jason Kessler主導設計。 https://twitter.com/jasonkessler讓我們來分析一下2012年美國總統大選期間政黨大會的文本數據。注意:這個部分可能需要幾分鐘來運行,但是所有這些數據處理的結果值得等待。
import scattertext as st if "merge_entities" not in nlp.pipe_names:    nlp.add_pipe(nlp.create_pipe("merge_entities")) if "merge_noun_chunks" not in nlp.pipe_names:    nlp.add_pipe(nlp.create_pipe("merge_noun_chunks")) convention_df = st.SampleCorpora.ConventionData2012.get_data()corpus = st.CorpusFromPandas(convention_df, category_col="party",                            text_col="text",                            nlp=nlp).build()

一旦語料庫準備好了,就可以生成一個交互式可視化的HTML:
html = st.produce_scattertext_explorer(    corpus,    category="democrat",    category_name="Democratic",    not_category_name="Republican",    width_in_pixels=1000,    metadata=convention_df["speaker"])

from IPython.display import IFrame 
file_name = "foo.html" with open(file_name, "wb") as f: f.write(html.encode("utf-8")) IFrame(src=file_name, width = 1200, height=700)

想像一下,如果你的組織中有過去三年客戶支持某個特定產品的文本。假設您的團隊需要了解客戶是如何談論該產品的? 這個scattertext庫可能會非常方便! 您可以將(k=2)聚類在NPS得分(客戶評估指標)上,然後用聚類中的前兩個分類替換民主黨/共和黨維度。

總結

五年前,如果你詢問用Python中的自然語言的開源庫,許多數據科學工作者的默認答案是NLTK(https://www.nltk.org/)。這個項目幾乎包括了所有的東西,除了一些細微的設置,還有一些相對學術的部分。另一個流行的自然語言項目是來自斯坦福的CoreNLP (https://stanfordnlp.github)。儘管CoreNLP功能強大,但它也非常學術化,不過要將它與其他軟體集成以供生產使用是很有挑戰性的。幾年前,自然語言的一切都開始發生了變化。spaCy的兩位主要作者——馬修•洪尼巴爾(Matthew Honnibal, https://twitter.com/honnibal)和伊內斯•蒙塔尼(Ines Montani, https://twitter.com/_inesmontani)於2015年啟動了該項目,該項目很快被業界採用。他們採用的是一種專注的方法(做需要做的,把它做好,不多也不少),這種方法能簡單、快速地集成到Python中的數據科學工作集合中,並且比其他方法執行更快、準確性更好。基於這些,spaCy成為了NLTK的對立面。自2015年以來,spaCy一直致力於成為一個開源項目(即,取決於其社區的方向,集成等)和商業級軟體(而非學術研究)。也就是說,spaCy迅速地將機器學習方面的最前沿進展納入中,有效地成為了將學術研究推廣到工業領域的渠道。

值得注意的是,隨著谷歌開始贏得國際語言翻譯比賽,用於自然語言的的機器學習自2000年中期得到了很大的發展。2017年至2018年期間,隨著深度學習的諸多成功,這些方法開始超越以前的機器學習模型,出現了另一個重大變化。

例如,經Allen AI研究提出的看到ELMo 語言嵌入模型, 隨後是谷歌的BERT,(https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html),以及最近由

(https://medium.com/syncedreview/baidus-ernie-tops-google-s-bert-in-chinese-nlp-tasks-d6a42b49223d)——換句話說,搜尋引擎巨頭為我們獻上了一份基於深度學習的嵌入語言模型開源大禮的世界,目前是業界最先進的。說到這裡,為了緊隨自然語言的SOTA,可以關注NLP-Progress(http://nlpprogress.com/)和Papers with Cod(https://paperswithcode.com/sota)。在過去的兩年裡,隨著深度學習技術的興起,自然語言的用例發生了巨大的變化。大約在2014年,使用Python的自然語言教程可能還在教單詞統計、關鍵字搜索或情感檢測,而且目標用例相對顯得平淡無奇。而在2019年,我們談論的是在一個產業供應鏈的優化中分析成千上萬的供應商合同文件,或者是為保險公司分析的投保人數億份文件,又或者是大量關於財務數據披露的文件。更現代的自然語言工作傾向於在NLU,通常支持知識圖譜的構建,在NLG領域,大量類似的文檔可以被大規模地總結。廣闊的宇宙(https://spacy.io/universe)很不錯,可以查找特定用例的深度,並查看這個領域是如何發展的。這個「宇宙」的一些選擇包括:blackstone(https://spacy.io/universe/project/blackstone)-解析非結構化法律信息文本kindred(https://spacy.io/universe/project/kindred) -從生物醫學文本(如Pharma)中提取實體mordecai(https://spacy.io/universe/project/mordecai)-解析地理信息Prodigy(https://spacy.io/universe/project/prodigy)-人機迴圈的標籤數據集注釋spacy-raspberry (https://spacy.io/universe/project/spacy-raspberry) - 樹莓派(Raspberry PI)圖像,用於在邊界設備上運行。Rasa NLU(https://spacy.io/universe/project/rasa)聊天應用的集合spacy-pytorch-transformers (https://explosion.ai/blog/spacy-pytorch-transformers)可以用來與BERT, GPT-2, XLNet,等等進行調整。spaCy IRL 2019(https://irl.spacy.io/2019/)會議-寬大的IRL 2019(https://irl.spacy.io/2019/)會議-查看演講視頻!對於spaCy,我們可以做的還有很多——希望本教程能夠提供介紹。我們祝願你在自然語言學習方面一切順利。對於spaCy,我們可以做的還有很多——希望本教程能夠提供介紹。我們祝願你在自然語言學習方面一切順利。https://www.kdnuggets.com/2019/09/natural-language-python-using-spacy-introduction.html

笪潔瓊,中南財大MBA在讀,目前研究方向:金融大數據。目前正在學習如何將py等其他軟體廣泛應用於金融實際操作中,例如抓包預測走勢(不會預測股票/虛擬幣價格)。可能是金融財務中最懂建築設計(風水方向)的長腿女生。花式調酒機車衝沙。上賽場裡跑過步開過車,商院張掖絲路挑戰賽3天徒步78公裡。大美山水心欲往,凜冽風雨信步行

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。

點擊文末「閱讀原文」加入數據派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:datapi),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公眾號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

發布後請將連結反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。


點擊「閱讀原文」擁抱組織

相關焦點

  • 快速掌握 Spacy 在 Python 中進行自然語言處理
    (點擊上方公眾號,可快速關注)轉自:數據派THU  英文:Paco Nathan  翻譯:笪潔瓊本文與配套的Domino項目,簡要介紹了如何使用
  • 自然語言處理庫spaCy號稱最快句法分析器
    【IT168 評論】spaCy是Python和Cython中的高級自然語言處理庫,它建立在最新的研究基礎之上,從一開始就設計用於實際產品。spaCy帶有預先訓練的統計模型和單詞向量,目前支持20多種語言的標記。它具有世界上速度最快的句法分析器,用於標籤的卷積神經網絡模型,解析和命名實體識別以及與深度學習整合。它是在MIT許可下發布的商業開源軟體。
  • 自然語言處理NLP快速入門
    【導讀】自然語言處理已經成為人工智慧領域一個重要的分支,它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。
  • 教你用Python進行自然語言處理(附代碼)
    自然語言處理是數據科學中的一大難題。在這篇文章中,我們會介紹一個工業級的python庫。自然語言處理(NLP)是數據科學中最有趣的子領域之一,越來越多的數據科學家希望能夠開發出涉及非結構化文本數據的解決方案。儘管如此,許多應用數據科學家(均具有STEM和社會科學背景)依然缺乏NLP(自然語言處理)經驗。
  • NLP入門+實戰必讀:一文教會你最常見的10種自然語言處理技術(附代碼)
    大數據文摘作品編譯:糖竹子、吳雙、錢天培自然語言處理(NLP)是一種藝術與科學的結合,旨在從文本數據中提取信息。在它的幫助下,我們從文本中提煉出適用於計算機算法的信息。從自動翻譯、文本分類到情緒分析,自然語言處理成為所有數據科學家的必備技能之一。
  • 在Python中使用SpaCy進行文本分類
    【導讀】在這篇文章中,我們將學習如何使用SpaCy進行文本分類, spaCy是Python中流行且易於使用的自然語言處理庫。
  • 快100 倍,Python 為自然語言處理加速度!
    在這段代碼中,我還使用了cymem(https://github.com/explosion/cymem)提供的方便的 Pool() 內存管理對象,這樣就不用手動釋放 C 數組了。在 Python 對 Pool 進行垃圾回收時,就會自動釋放所有通過 Pool 分配的內存。
  • 快 100 倍,Python 為自然語言處理加速度!
    沒有字符串操作,沒有 Unicode 編碼,自然語言處理中的難點都沒有支持啊!StringStore 可以從 spaCy 中的任何地方、任何對象中訪問,例如可以通過 nlp.vocab.string、doc.vocab.strings 或 span.doc.vocab.string 等。當模塊需要在某些 token 上進行快速處理時,它只會使用 C 語言層次上的 64 比特 hash,而不是使用原始字符串。
  • 一文學會最常見的10種NLP處理技術(附資源&代碼)
    自然語言處理(NLP)是一種藝術與科學的結合,旨在從文本數據中提取信息。在它的幫助下,我們從文本中提煉出適用於計算機算法的信息。從自動翻譯、文本分類到情緒分析,自然語言處理成為所有數據科學家的必備技能之一。在這篇文章中,你將學習到最常見的10個NLP任務,以及相關資源和代碼。
  • 獨家 | 秘籍:10個Python字符串處理技巧(附代碼)
    本文為你介紹利用Python處理字符串的一些基本操作。在探尋文本分析途徑時卻不知從何下手,該怎麼辦?那麼可以通過這個字符串處理入門教程,來了解一下利用Python處理字符串的一些基本操作。當前,自然語言處理和文本分析是研究和應用的熱點領域。
  • NLP入門+實戰必讀:一文教會你最常見的10種自然語言處理技術
    大數據文摘作品編譯:糖竹子、吳雙、錢天培自然語言處理(NLP)是一種藝術與科學的結合,旨在從文本數據中提取信息。在它的幫助下,我們從文本中提煉出適用於計算機算法的信息。從自動翻譯、文本分類到情緒分析,自然語言處理成為所有數據科學家的必備技能之一。在這篇文章中,你將學習到最常見的10個NLP任務,以及相關資源和代碼。為什麼要寫這篇文章?
  • 獨家|使用Python進行機器學習的假設檢驗(附連結&代碼)
    我把所有這些概念放在一起,並使用python進行示例。什麼是假設檢驗?我們為什麼用它?什麼是假設的基本條件?什麼是假設檢驗的重要參數?假設檢驗是一種統計方法,用於使用實驗數據進行統計決策。假設檢驗基本上是我們對人口參數做出的假設。
  • 數據科學家最喜歡的5個自然語言處理Python庫
    由於其特殊的特性,我們無法以一種簡單的方式處理數據,為了解決這一問題,在大數據和數據科學環境下,出現了許多技術和工具來解決這一問題。自然語言處理是人工智慧領域的前沿技術之一。它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。NLP的最終目標是以一種有價值的方式閱讀、破譯、理解和理解人類語言。
  • 如何用iPad運行Python代碼?
    (由於微信公眾號外部連結的限制,文中的部分連結可能無法正確打開。如有需要,請點擊文末的「閱讀原文」按鈕,訪問可以正常顯示外鏈的版本。)痛點我組織過幾次線下編程工作坊,帶著同學們用Python處理數據科學問題。其中最讓人頭疼的,就是運行環境的安裝。
  • 使用Python中的NLTK和spaCy刪除停用詞與文本標準化
    介紹多樣化的自然語言處理(NLP)是真的很棒,我們以前從未想像過的事情現在只是幾行代碼就可做到。這真的令人開心。但使用文本數據會帶來一系列挑戰。機器在處理原始文本方面有著較大的困難。在使用NLP技術處理文本數據之前,我們需要執行一些稱為預處理的步驟。
  • 秘籍:10個Python字符串處理技巧(附代碼)
    本文為你介紹利用Python處理字符串的一些基本操作。在探尋文本分析途徑時卻不知從何下手,該怎麼辦?那麼可以通過這個字符串處理入門教程,來了解一下利用Python處理字符串的一些基本操作。當前,自然語言處理和文本分析是研究和應用的熱點領域。
  • PyTorch-Transformers:最先進的自然語言處理庫(附帶python代碼)
    – Sebastian Ruder想像一下我們有能力構建支持谷歌翻譯的自然語言處理(NLP)模型,並且在Python中僅需幾行代碼來完成,這聽起來是不是讓人非常興奮。而現在我們就可以坐在自己的機器前實現這個了!
  • 【獨家】自然語言處理(NLP)入門指南
    在線課程•  Dan Jurafsky 和 Chris Manning:自然語言處理[非常棒的視頻介紹系列]https://www.youtube.com/watch?v=nfoudtpBV68&list=PL6397E4B26D00A269 •  斯坦福CS224d:自然語言處理的深度學習[更高級的機器學習算法、深度學習和NLP的神經網絡架構]http://cs224d.stanford.edu/syllabus.html •  Coursera:自然語言處理簡介[由密西根大學提供的NLP
  • 用Python進行機器學習(附代碼、學習資源)
    本文從非線性數據進行建模,帶你用簡便並且穩健的方法來快速實現使用Python進行機器學習。使用Python庫、流水線功能以及正則化方法對非線性數據進行建模。在數據科學和分析領域中,對非線性數據進行建模是一項常規任務。但找到一個結果隨自變量線性變化的自然過程很不容易。
  • 基於NLTK的Python自然語言處理-字符串的操作(切分)
    上篇文檔已經介紹了做自然語言處理中我們使用比較的python語言,以及使用的python集成開發環境(IDE,Integrated Development Environment )。從本篇文章將陸續介紹如何使用python進行自然語言處理。