全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2023-12-15_【AIGC篇】NLP任务入门:分词、词性标注与命名实体识别

您的位置:首页 >> 新闻 >> 行业资讯

【AIGC篇】NLP任务入门:分词、词性标注与命名实体识别 前言?大家上午好,这里是我们《AIGC》系列的第一篇内容。如果有小伙伴也对AIGC感兴趣,可以关注AIGC这个专栏,今后我还会继续更新这个系列,我们一起体验这段有趣的过程??????。 ?引入话不多说,先给大家介绍一下AIGC。 生成式人工智能——AIGC(Artificial Intelligence Generated Content),是指基于生成对抗网络、大型预训练模型等人工智能的技术方法,通过已有数据的学习和识别,以适当的泛化能力生成相关内容的技术。 而自然语言处理(NLP)是人工智能领域中的一个重要分支,致力于使计算机能够理解、解释和生成人类语言。在NLP的学习过程中,初学者经常会接触到一些基础任务,其中包括 「分词」 、 「词性标注」 和 「命名实体识别(NER)」 。这些任务构成了NLP的基础,为更高级的语言处理任务奠定了基础。 那么今天我们就来了解一下这三个任务。 使用前的准备工作「Colaboratory」 在开始之前,我们要注册登录 https://colab.research.google.com/ 这个网站,我们今天讲的所有操作都是在这个平台上进行的。 「Colab是一个由Google提供的免费GPU的Jupyter云服务平台」。在个人电脑没有足够计算资源的情况下,可以登录这个平台进行一些较小规模的计算。 colab.png一。分词:理解语言的基本单元分词是NLP中的第一步,它涉及将文本拆分成词汇单元,为后续处理提供基本的语言结构。 需要注意的是,python中有多种分词方法,像基于空格的分词、NLTK库分词、 Jieba分词、正则表达式分词等等,我们这里用到的是「Transformers库」 使用 Transformers 库实现分词transformers库是Hugging Face开发的一个流行的自然语言处理库,它基于Py用transformers实现分词模块ensorFlow,提供了各种预训练的NLP模型,包括BERT、GPT、RoBERTa等。 接下来我们来看看transformers库是如何实现分词模块的。 1.「安装 Transformers 库:」 !pipinstalltransformers 这行代码使用了 !pip 命令,它通常在命令行环境中执行。在代码中直接执行 !pip install transformers 会安装 Transformers 库,如果我们在命令行中运行代码,可以在命令行中执行这个命令来安装。 「导入 BertTokenizer:」 fromtransformersimportBertTokenizer 首先,从 Transformers 库中导入 BERT 分词器。 「初始化分词器:」 tokenizer=BertTokenizer.from_pretrained('bert-base-uncased') 通过 BertTokenizer.from_pretrained 方法,我们初始化了一个预训练的 BERT 分词器,使用的是 "bert-base-uncased" 模型。 「输入文本:」 text=str("Transformersmakenaturallanguageprocessingtaskseasy.") 我们创建一个字符串 text,准备对这个文本进行分词和编码。 「分词和编码:」 encoding=tokenizer(text,return_tensors='pt',padding=True,truncation=True) 通过调用 tokenizer 对象,将文本进行了分词和编码。参数 return_tensors='pt' 表示返回 PyTorch 张量。padding=True 表示对序列进行填充,truncation=True 表示截断文本,确保其长度符合模型的输入要求。 「获取输入张量:」 tokens=encoding['input_ids'] 从编码结果中提取了 'input_ids' 键对应的张量,它包含了经过分词和编码的文本。 「将 token IDs 转为词汇:」 decoded_tokens=tokenizer.convert_ids_to_tokens(tokens[0].tolist()) 使用分词器的 convert_ids_to_tokens 方法将 token IDs 转换回单词。 「打印结果:」 print("原始文本:",text) print("分词结果:",decoded_tokens) 最后,我们打印原始文本和分词结果。 「结果如下图所示:」 这个过程将文本转换为了 BERT 模型可接受的输入形式,其中 tokens 是一个包含了分词后的文本对应的 token IDs 的 PyTorch 张量。而 decoded_tokens 是将 token IDs 转换回词汇的结果。 二、词性标注:了解词汇的语法角色使用 NLTK 库实现词性标注一旦文本被分词,下一步就是为每个词汇赋予词性标签。 词性标注可以帮助我们理解每个词汇在句子中的语法角色,为进一步的语法分析和语义理解提供支持。 这段代码使用了 NLTK(Natural Language Toolkit)库来进行词性标注。接下来我们来看看NLTK库如何实现词性标注。 「导入NLTK库:」 importnltk fromnltkimportpos_tag fromnltk.tokenizeimportword_tokenize 首先,我们要用到NLTK库,先导入NLTK库及其相关模块。其中,pos_tag用于进行词性标注,word_tokenize用于对文本进行分词。 「下载NLTK数据:」 nltk.download('punkt') nltk.download('averaged_perceptron_tagger') 下载NLTK所需的数据,其中 'punkt' 是用于分词的数据,'averaged_perceptron_tagger' 是用于词性标注的数据。 「输入文本:」 text="Naturallanguageprocessingisafascinatingfield." 这里提供要进行词性标注的文本。 「分词:」 words=word_tokenize(text) 使用 word_tokenize 对文本进行分词,将文本拆分成单词。 「词性标注:」 pos_tags=pos_tag(words) 使用 pos_tag 对分词后的单词进行词性标注,得到每个单词及其对应的词性标签。 「打印结果:」 print("原始文本:",text) print("词性标注结果:",pos_tags) 打印原始文本和词性标注的结果。 这样,就完成了一个简单的词性标注任务,得到了输入文本中每个单词的词性标签。NLTK中的 pos_tag 方法使用的是基于感知器的平均模型,它在处理一般文本时效果比较好。这个例子演示了NLTK库如何帮助我们进行自然语言处理中的基本任务。 屏幕截图 2023-11-29 142513.png拓展一下这里,得出的结果比较抽象,如果我们想要它变成我们能看懂的样子,应该怎么做呢? 我们可以将NLTK中的词性标签映射到更常见的词性名称: importnltk fromnltkimportpos_tag fromnltk.tokenizeimportword_tokenize nltk.download('punkt') nltk.download('averaged_perceptron_tagger') defsimplify_pos_tag(tag): iftag.startswith('N'): return'Noun' eliftag.startswith('V'): return'Verb' eliftag.startswith('R'): return'Adverb' eliftag.startswith('J'): return'Adjective' else: return'Other' #输入文本 text="Naturallanguageprocessingisafascinatingfield." #分词 words=word_tokenize(text) #词性标注 pos_tags=pos_tag(words) #简化词性标签 simplified_pos_tags=[(word,simplify_pos_tag(tag))forword,taginpos_tags] #打印结果 print("原始文本:",text) print("词性标注结果:",simplified_pos_tags) 屏幕截图 2023-11-29 144024.png现在得出的词性标注我们就能看懂了,在这个例子中,我们定义了一个简化词性标签的函数 simplify_pos_tag,将NLTK的词性标签映射到更通用的词性名称。这样,最终的输出结果更容易理解。 「Adjective 形容词」 「Noun 名词」 「Verb 动词」 「Other 其他」 三、命名实体识别:发现文本中的重要实体命名实体识别是NLP中的关键任务,它涉及在文本中识别并分类命名实体,如人名、地名、组织机构等。 使用 spaCy 库实现命名实体识别在Python中,我们可以使用NLTK库或spaCy库来进行命名实体识别(Named Entity Recognition,简称NER)。下面我们使用spaCy库进行简单的命名实体识别。 首先,确保已经安装了spaCy库: !pipinstallspacy 然后,下载并安装英语模型: python-mspacydownloaden_core_web_sm 现在,我们可以使用以下代码进行命名实体识别: importspacy #加载英语模型 nlp=spacy.load("en_core_web_sm") #输入文本 text="AppleInc.wasfoundedbySteveJobsandSteveWozniakin1976.ItisheadquarteredinCupertino,California." #处理文本 doc=nlp(text) #打印命名实体 print("原始文本:",text) print("命名实体识别结果:") forentindoc.ents: print(f"{ent.text}-{ent.label_}") 屏幕截图 2023-11-29 153401.png屏幕截图 2023-11-29 153414.png这样我们就得出结果,这个例子中,命名实体识别结果包括公司名("Apple Inc.")、人名("Steve Jobs"和"Steve Wozniak")、日期("1976")等。 拓展一下ORG:组织PERSON:人名DATE:日期GPE:地点(国家、城市等)如果对这些标签不太熟悉,可以查阅spaCy的文档以获取更多信息。 另外,为了更好地展示和解释结果,可以将结果中的标签转换为更常见的术语,例如: ORG 转为 "组织"PERSON 转为 "人名"DATE 转为 "日期"GPE 转为 "地点"下面是转换标签的代码: importspacy #加载英语模型 nlp=spacy.load("en_core_web_sm") #输入文本 text="AppleInc.wasfoundedbySteveJobsandSteveWozniakin1976.ItisheadquarteredinCupertino,California." #处理文本 doc=nlp(text) #转换标签为更常见的术语 defconvert_label(label): iflabel=="ORG": return"组织" eliflabel=="PERSON": return"人名" eliflabel=="DATE": return"日期" eliflabel=="GPE": return"地点" else: returnlabel #打印命名实体(转换后的标签) print("原始文本:",text) print("命名实体识别结果:") forentindoc.ents: converted_label=convert_label(ent.label_) print(f"{ent.text}-{converted_label}") 这样,输出中的命名实体标签就以更常见的术语呈现了。 结语那么我们今天的内容就结束啦,欢迎各路大神在评论区讨论~~ 点赞收藏不迷路,咱们下期再见ヾ( ̄▽ ̄)ByeBye~ 阅读原文

上一篇:2022-10-08_「转」一种基于神经网络的策略,可增强量子模拟 下一篇:2024-10-30_学完冰学、佐学、柯学……我悟到了搞抽象的3点规律

TAG标签:

17
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价