自然语言处理(NLP)入门

开通VIP,畅享免费电子书等14项超值服

首页

好书

留言交流

下载APP

联系客服

2023.12.24浙江

自然语言处理(NLP)入门-预处理,单词嵌入,文本分类等

使用简单的Python库

source

如今,自然语言处理领域发生了很多事情(GRU,LSTM,XLNet,BERT等!)。弄清楚从哪里开始可能会很困难。本文讨论了自然语言处理的基础,包括使用基本但功能强大的Python库进行的数据清理,规范化,编码,情感分析和简单的文本分类器。这通常是进入复杂的深度学习模型之前的第一步。

根据问题的性质,可能需要也可能不需要此步骤。如果我们的模型正在尝试最大程度地学习语言,则最好以原始格式使用数据,实际上,现代深度学习技术建议不要删除停用词,表情符号或小写字母,因为它们会提供附加信息和上下文。但是,如果您尝试根据某些单词的出现情况进行趋势分析或分类(例如在词袋模型中),则执行此步骤是有帮助的。我想在此处重点介绍一些常见的预处理步骤:

·删除标点符号:尝试训练机器学习模型时,它可以通过删除标点符号(如!,*等)来减少过度拟合。但是,请注意不要删除重要的内容,例如,问号(?)有助于识别问题。

·删除表情符号:有时人们将表情符号附加到没有空格的单词(例如:you)上,从而难以解释此类单词。删除表情符号可以在这种情况下提供帮助。同样,删除这些表情符号时要小心,因为表情符号实际上可能对情感分析和主题分类等任务非常有用。

·删除停用词:对于诸如数据探索和趋势分析之类的任务,查看诸如'the','and','of'等常用词可能不是很有用。sklearn软件包实际上包含了一组常用的英语停用词,我们可以用来删除这些词。

·使所有文本变为小写:这是标准化文本的最简单方法。(毕竟,BeTTer和better确实具有相同的语义含义)

·词干:规范化的另一种方法是将派生词替换为其词根形式(例如,'posting','posted','posts'全部替换为'post')。为了提炼词干,我们使用nltk提供的PorterStemmerutil。

·提取/删除主题标签和注释:主题标签和注释在识别数据趋势方面非常有用。它有助于将它们从文本中提取出来并分别进行分析。

这是执行上述任务的简单功能:

机器学习算法只能处理固定长度的数字输入,即它们不能采用字符串输入来处理文本数据!这是为什么我们需要单词向量,我们使用固定长度的向量表示每个单词。然后将各个单词向量用于编码句子。

One-hot编码:

这是编码单词的最简单方法。它假定使用词袋表示法,其中每个单词都被视为一个独立的实体,并且单词关系被忽略(例如,尽管工作和职业实际上具有相同的含义,但它们被视为完全独立的单词)。该方法涉及从整个语料库创建不同单词的词汇表,该词汇表的长度是每个单词向量的长度。每个向量在单词向量中都有自己的指定索引,该索引标记为1,而其他索引标记为0以表示特定单词。

例:

这里的词汇表由9个不同的词组成,这些词可以被一个热编码为长度为9的向量。这些词向量的表示形式如下:going:[1,0,0,0,0,0,0,0,0,0],good:[0,1,0,0,0,0,0,0,0],依此类推。

使用此表示形式,'Tomorrowwillbeagoodday’的一天的文本可以编码为:[0,1,1,0,1,1,0,1,0]。注意单词will将被忽略,因为它根本不存在于词汇表中。要使此模型正常工作,必须具有良好而广泛的词汇表。还要注意在此表示形式中如何完全忽略单词关系(出现的顺序,语义关系)。

单词编码的这种方法(通常称为单词嵌入)考虑了上下文。例如,我们可以预期国王和王室一词的空间距离要比鹦鹉和蜂蜜小。Word2vec使用浅层两层神经网络执行特定任务(基于所使用的方法),并为每个单词学习隐藏层的权重。这些学习的隐藏层权重用作我们的最终单词向量。您可以阅读原始论文,以深入了解如何获得这些单词向量。但总的来说,这是使用Word2Vec获取基于上下文的单词向量的两种常用方法:

CBOW(连续词袋):

source:

CBOW模型体系结构尝试根据源上下文单词(环绕单词)预测当前的目标单词(中心单词)。

跳过—语法模型Skip—Gram:

Skip-gram模型体系结构试图实现与CBOW模型相反的功能。它尝试在给定目标单词(中心单词)的情况下预测源上下文单词(环绕单词)。

在两种情况下,窗口大小(每侧考虑的周围单词数)都是超参数。

Glove手套:

Glove与Word2vec非常相似,但与Word2vec不同,Glove利用了单词的全局共现,而不仅仅是局部上下文,这使它在某些方面更加强大。同样,通过阅读原始论文,您可以更好地理解。

现在我们对什么是词嵌入及其为何有用有了一个大概的想法,让我们来谈谈如何利用它们来发挥我们的优势。

使用预训练的单词向量:

有许多公开的,经过预先训练的,具有不同向量长度的预训练词向量,例如Glove,fasttext等。这些已经在大规模语料库(Wikipedia,twitter和常见的抓取数据集)上进行了训练,可以下载并用于在我们的语料库中对词进行编码。

示例:使用词向量相似度查找与给定文档最相似的文档

问题陈述:

给定一组属于不同主题的文档(训练集),当给定一个新文档时,我们能否从原始文档集中找到与其最相似的文档?

方法:

·将经过预训练的单词向量文件加载到字典中,以单词为键,其向量表示为值。

·通过对特定文档中存在的单词的单词矢量求平均值,找到训练集中每个文档的质心矢量(忽略不属于词汇表的单词)

·找到新文档的质心,从训练集中选择其质心最接近新文档质心的文档(使用合适的相似度度量,例如欧氏距离,余弦相似度等)

代码:

这是一些辅助函数,用于加载glove字典,查找质心以及查找质心之间的距离:

mportnumpyasnp#loadingtheglovefileintoadictionaryofwordsdefload_glove(filename):glove_dict={}withopen(filename)asf:file_content=f.readlines()forlineinfile_content:line_content=line.split()glove_dict[line_content[0]]=np.array(line_content[1:],dtype=float)returnglove_dict#getcentroidofaparticulardocumentdefget_centroid(text,gloves):words_list=preprocess_text(text)word_vec_sum=0words_count=0forwinwords_list:ifwingloves:word_vec_sum+=gloves[w]words_count+=1ifwords_count:returnword_vec_sum/words_countelse:return0#getdistancebetweentwocentroidsdefget_distance(a,b):return(np.linalg.norm(a-b))训练从头开始生成单词向量:如果要查找特定语料库的单词向量,可以使用gensim包进行训练。

输出:

在上面的示例中,我仅使用了Wikipedia页面上的两行内容。训练是非常快速和简单的,您只需要输入单词列表,所需单词矢量的大小,窗口大小(要考虑的周围单词的数量)以及出现该单词的最小次数它被视为词汇的一部分。检查词汇表,获取向量以及查看语料库中最常用的词都很容易。当然,从头开始的训练可能并不总是能获得与预训练的结果一样好的结果,但是对于涉及数据看起来与预训练中使用的数据集截然不同的问题的好处。

带有文本数据的EDA不如表格或数字数据那么简单。但是,有些库可以使这些任务更容易。对于本文的其余部分,我使用了Kaggle的以下数据集:ToxicCommentClassificationChallenge

使用spacy探索:

Spacy是一个非常强大的NLP库,具有多种用途。它可用于命名实体识别,识别单词所属的语音部分,甚至给出单词的矢量和情感。

importspacynlp=spacy.load('en_core_web_sm')text=''.join(toxic_data[:1000]['comment_text'])doc=nlp(''.join(preprocess_text(text)))x=doc[0]print('word:',x,'\n')print('partofspeech:',x.pos_,'\n')print('sentiment:',x.sentiment,'\n')print('sentiment:',x.sentiment,'\n')print('wordvector:',x.vector)输出:

来自spacy的nlp函数将每个单词转换为具有各种属性的令牌,例如上面示例中提到的那些属性。

词云Wordcloud:

article,talk,andpagearethemostfrequentlyoccurringnouns

fromvaderSentiment.vaderSentimentimportSentimentIntensityAnalyzersentiment_analyzer=SentimentIntensityAnalyzer()defget_sentiment_score(text):returnsentiment_analyzer.polarity_scores(text)['compound']输出:

Thesentimentscoreforatoxiccommentseemstobecloseto-1whereasanon-toxiconehasascore

Thesentimentscoreforatoxiccommentseemstobecloseto-1whereasanon-toxiconehasascoregreaterthan0asexpected

我们已经介绍了大多数基础知识,但是NLP当然还有很多。但是,本文是一个不错的起点,希望对初学者有所帮助,因为这是我刚开始学习的第一件事!

THE END
1.对话语言理解MicrosoftAzureTelefónica 提供一个由 AI 支持的自然言语理解 (NLU) 数字助手 一家电信巨头打造了一款基于自然语言机器人的数字助手,可与客户进行更深层次的互动。 返回到选项卡 文档和资源 开始使用 CLU 文档 LUIS 文档 LUIS 定价 Microsoft Learn 课程 代码示例 代码示例 https://azure.microsoft.com/zh-cn/services/cognitive-services/conversational-language-understanding/
2.自然语言处理学习笔记(一)———概论自然语言处理笔记自然语言处理是计算机科学、人工智能和语言学的交叉领域,涉及词汇量、结构化、歧义性等方面的对比。与编程语言不同,NLP需处理丰富词汇、非结构化信息和歧义。主要任务包括词法分析、信息抽取、文本分类等,常用方法有基于规则的专家系统和统计学习。 摘要由CSDN通过智能技术生成 https://blog.csdn.net/laosao_66/article/details/132017369
3.自然语言处理(NLP)详解准确的关系抽取可以帮助提取出文本中的重要信息,丰富知识图谱和知识库的内容,以及支持各种自然语言处理任务。 技术实现原理说明: 实体识别:首先,对文本进行实体识别,识别出文本中的实体,例如人物、组织、地点等。 关系提取:接下来,根据实体的上下文信息和语义关联,通过模式匹配、特征提取等方法,从文本中提取实体之间的https://zhuanlan.zhihu.com/p/641502778
4.如何成为一名成功的自然语言处理工程师科学人工智能技术如何成为一名成功的自然语言处理工程师:十个步骤 自然语言处理(Natural Language Processing,NLP)是人工智能(AI)领域的一个重要分支,它涉及计算机与人类语言之间的交互和理解。随着人工智能技术的快速发展,NLP工程师成为了炙手可热的职业。本文将介绍成为一名自然语言处理工程师的十个步骤,帮助你在这个领域取得成功。 https://www.163.com/dy/article/IJUS1IRO0556471K.html
5.如何入门自然语言处理回复关键字自然语言处理入门,便可以领取资源 经典书籍我推荐《python自然语言处理》以及《数学之美》这两本书 《python自然语言处理》这本书很适合我们小白来读,作者感觉就是以我们小白的角度来写的。里面主要是处理英文数据的,你可以试着用书里的方法来操作中文数据,这样你会更好的落实和理解书中的代码。 https://www.jianshu.com/p/d0d610fd4b3b
6.自然语言处理入门本书作为入门读物,不会讨论这些高级任务,但了解自然语言处理的整个宏观图景有助于我们开拓视野,找准定位与方向。 1.3 自然语言处理的流派 上一节比较了自然语言与人工语言的异同,展示了自然语言处理的困难所在,介绍了一些常见的 NLP 任务。这一节简要介绍进行自然语言处理的几种不同手法。 https://www.ituring.com.cn/book/tupubarticle/28291
7.如何入门自然语言处理–我爱自然语言处理自然语言处理 如何学习自然语言处理:NLP领域经典《自然语言处理综论》英文版第三版更新 2018年10月17号 52nlp 如何学习NLP? 我觉得先要学好英语、数学和编程,因为英文世…关注我们的微信公众号AINLP 近期文章 探索3D打印与增材制造课程:转变创意为现实的艺术之旅 课程推荐:会计数据分析课程回顾 如何利用https://www.52nlp.cn/tag/%E5%A6%82%E4%BD%95%E5%85%A5%E9%97%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86
8.2深度学习入门自然语言处理v.pdf2深度学习入门自然语言处理v.pdf,深度学习入门(自然语言处理) 科学院大学 目录 1 深度学习概述 发展历程、领域应用 2 为什么使用深度学习 从图像识别说起: 为什么使用深度学习 全连接神经网络 3 如何使用深度学习 卷积神经网络 4 课程实践 实践:手写数字识别 目录 1 深https://max.book118.com/html/2021/1123/8107047065004043.shtm
9.自然语言处理入门(豆瓣)"自然语言处理入门"试读· ··· 自然语言处理(NLP)的目标是使计算机能够像人类一样理解语言。人类语言是一个复杂的符号系统,人们可以通过不同方式传达信息,比如文字、语音、手势、信号等,而所传达的信息也可能因为用词或语调的微妙不同而大相径庭。完全通过机器来理解人类语言目前还是一个很困难的任务。所幸的是https://book.douban.com/subject/34856701/
10.自然语言处理入门完整版PDF电子书下载自然语言处理入门 投诉报错 书籍大小:4.81MB 书籍语言:简体中文 书籍类型:国产软件 书籍授权:免费软件 书籍类别:编程其它 应用平台:PDF 更新时间:2023-05-22 购买链接:京东异步社区 网友评分: 360通过腾讯通过金山通过 4.81MB 详情介绍 自然语言处理(NLP)是一种研究人类语言和计算机交互的技术,涵盖了语音识别、机器翻https://www.jb51.net/books/881251.html
11.自然语言处理入门自然语言处理入门 作者:李洋 ISBN:9787302644484 出版社:清华大学出版社 出版年:2024 Python自然语言处理入门 作者:(日)赤石雅典,(日)江泽美保著 ISBN:9787517098294 出版社:中国水利水电出版社 出版年:2022 PyTorch自然语言处理入门与实战 作者:孙小文 ISBN:9787115595256 出版社:人民邮电出版社 出版年:2022 赠https://www.las.ac.cn/front/book/detail?id=ba7a5b0d3b49bf85a6d2a61466016929
12.HanLP《自然语言处理入门》笔记雷达信号处理、生物医学信号处理等领域的一维信息算法处理。 在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法:机器视觉成为此类算法研究的核心;另外还有2D转3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),运动估计运动补偿算法(Motion estimation/Motion Compensation),去噪算法(Nohttps://cloud.tencent.com/developer/article/1588465
13.《自然语言处理入门》(何晗)简介书评在线阅读当当网图书频道在线销售正版《自然语言处理入门》,作者:何晗,出版社:人民邮电出版社。最新《自然语言处理入门》简介、书评、试读、价格、图片等相关信息,尽在DangDang.com,网购《自然语言处理入门》,就上当当网。http://product.dangdang.com/28469821.html
14.入门自然语言处理必看:图解词向量入门自然语言处理必看:图解词向量 词嵌入(embedding)是机器学习中最惊人的创造, 如果你有输入法打字预测的经历,那么你很有可能是词嵌入(自然语言处理的核心模型)技术的受益者。 在过去的几十年中,基于神经网络模型的词嵌入技术发展迅猛。尤其是最近,包括使用BERT和GPT2等最先进的模型进行语义化词嵌入。https://blog.itpub.net/69946223/viewspace-2655248/
15.自然语言处理(NLP)入门与实践简介:随着人工智能的快速发展,自然语言处理应用愈加广泛。本课首先对其发展历程、现状、技术体系、开发环境等概述。然后从数据准备、可视化、KNN算法模型、实际应用、sklearn算法改进等方面进行实战,旨在帮助大家轻松入门。 第1章 自然语言处理课程概述 介绍什么是自然语言处理,以及发展历程,技术体系,工作原理。 https://www.imooc.com/learn/1069
16.堪称自然语言处理(NLP)的入门经典,也许被你擦肩而过了今天给大家推荐一本自然语言处理的经典入门书,几天前小编就想到这本书《Python自然语言处理》,自然语言处理入门或自学都很合适,堪称NLP的入门经典书。豆瓣评分:8.2。 堪称自然语言处理(NLP)的入门经典,也许被你擦肩而过了 本书基于Python编程语言及名为自然语言工具包(Natural Language Toolkit, NLTK)的开源库。NLTKhttps://labs.epubit.com/articleDetails?id=e004ef7443b44912ad1bb563960c72e2
17.DSGE理论与应用:如何从入门到精通宏观经济学很多人可能学到高级宏微观经济学就已经非常吃力,然后就放弃了。殊不知,他们离DSGE入门只差一步之遥—https://bbs.pinggu.org/thread-7169374-1-1.html