我是靠谱客的博主 平常小猫咪,最近开发中收集的这篇文章主要介绍自然语言处理NLP之终极指南(Pytho…,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

理解和使用自然语言处理之终极指南(Python编码)(经典收藏12k附数据简化筹员217Fri新闻

秦陇纪10

12k字理解和使用自然语言处理之终极指南(Python编码)7k字;附数据简化DataSimp筹收技术简历414字、2月17日Fri新闻四则4k字欢迎加入共建“数据简化DataSimp”学会及社区关注、收藏、转发新媒数据简化DataSimp、科学Sciences”微信号、头条号转载请出处:秦陇纪10“数据简化DataSimp/科学Sciences”公众号、头条号译编投稿QinDragon2010@qq.com。

目录

理解和使用自然语言处理之终极指南(Python编码)(7.4k字)

A. 数据简化DataSimp筹备收简历(414)

B. 2017年2月17日周(农历丁酉鸡年正月廿一)新闻四则汇编(4.8k)

 

理解和使用自然语言处理之终极指南(Python编码)

秦陇纪10来源:仕瓦姆·邦萨尔(Shivam Bansal,2017年1月12日,威提亚分析学

自然语言处理nlp之终极指南(python编码)经典收藏版12k字,附数据简化筹员2月17日fri新闻,周末科普版


目录表Table of Contents

1. Introduction to NLP 自然语言处理介绍

2. Text Preprocessing 文本预处理

Noise Removal 噪声去除

Lexicon Normalization 词汇规范化

§ Lemmatization 词变体归类

§ Stemming 词干提取

Object Standardization 对象规范化

3. Text to Features (Feature Engineering on text data) 文本到特征(文本数据之特征工程)

Syntactical Parsing 句法解析

§ Dependency Grammar 依存语法

§ Part of Speech Tagging 词性标注

Entity Parsing 实体解析

§ Phrase Detection 短语检测

§ Named Entity Recognition 命名实体识别

§ Topic Modelling 主题造型

§ N-Grams  N元连续模型

Statistical features 统计特征

§ TF – IDF 词频-逆文档词频

§ Frequency / Density Features 频率/密度特征

§ Readability Features 可读性特征

Word Embeddings 字嵌入

4. Important tasks of NLP 自然语言处理NLP的重要任务

Text Classification 文本分类

Text Matching 文本匹配

§ Levenshtein Distance 莱文斯坦距离

§ Phonetic Matching 语音匹配

§ Flexible String Matching 柔性字符串匹配

Coreference Resolution 共指消解

Other Problems 其他问题

5. Important NLP libraries 重要NLP

 

 

据业内人士估计,只有21%可用数据以结构化形式存在。数据产生,正如我们所说的,来自于我们的推特、WhatsApp和其他各种交流活动中发送的信息。大多数这些数据存在于文本的形式,是高度非结构化的性质。一些臭名昭著的例子包括——在社交媒体上的推特/帖子、用户到用户的聊天对话、新闻、博客和文章、产品或服务审查和医疗部门里的病人记录。最近的一些例子包括聊天机器人和其他声音驱动的机器人程序。

尽管具有高维数据,但其呈现的信息是不可以直接访问的,除非它被手动处理(读取和理解)或由自动化系统分析。为了从文本数据中产生明显的和可操作的洞察/见解,熟悉自然语言处理(NLP)的技术和原则显得非常重要。那么,如果你打算今年创建聊天机器人,或者你想使用非结构化文本的力量,本指南是正确的起点。本指南挖掘自然语言处理的概念、技术与实现。文章的目的是教会自然语言处理的概念,并将其应用于实际数据集。

 

1. Introduction to Natural Language Processing 自然语言处理介绍

NLP是数据科学的一个分支,包括智能和高效地从文本数据中分析、理解和导出信息的系统流程。通过NLP及其组成部分,企业可以组织海量文本数据块、执行许多自动化任务、并解决广泛问题,如自动摘要、机器翻译、命名实体识别、关系抽取、情感分析、语音识别、主题分割等。

在进一步研究之前,我想解释一下文章中使用的一些术语:

· 标记化——转换文本到标记体的过程;

· 标记体——文本中存在的单词或实体;

· 文本对象——一个句子或一个短语或一个词或一篇文章

安装NLTK及其数据的步骤(使用Python语言及环境):

安装Pip:在终端中运行:

    sudo easy_install pip

安装NLTK:在终端中运行:

    sudo pip install -U nltk

下载NLTK数据:运行Python shell(在终端)和写下面的代码:

``` import nltk nltk.download()``` 

按照屏幕上的指令下载所需的包或集合。其他库可以直接使用Pip安装。

 

2. Text Preprocessing文本预处理

因此,文本是所有可用数据的最具非结构化的形式,存在于其中的各种类型的噪声,并且没有预处理的数据是不容易分析的。文本清理和标准化的全过程,是一个去除其噪声和称为文本预处理的分析准备工作。

它主要由三个步骤组成:

· Noise Removal 噪声去除

· Lexicon Normalization 词汇规范化

· Object Standardization 对象标准化

下图显示了文本预处理(清洁)流水线的体系结构。

 

 自然语言处理nlp之终极指南(python编码)经典收藏版12k字,附数据简化筹员2月17日fri新闻,周末科普版

2.1 Noise Removal 噪声去除

任何与数据上下文和最终输出无关的文本片段,都可以指定为噪声。例如——语言停用词(语言常用词is/am/the/of/in等),URL或链接,社会媒体实体(提示、哈希标签),标点符号和特定行业用词。此步骤处理移除文本中存在的所有类型噪声实体。

去除噪声的一般方法是准备一个噪声实体字典,并通过标记符号(或文字)来迭代文本对象,消除这些噪声字典呈现出的标记符号。

以下是实现相同目的Python代码。

```

# Sample code to remove noisy words from a text

noise_list = ["is", "a", "this", "..."]

def _remove_noise(input_text):

words = input_text.split()

noise_free_words = [word for word in words if word not in noise_list]

noise_free_text = " ".join(noise_free_words)

return noise_free_text

_remove_noise("this is a sample text")

>>> "sample text"

```

另一种方法是在处理特殊噪声模式时使用正则表达式之前的一篇文章中,我们详细解释了正则表达式。以下的Python代码从输入文本中移除了一个正则表达式模式:

```

# Sample code to remove a regex pattern

import re

def _remove_regex(input_text, regex_pattern):

urls = re.finditer(regex_pattern, input_text)

for i in urls:

input_text = re.sub(i.group().strip(), '', input_text)

return input_text

regex_pattern = "#[A-Za-z0-9w]*"

_remove_regex("remove this #hashtag from analytics vidhya", regex_pattern)

>>> "remove this  from analytics vidhya"

```

 

2.2 Lexicon Normalization 词汇规范化

另一种文本噪声是关于单个词所表现的多重表征

例如“玩”、“玩家”,“玩”,第三人称的“玩”和“正在play, player, played, plays and playing是单词“玩”的不同变化,尽管他们的意思是不同的,但内容都是相似的。这个步骤是把一个词的所有差异转换它们的标准化形式(也称为lemma引理)。规范化是文本特征工程关键步骤,因为它转换的高维特征(N维度不同特征)到低维空间(1个特征),是任何ML模型一种理想

最常见的词汇规范化做法是:

· 词干提取Stemming词干提取是一种基本的基于规则的从一个词剥离后缀的过程(后缀ing, ly, es, s等)。

· 词变体归类Lemmatization词变体归类,从另一方面,是一个有组织且有步骤获得这个词的词根形式的过程,即词汇用法(单词的词典重要性)和形态逻辑分析(词汇结构和语法关系)。

下面示例代码Python主流库NLTK执行词变体归类Lemmatization)和词干提取Stemming

```

from nltk.stem.wordnet import WordNetLemmatizer

lem = WordNetLemmatizer()

from nltk.stem.porter import PorterStemmer

stem = PorterStemmer()

word = "multiplying"

lem.lemmatize(word, "v")

>> "multiply"

stem.stem(word)

>> "multipli"

```

 

2.3 Object Standardization 对象标准化

文本数据通常包含一些任何标准语义字典中不存在的单词或短语。这些碎片搜索引擎和模型不识别

这方面的一些例子是——首字母缩略词、单词附属哈希标签和口语俚语。借助正则表达式和手工编写的数据字典,可以找到这种类型的噪声,下面的代码使用一个字典查找法从文本代替社交媒体的俚语。

```

lookup_dict = {'rt':'Retweet', 'dm':'direct message', "awsm" : "awesome", "luv" :"love", "..."}

def _lookup_words(input_text):

words = input_text.split()

new_words = []

for word in words:

if word.lower() in lookup_dict:

word = lookup_dict[word.lower()]

new_words.append(word) new_text = " ".join(new_words)

return new_text

_lookup_words("RT this is a retweeted tweet by Shivam Bansal")

>> "Retweet this is a retweeted tweet by Shivam Bansal"

```

除了讨论到目前为止三个步骤,其他类型的文本预处理包括编码解码噪声语法检查器拼写校正等详细的文本预处理及其方法在秦陇纪专著文章

 

3.Text to Features (Feature Engineering on text data) 文本到特征(文本数据之特征工程)

预处理数据分析,需要将其转换成特征。根据使用情况,文本特征可用配套技术构建——语义分析、实体//基于词的特征、统计特征、字的嵌入。实体/N元连续模型/基于词的特征、统计特征,和单词嵌入。下面来继续阅读,以详细了解这些技术。

3.1 Syntactic Parsing 句法解析

句法解析涉及句中单词的语法和显示这些单词间关系的排列方式的分析。依存语法和部分语音标签是文本句法的重要属性。

依存树–句子是由一些单词缝和在一起组成的。句子中词语间的关系由基本依存语法决定。依存语法是处理两个语义项之间的(标记的)非对称二元关系(单词)的一类语义文本分析法。每一种关系都可以用三元组(关系、监督、依存)来表示。例如:考虑句子Bills on ports and immigration were submitted by Senator Brownback, Republican of Kansas.”这些单词间的关系,可以用下图所示的树形表示形式观察到:

自然语言处理nlp之终极指南(python编码)经典收藏版12k字,附数据简化筹员2月17日fri新闻,周末科普版

这个显示submitted个句子的根词,是由两个子树(主体与客体的子树)相连。每个子树本身一个诸如(“Bills” <-> “ports” “proposition” relation)(“ports” <-> “immigration” “conjugation” relation)关系的依存关系树

这种类型的树,采用自上而下的方法递归解析时,给出了语法关系三元组作为输出——可用于许多NLP问题的特征,像实体情感分析、演员和实体识别和文本分类Python斯坦福CoreNLP来自Stanford NLP项目组,只有商业许可证)和NLTK依存语法可以用来产生依存关系树.

词性标注Part of Speech tagging–除了语法关系,在一个句子里每个词也词性标签(POS(名词、动词、形容词、副词等)相关联POS标签定义一个词在句子中的用法和功能。这是宾夕法尼亚大学定义一个所有可能POS标签列表。下面的代码使用NLTK输入文本进行词性标注注释。(它提供了多种实现方案,默认是感知标记

```

from nltk import word_tokenize, pos_tag

text = "I am learning Natural Language Processing on Analytics Vidhya"

tokens = word_tokenize(text)

print pos_tag(tokens)

>>> [('I', 'PRP'), ('am', 'VBP'), ('learning', 'VBG'), ('Natural', 'NNP'),('Language', 'NNP'),

('Processing', 'NNP'), ('on', 'IN'), ('Analytics', 'NNP'),('Vidhya', 'NNP')]

```

词性标注用于NLP自然语言处理中的许多重要用途:

A.词义消歧:一些语言词汇根据其用法有多种含义。例如,在以下两个句子中:

I. “Please book my flight for Delhi”

II. “I am going to read this book in the flight”

Book不同语境使用,两种情况下的词性标注词不同。句I中,Book”作为动词,而II句中被用作名词。(Lesk算法也用于类似目的

B.提高基于词的特征值学习模型在以一个词为特征时,学习词的不同情境,如果词性标注词与他们联系,上下文被保存,从而做出强壮的特征值。例如:

句子Sentence -“book my flight, I will read this book”

标记词Tokens – (“book”, 2), (“my”, 1), (“flight”, 1), (“I”, 1), (“will”, 1), (“read”, 1), (“this”, 1)

词性标注标记Tokens with POS – (“book_VB”, 1), (“my_PRP$”, 1), (“flight_NN”, 1), (“I_PRP”, 1), (“will_MD”, 1), (“read_VB”, 1), (“this_DT”, 1), (“book_NN”, 1)

C.标准化和词变体归类:POS标签是词变体归类过程的基础,用于将一个词转换成它的基形式(lemma引理)

D.有效的停用词去除:POS标签在高效去除停用词也有用。

例如,有一些标签总是定义一个语言的低频/不重要的单词。例如: (IN – “within, upon, except), (CD – “one,two, hundred), (MD – “may, mu st etc)

 

3.2 Entity Extraction (Entities as features) 实体提取(实体为特征值)

实体被定义为句子中最重要的句块--名词短语、动词短语或两者。实体检测算法通常是基于规则解析字典查找POS标签、依存句法分析的集成模型。实体检测的适用性可以在自动聊天机器人内容分析和消费者洞察中看见

自然语言处理nlp之终极指南(python编码)经典收藏版12k字,附数据简化筹员2月17日fri新闻,周末科普版

主题模型命名实体识别NLP自然语言处理两个主要的实体检测方法。

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

检测如人名、地名、公司名等命名实体的过程称为NER。例如:

句子Sentence – Sergey Brin, the manager of Google Inc. is walking in the streets of New York.

命名实体Named Entities – ( “person” : “Sergey Brin” ), (“org” : “Google Inc.”), (“location” : “New York”)

一个典型NER模型由三块组成

名词短语识别:这一步涉及使用依存解析和词性标注从文本中提取所有名词短语。

短语分类:这是将所有被提取名词短语划分为所属相应类别(位置、名称等)的分类步骤。谷歌地图API提供了消除歧义位置的一个好路径,然后,从DBpedia, wikipedia开放数据库可以用来识别个人姓名或公司名称。除此之外,结合来自不同信息源的查找表和词典可以精确查找。

实体消歧:有时这是可能的,实体的误判分类的,因此随之创建分类结果之上的验证层是有用的。出于此目的可以运用知识图。流行的知识图谷歌知识图,IBM沃森和维基百科

 

B. Topic Modeling 主题模型

主题建模是一个存在文本语料库中主题的自动识别过程,它以无监督方式推导出语料库中隐含模式。主题被定义为“a repeating pattern of co-occurring terms in a corpus”。医疗保健为主题的一个好的主题模型结果“health”, “doctor”, “patient”, “hospital”“健康”、“医生”、“病人”、“医院”,农事为主体则有“farm”, “crops”, “wheat”“农场”、“庄稼”、“小麦”为话题“农业”

隐含狄利克雷分配(LDA是最受欢迎的主题建模技术,以下是使用LDA实现主题建模Python代码。有关其工作和执行的详细说明,请检查这里完整文章。

```

doc1 = "Sugar is bad to consume. My sister likes to have sugar, but not my father."

doc2 = "My father spends a lot of time driving my sister around to dance practice."

doc3 = "Doctors suggest that driving may cause increased stress and blood pressure."

doc_complete = [doc1, doc2, doc3]

doc_clean = [doc.split() for doc in doc_complete]

import gensim from gensim

import corpora

# Creating the term dictionary of our corpus, where every unique term is assigned an index. 

dictionary = corpora.Dictionary(doc_clean)

# Converting list of documents (corpus) into Document Term Matrix using dictionary prepared above.

doc_term_matrix = [dictionary.doc2bow(doc) for doc in doc_clean]

# Creating the object for LDA model using gensim library

Lda = gensim.models.ldamodel.LdaModel

# Running and Training LDA model on the document term matrix

ldamodel = Lda(doc_term_matrix, num_topics=3, id2word = dictionary, passes=50)

# Results

print(ldamodel.print_topics())

```

 

C.  N-Grams as Features  N元连续模型N grams作为特征值

N个单词在一起的组合被称为N元连续模型(N grams作为特征值,相比单词(一元1gramN元连续模型n1)通常包含更多信息。另外,双单词元组(n=2)被认为是所有其他元模型更重要的特征。下面的代码生成一个文本二元模型实例

```

def generate_ngrams(text, n):

words = text.split()

output = [] 

for i in range(len(words)-n+1):

output.append(words[i:i+n])

return output

>>> generate_ngrams('this is a sample text', 2)

# [['this', 'is'], ['is', 'a'], ['a', 'sample'], , ['sample', 'text']]

```

 

3.3 Statistical Features 统计特征

文本数据也可以使用本节中描述的几种技术直接量化成数字:

(欢迎转发声明:秦陇纪10公众号、头条号“数据简化DataSimp”科普文章。)

 

数据简化DataSimp筹备收简历(414)

北京数据简化有限责任公司(筹)愿景:①行业大数据采集处理分析管理系统,②企事业单位行政人事财物联网智能OA系统,③数据简化DataSimp学术组及开源社区(中英双语),④物联网大数据底层操作系统(整合Linux开源软件和通信模块)。

现重点收集数据分析程序算法模型研发简历,成立前/每季度实习生在中关村集中面试。有意实习半年、工作一年以上的开发人员,请注明学历和工作简历、职务和职业规划、吃住薪酬预期、个人爱好等事项,投递邮箱QinDragon2010@qq.com主题注明:应聘数据简化DataSimp合伙人或XX岗位(研发岗参考本蚊及文本分析一文的二级标题)。

1)技术研发部(重点收简历):核心的数据分析DA、NLP、DL编程技能,Windows/Linux/Android/iOS平台、OA、App软件开发基础;

2)市场客服部(研发部兼职):搜集客户资料、面见客户、形成客户需求分析文档,跟踪反馈,面谈、电邮、电话、邮寄沟通服务;

3)行政后勤部(合伙人兼职):高级的全系列文档搜集编辑整理技能,OA软件界面和操作体验实验,公司法律财会物业文书基础

详情落地前发文宣传。

(西安秦陇纪10数据简化DataSimp综合汇编,欢迎有志于数据简化之传媒、技术的实力伙伴加入全球“数据简化DataSimp”团队!)

最后

以上就是平常小猫咪为你收集整理的自然语言处理NLP之终极指南(Pytho…的全部内容,希望文章能够帮你解决自然语言处理NLP之终极指南(Pytho…所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部