数据科学家的NLP基础指南,十类学习资源大汇总

686 阅读10分钟

随着信息化的不断演进,现如今企业机构都会收集到一大堆数量庞大而又种类不一的数据,它们可能来自客户、邮件,也可能来自媒体和其他APP平台……为了从数据中分类筛选出有效内容,企业往往需要投入大量的时间和精力,而其中一项从文本数据中提取信息的核心技术就是自然语言处理(NLP)。

自然语言处理(NLP)是从文本提取信息并将其用于计算、算法的一项技术与艺术,由于在后互联网时代,社交媒体大量增加了信息内容量,NLP正逐渐成为数据科学家的必备技能。

无论你之前有没有接触过NLP,本文都将为你提供一些内容参考。

1.提取词干(Stemming)

什么是提取词干?简而言之,提取词干就是去除词缀(通常是修饰的、衍生的)得到词根的过程。它的目的是为了提取单词核心成分,即使最后所得在词典中并不存在。例如,在英语中:

  • beautiful和beautifully的词干都是beauti;
  • good、better和best经提取后,它们的词干仍是自己本身:good、better、best。

论文:Martin Porter的波特词干算法是世界上最早的基于算法的英文词干提取器,这里是相关论文的原始版本。

算法: 这里是用Python写Porter2所产生的代码。

实现:如果要在词干库用Porter2提取一个词的词干,你可以输入以下语句:

#!pip install stemming
from stemming.porter2 import stem
stem("casually")

2.词形还原(Lemmatisation)

什么是词形还原?词形还原就是把一个词汇还原成它的一般形态的过程。它需要考虑POS(词类)、单词在上下文中的含义以及单词在句子中的作用。和词干提取类似,两者都有一个将屈折词简化还原的过程,但词形还原不仅限于词缀去除,它需要考虑诸多形态变化,最重要的一点是,经还原后的词一定是一个词典词汇。例如,在英语中:

  • beautiful和beautifully经词形还原后分别是beautiful和beautifully;
  • good、better和best经词形还原后都是good。

论文1:这里是一篇介绍词形还原不同方法的论文,入门必读。

论文2:这里是一篇介绍用深度学习解决变化丰富语言问题的优秀论文Lemmatization for variation-rich languages using deep learning(牛津学术出版,如需帮助请私信论智)。

数据集:这里是一个英语数据集,包括华尔街日报百万字注解、布朗语料库完全标记版本等,如果想创建一个自己的词形还原工具,可以考虑使用。

实现:如果你想用spacy进行词形还原,你可以输入以下代码:

#!pip install spacy
#python -m spacy download en
import spacy
nlp=spacy.load("en")
doc="good better best"

for token in nlp(doc):
    print(token,token.lemma_)

3.生成词向量(Word Embeddings)

什么是生成词向量?生成词向量是利用NLP将自然语言转化成向量形式的实数的技术。因为目前的计算机还无法阅读自然语言,因此生成词向量时必须要把握单词与实数之间的本质关系。在这个过程中,一个单词或短语都被一个向量表示,长度一般都在100以内。

例如,英文单词man可以用一个5维向量来表示:

其中的每个数字都代表man这个词在特定方向上的大小。

博客:这里是作者NSS几个月前写的一篇详细介绍生成词向量的博客。

论文:这里是一篇解释生成词向量细节的论文,阅读后会对这个技术产生更深入的了解。

工具:这里是一个基于浏览器使用的可视化词向量工具。

预先训练的词向量:这里是由Facebook提供的294种语言预训练词向量的详细列表。

实现:用gensim包获得预训练词向量(点击这里下载谷歌新闻预训练词向量)

#!pip install gensim
from gensim.models.keyedvectors import KeyedVectors
word_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.词性标注(Part-Of-Speech Tagging)

什么是词性标注?顾名思义,词性标注就是为选定单词指派一个合适的词性,如名词、动词、形容词、副词等。例如,在下面的句子中:

  • Ashok killed the snake with a stick

这些词的词性可以被分别标注为:Ashok PROPN killed VERB the DET snake NOUN with ADP a DET stick NOUN. PUNCT

论文1:这里是Jinho D. Choi写的Dynamic Feature Induction: The Last Gist to the State-of-the-Art。

论文2:这里是一篇介绍用隐马尔可夫模型进行无监督词性标注的论文。

实现:如果要用spacy进行词性标注,可以输入以下代码:

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

5.命名实体消歧(Named Entity Disambiguation)

什么是命名实体消歧?现实生活中我们常常会遇到多义词,而命名实体消歧就是通过命名实体链接的方式,将多义词的准确义项映射到一个无歧义的目标实体的过程。例如,在以下句子中:

  • Apple earned a revenue of 200 Billion USD in 2016.

通过消歧,可以判断出句中的apple不是苹果,而是苹果公司。

论文1:这里是一篇关于利用基于深度神经网络建立深层语义相关模型的论文。

论文2:这里是Ganea和Hofmann合作的一篇论文,介绍了结合本地Neural Attention和生成词向量自动进行命名实体消歧的实验。

6.命名实体识别(Named Entity Recognition)

是什么命名实体识别?命名实体识别是识别文本中具有特定意义的实体,并把它们明确归类为人、组织、日期、地点、时间等。比如,如果要对以下句子进行命名实体识别:

  • 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代表位置,DATE代表时间。

就目前而言,即便是最先进的命名实体识别,它在面对陌生数据时也会表现不佳。

论文:这里是一篇介绍结合监督学习和非监督学习,利用双向LSTMs对4种语言进行命名实体识别的论文。

实现:如果要用spacy进行词性标注,可以输入以下代码:

import spacy
nlp=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.情感分析(Sentiment Analysis)

什么是情感分析?情感分析涉及宽泛的主观分析,它用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息,例如分辨对象态度,积极的或消极的,从句子中获得感悟,通过语音或文字分析判断情绪等。如:

  • I did not like the chocolate ice-cream.(这是对冰淇淋的负面看法)
  • I did not hate the chocolate ice-cream.(这是一个中立看法)

在判断句中词汇正面、负面意义上,LSTMs和词向量有很广泛的应用空间。

博客1:这里是一篇针对电影影评做的情感分析(博主数据集来自烂番茄,有兴趣的同学可以因地制宜试一下豆瓣)。

博客2:这里是对“2015年印度金奈洪水”话题下推文的情感分析。

论文1:这里是一篇关于用朴素贝叶斯分类器和监督学习对IMDB进行分类的论文。

论文2:这里是一篇利用LDA与无监督学习识别用户评论情绪的论文,它的出色之处在于补充了评论注解。

库:这里是一个融合了各种情感分析论文、各种语言的情感分析资料库。

数据集1:多域情绪数据集2.0版

数据集2:Twitter的情感分析数据集

竞赛:这里是一个kaggle发起的用烂番茄电影评论检测情感分析模型水平的趣味比赛,三年间已经有超过800支队伍/个人参与其中。

8.语义文本相似度(Semantic Text Similarity)

什么是语义文本相似度?语音文本相似度探讨的不是两段文本间的语法相似性,而是基于语义的内容和本质的相似性。此外,相似并不等于相关,如:

  • 汽车和公交车是相似的,但是汽车和燃料相关。

论文1:这里是一篇入门必读文章,介绍了当前测试文本相似度的各种方法。

论文2:这里是一篇利用CNN处理两个短文本的论文。

论文3:这里是利用Tree-LSTMs实现文本语义相关性和语义分类的最新成果。

9.语言识别(Language Identification)

什么是语言识别?语言识别就是一个从对象中识别出语言内容的任务,它同时涉及统计学知识和语言学的语法属性,因此也被当做文本分类的一个特例。

博客:这篇文章中,博主推荐了一个语言识别工具fastText,大小虽然只有1MB,但能识别超过170种语言。

论文1:这里介绍了7种可用于286种语言的语言识别工具。

论文2:这里介绍了神经网络在自动语言识别上的深度应用,是最新成果。

10.文本摘要(Text Summarisation)

什么是文本摘要?文本摘要就是通过识别文本要点,从大量文本信息中提取重要的内容,并把这些重要内容汇编成总结的过程。它的目标是在长度尽可能短的情况下保留尽可能多的原文信息,同时不改变文意。

论文1:这里是一篇介绍如何用神经注意力模型对写意句子进行总结的论文。

论文2:这里是一篇介绍如何将RNN序列到序列学习用于文本摘要的论文。

库:这里是谷歌大脑团队提供的定制文本摘要序列到序列模型的代码,该模型可被用于Gigaword数据集。

应用:Reddit的机器人评论员autotldr利用文本摘要技术总结文章评论,被视为社区和用户间的一种成功互动方式。

实现:如果你想用gensim包快速汇总文本,可以仿照以下示例:

from gensim.summarization import summarize

sentence="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)
 

结语

本文由NSS最初发表在Analytics Vidhya上,文中收录了作者个人搜集的各种学习资源,可供学习者一站式获取解决方案。凡本站编译内容,均已获得授权/符合平台转载规范,如果你对文章内容有疑义,或是希望增加一些项目,可以直接联系作者或找论智代为沟通。最后,祝各位快乐学习~

原文地址:www.analyticsvidhya.com/blog/2017/1…