大数据文摘作品
编译:糖竹子、吴双、钱天培
自然措辞处理(NLP)是一种艺术与科学的结合,旨在从文本数据中提取信息。在它的帮助下,我们从文本中提炼出适用于打算机算法的信息。从自动翻译、文本分类到感情剖析,自然措辞处理成为所有数据科学家的必备技能之一。

在这篇文章中,你将学习到最常见的10个NLP任务,以及干系资源和代码。
为什么要写这篇文章?
对付处理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: 这篇文章详细谈论了词形还原的不同方法。想要理解传统词形还原的事情事理必读。(http://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的无监督学习方法来识别用户天生评论的不雅观点和情绪。本文在办理注释评论短缺的问题上表现突出。(http://www.cs.cmu.edu/~yohanj/research/papers/WSDM11.pdf)
资料库:这是一个很好的包含干系研究论文和各种措辞情绪剖析程序实现的资料库。(https://github.com/xiamx/awesome-sentiment-analysis)
数据集1:多域情绪数据集版本2.0(http://www.cs.jhu.edu/~mdredze/datasets/sentiment/)
数据集2:Twitter情绪剖析数据集(http://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神经网络去比对两个短文本。(http://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种措辞识别方法。(http://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任务的入门先容和资料汇总了,如果你有更多优质的资源,也欢迎在评论区分享哦!