NLP入門+實戰必讀:一文教會你最常見的10種自然語言處理技術

NLP入門+實戰必讀:一文教會你最常見的10種自然語言處理技術

大數據文摘作品

編譯:糖竹子、吳雙、錢天培

自然語言處理(NLP)是一種藝術與科學的結合,旨在從文本數據中提取信息。在它的幫助下,我們從文本中提煉出適用於計算機算法的信息。從自動翻譯、文本分類到情緒分析,自然語言處理成為所有數據科學家的必備技能之一。

在這篇文章中,你將學習到最常見的10個NLP任務,以及相關資源和代碼。

NLP入門+實戰必讀:一文教會你最常見的10種自然語言處理技術

為什麼要寫這篇文章?

對於處理NLP問題,我也研究了一段時日。這期間我需要翻閱大量資料,通過研究報告,博客和同類NLP問題的賽事內容學習該領域的最新發展成果,並應對NLP處理時遇到的各類狀況。

因此,我決定將這些資源集中起來,打造一個對NLP常見任務提供最新相關資源的一站式解決方案。下方是文章中提到的任務列表及相關資源。那就一起開始吧。

目錄:

1. 詞幹提取

2.詞形還原

3.詞向量化

4.詞性標註

5.命名實體消岐

6.命名實體識別

7.情感分析

8.文本語義相似分析

9.語種辨識

10. 文本總結

1. 詞幹提取

什麼是詞幹提取?詞幹提取是將詞語去除變化或衍生形式,轉換為詞幹或原型形式的過程。詞幹提取的目標是將相關詞語還原為同樣的詞幹,哪怕詞幹並非詞典的詞目。例如,英文中:

1.beautiful和beautifully的詞幹同為beauti

2.Good,better和best 的詞幹分別為good,better和best。

相關論文:Martin Porter的波特詞幹算法原文

相關算法:在Python上可以使用Porter2詞幹算法(https://tartarus.org/martin/PorterStemmer/def.txt)

程序實現:這裡給出了在python的stemming庫中使用(https://bitbucket.org/mchaput/stemming/src/5c242aa592a6d4f0e9a0b2e1afdca4fd757b8e8a/stemming/porter2.py?at=default&fileviewer=file-view-default)

Porter2算法做詞幹提取的代碼:

#!pip install stemmingfrom stemming.porter2 import stemstem("casually")

2.詞形還原

什麼是詞形還原? 詞形還原是將一組詞語還原為詞源或詞典的詞目形式的過程。還原過程考慮到了POS問題,即詞語在句中的語義,詞語對相鄰語句的語義等。例如,英語中:

1.beautiful和beautifully被分別還原為beautiful和beautifully。

2.good, better和best被分別還原為good, good和good

相關論文1: 這篇文章詳細討論了詞形還原的不同方法。想要了解傳統詞形還原的工作原理必讀。(//www.ijrat.org/downloads/icatest2015/ICATEST-2015127.pdf)

相關論文2: 這篇論文非常出色,討論了運用深度學習對變化豐富的語種做詞形還原時會遇到的問題。(https://academic.oup.com/dsh/article-abstract/doi/10.1093/llc/fqw034/2669790/Lemmatization-for-variation-rich-languages-using)

數據集: 這裡是Treebank-3數據集的鏈接,你可以使用它創建一個自己的詞形還原工具。(https://catalog.ldc.upenn.edu/ldc99t42)

程序實現:下面給出了在spacy上的英語詞形還原代碼

#!pip install spacy#python -m spacy download enimport spacynlp=spacy.load("en")doc="good better best"for token in nlp(doc): print(token,token.lemma_)

3. 詞向量化

什麼是詞向量化?詞向量化是用一組實數構成的向量代表自然語言的叫法。這種技術非常實用,因為電腦無法處理自然語言。詞向量化可以捕捉到自然語言和實數間的本質關係。通過詞向量化,一個詞語或者一段短語可以用一個定維的向量表示,例如向量的長度可以為100。

例如:“Man”這個詞語可以用一個五維向量表示。

這裡的每個數字代表了詞語在某個特定方向上的量級。

相關博文:這篇文章詳細解釋了詞向量化。

(https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/)

相關論文:這篇論文解釋了詞向量化的細節。深入理解詞向量化必讀。

(https://www.analyticsvidhya.com/blog/2017/10/essential-nlp-guide-data-scientists-top-10-nlp-tasks/)

相關工具:這是個基於瀏覽器的詞向量可視化工具。

(https://ronxin.github.io/wevi/)

預訓練詞向量:這裡有一份facebook的預訓練詞向量列表,包含294種語言。

(https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md)

這裡可以下載google news的預訓練詞向量。

(https://drive.google.com/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit)

#!pip install gensimfromgensim.models.keyedvectors import KeyedVectorsword_vectors=KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin',binary=True)word_vectors['human']

程序實現:這段代碼可以用gensim訓練你自己的詞向量

sentence=[['first','sentence'],['second','sentence']]model = gensim.models.Word2Vec(sentence, min_count=1,size=300,workers=4)

4. 詞性標註

什麼事詞性標註?簡單來說,詞性標註是對句子中的詞語標註為名字、動詞、形容詞、副詞等的過程。例如,對句子“Ashok killed the snake with a stick”,詞性標註會識別:

Ashok 代詞

killed 動詞

the 限定詞

snake 名詞

with 連詞

a 限定詞

stick 名詞

. 標點

論文1:

choi aptly的這篇《The Last Gist to theState-of-the-Art 》介紹了一種叫動態特徵歸納的新方法。這是目前詞性標註最先進的方法。(https://aclweb.org/anthology/N16-1031.pdf)

論文2:這篇文章介紹了通過隱馬爾科夫模型做無監督詞性標註學習的方法。(https://transacl.org/ojs/index.php/tacl/article/viewFile/837/192)

程序實現:這段代碼可以在spacy上做詞性標註

#!pip install spacy#!python -m spacy download ennlp=spacy.load('en')sentence="Ashok killed the snake with a stick"for token in nlp(sentence): print(token,token.pos_)

5.命名實體消歧

什麼是命名實體消岐?命名實體消岐是對句子中的提到的實體識別的過程。例如,對句子“Apple earned a revenue of 200 Billion USD in 2016”,命名實體消岐會推斷出句子中的Apple是蘋果公司而不是指一種水果。一般來說,命名實體要求有一個實體知識庫,能夠將句子中提到的實體和知識庫聯繫起來。

論文1:Huang的這篇論文運用了基於深度神經網絡和知識庫的深層語義關聯模型,在命名實體消岐上達到了領先水平。

(https://arxiv.org/pdf/1504.07678.pdf)

論文2:Ganea and Hofmann的這篇文章運用了局部神經關注模型和詞向量化,沒有人為設置特徵。(https://arxiv.org/pdf/1704.04920.pdf)

6. 命名實體識別

體識別是識別一個句子中有特定意義的實體並將其區分為人名,機構名,日期,地名,時間等類別的任務。例如,一個NER會將一個這樣的句子:

“Ram of Apple Inc. travelled to Sydney on 5th October 2017”

返回如下的結果:

Ram

of

Apple ORG

Inc. ORG

travelled

to

Sydney GPE

on

5th DATE

October DATE

2017 DATE

這裡,ORG代表機構組織名,GPE代表地名。

然而,當NER被用在不同於該NER被訓練的數據領域時,即使是最先進的NER也往往表現不佳。

論文:這篇優秀的論文使用雙向LSTM(長短期記憶網絡)神經網絡結合監督學習和非監督學習方法,在4種語言領域實現了命名實體識別的最新成果。(https://arxiv.org/pdf/1603.01360.pdf)

程序實現:以下是如何使用spacy執行命名實體識別。

import spacynlp=spacy.load('en')sentence="Ram of Apple Inc. travelled to Sydney on 5th October 2017"for token in nlp(sentence): print(token, token.ent_type_)

7. 情感分析

什麼是情感分析?情感分析是一種廣泛的主觀分析,它使用自然語言處理技術來識別客戶評論的語義情感,語句表達的情緒正負面以及通過語音分析或書面文字判斷其表達的情感等等。例如:

“我不喜歡巧克力冰淇淋”—是對該冰淇淋的負面評價。

“我並不討厭巧克力冰激凌”—可以被認為是一種中性的評價。

從使用LSTMs和Word嵌入來計算一個句子中的正負詞數開始,有很多方法都可以用來進行情感分析。

博文1:本文重點對電影推文進行情感分析(https://www.analyticsvidhya.com/blog/2016/02/step-step-guide-building-sentiment-analysis-model-graphlab/)

博文2:本文重點對印度金奈洪水期間的推文進行情感分析。(https://www.analyticsvidhya.com/blog/2017/01/sentiment-analysis-of-twitter-posts-on-chennai-floods-using-python/)

論文1:本文采用樸素貝葉斯的監督學習方法對IMDB評論進行分類。(https://arxiv.org/pdf/1305.6143.pdf)

論文2:本文利用LDA的無監督學習方法來識別用戶生成評論的觀點和情感。本文在解決註釋評論短缺的問題上表現突出。(//www.cs.cmu.edu/~yohanj/research/papers/WSDM11.pdf)

資料庫:這是一個很好的包含相關研究論文和各種語言情感分析程序實現的資料庫。(https://github.com/xiamx/awesome-sentiment-analysis)

數據集1:多域情感數據集版本2.0(//www.cs.jhu.edu/~mdredze/datasets/sentiment/)

數據集2:Twitter情感分析數據集(//www.sananalytics.com/lab/twitter-sentiment/)

競賽:一個非常好的比賽,你可以檢查你的模型在爛番茄電影評論的情感分析任務中的表現。(https://www.kaggle.com/c/sentiment-analysis-on-movie-reviews)

8. 語義文本相似度

什麼是語義文本相似度分析?語義文本相似度分析是對兩段文本的意義和本質之間的相似度進行分析的過程。注意,相似性與相關性是不同的。

例如:

汽車和公共汽車是相似的,但是汽車和燃料是相關的。

論文1:本文詳細介紹了文本相似度測量的不同方法。是一篇可以一站式瞭解目前所有方法的必讀文章。(https://pdfs.semanticscholar.org/5b5c/a878c534aee3882a038ef9e82f46e102131b.pdf)

論文2:本文介紹了用CNN神經網絡去比對兩個短文本。(//casa.disi.unitn.it/~moschitt/since2013/2015_SIGIR_Severyn_LearningRankShort.pdf)

論文3:本文利用Tree-LSTMs方法得到了文本的語義相關和語義分類的最新成果。(https://nlp.stanford.edu/pubs/tai-socher-manning-acl2015.pdf)

語言識別

什麼是語言識別?語言識別指的是將不同語言的文本區分出來。其利用語言的統計和語法屬性來執行此任務。語言識別也可以被認為是文本分類的特殊情況。

博文:在這篇由fastText撰寫的博文中介紹了一種新的工具,其可以在1MB的內存使用情況下識別170種語言。(https://fasttext.cc/blog/2017/10/02/blog-post.html)

論文1:本文討論了285種語言的7種語言識別方法。(//www.ep.liu.se/ecp/131/021/ecp17131021.pdf)

論文2:本文描述瞭如何使用深度神經網絡來實現自動語言識別的最新成果。(https://repositorio.uam.es/bitstream/handle/10486/666848/automatic_lopez-moreno_ICASSP_2014_ps.pdf?sequence=1)

10. 文本摘要

什麼是文本摘要?文本摘要是通過識別文本的重點並使用這些要點創建摘要來縮短文本的過程。文本摘要的目的是在不改變文本含義的前提下最大限度地縮短文本。

論文1:本文描述了基於神經注意模型的抽象語句梗概方法。(https://arxiv.org/pdf/1509.00685.pdf)

論文2:本文描述了使用序列到序列的RNN在文本摘要中達到的最新結果。(https://arxiv.org/pdf/1602.06023.pdf)

資料庫:Google Brain團隊的這個資料庫擁有使用為文本摘要定製的序列到序列模型的代碼。該模型在Gigaword數據集上進行訓練。(https://github.com/tensorflow/models/tree/master/research/textsum)

應用程序:Reddit的autotldr機器人使用文本摘要來梗概從文章到帖子的各種評論。這個功能在Reddit用戶中非常有名。(https://www.reddit.com/r/autotldr/comments/31b9fm/faq_autotldr_bot/)

程序實現:以下是如何用gensim包快速實現文本摘要。

fromgensim.summarization import summarizesentence="Automatic summarization is the process of shortening a text document with software, in order to create a summary with the major points of the original document. Technologies that can make a coherent summary take into account variables such as length, writing style and syntax.Automatic data summarization is part of machine learning and data mining. The main idea of summarization is to find a subset of data which contains the information of the entire set. Such techniques are widely used in industry today. Search engines are an example; others include summarization of documents, image collections and videos. Document summarization tries to create a representative summary or abstract of the entire document, by finding the most informative sentences, while in image summarization the system finds the most representative and important (i.e. salient) images. For surveillance videos, one might want to extract the important events from the uneventful context.There are two general approaches to automatic summarization: extraction and abstraction. Extractive methods work by selecting a subset of existing words, phrases, or sentences in the original text to form the summary. In contrast, abstractive methods build an internal semantic representation and then use natural language generation techniques to create a summary that is closer to what a human might express. Such a summary might include verbal innovations. Research to date has focused primarily on extractive methods, which are appropriate for image collection summarization and video summarization."summarize(sentence)

結束語

以上就是最常見的NLP任務的入門介紹和資料彙總了,如果你有更多優質的資源,也歡迎在評論區分享哦!

相關推薦

推薦中...