通过python进行nlp操作

这篇具有很好参考价值的文章主要介绍了通过python进行nlp操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

NLP简介

NLP简介 自然语言处理属于人工智能领域。所有计算机都擅长对数值数据进行处理,NLP这一部分计算机技术是处理文本数据,
用来分析世界上不同的语言的。 现在NLP的应用大多都在机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、
文本语义对比、语音识别、中文OCR等方面。

安装Spacy和NLTK

pip3 install nltk

有些时候的nltk代码需要语料库才能运行,运行下面的python代码下载语料库。

import nltk
nltk.download()

Spacy配置(安装spacy库,命令行输入以下命令):
pip3 install spacy

接着下载spacy的英语语言库:
python -m spacy download en

有可能会下载失败,这时候我们需要去官网将*.whl文件下载下来,然后再离线安装:

# 官网:https://spacy.io/models/zh
# 离线安装:pip install *.whl
# zh_core_web_sm/en_core_web_sm

注意spacy使用时候需要声明使用的模型

import spacy
 
en_nlp = spacy.load('en_core_web_sm')
zh_nlp = spacy.load("zh_core_web_sm")

spacy库各语种下载传送门:https://spacy.io/usage/models#quickstart

标记化(Tokenization)

当一个句子分解成小的单个单词时,这些单词被称为标记,这个过程被称为标记化。
前缀、中缀、后缀和例外中的句子分解,我们将使用 spacy 库学习标记化:

import spacy

# 加载spacy英文库
load_en = spacy.load("en_core_web_sm")

example_string = "I'm going to meet\ M.S. Dhoni."

# 加载字符串到库
words = load_en(example_string)

for token in words:
    print(token.text)

"""输出
I
'm
going
to
meet\
M.S.
Dhoni
.
"""

我们可以从索引和切片中获取标记

str1 = load_en(u"This laptop belongs to Amit Chauhan")

print(str1[1])
print(str1[2:4])

词干

词干提取是将单词还原为词根的过程。

词干分析器的类型:

  1. Porter Stemmer

  2. Snowball Stemmer

Spacy不包含词干分析器,因此我们将使用 NLTK库进行词干提取。

Porter词干分析器于1980年开发,它的功能就是将单词缩减为其词干或词根:

import nltk

from nltk.stem.porter import PorterStemmer

pot_stem = PorterStemmer()

# 随机次测试搬运工
words = ['happy', 'happier', 'happiest', 'happiness', 'breathing', 'fairly']
for word in words:
    print("word--->", pot_stem.stem(word))

"""输出
word---> happi
word---> happier
word---> happiest
word---> happi
word---> breath
word---> fairli
"""

上面这些词被简化为仅有词干,但是porter词干分析器的结果并不是很让人满意。

因此,就用Snowball词干分析器进行改进:

from nltk.stem.snowball import SnowballStemmer

pot_stem = SnowballStemmer(language="english")

# 随机次测试搬运工
words = ['happy', 'happier', 'happiest', 'happiness', 'breathing', 'fairly']
for word in words:
    print("word--->", pot_stem.stem(word))

"""输出
word---> happi
word---> happier
word---> happiest
word---> happi
word---> breath
word---> fair
"""

词形还原

词形还原比词干提取要好,而且信息丰富,除了词干之外,还可以确定词周围的词性。
因为spacy有词形还原,没有办法提取词干,所以就使用spacy进行词形还原:

import spacy

load_en = spacy.load("en_core_web_sm")

example_string = load_en(u"I'm happy in this happiest place with all happiness. It feels how happier we are")

for word in example_string:
    print(word.text, word.pos_, word.lemma, word.lemma_)

"""词形还原
I PRON 4690420944186131903 I
'm AUX 10382539506755952630 be
happy ADJ 244022080605231780 happy
in ADP 3002984154512732771 in
this DET 1995909169258310477 this
happiest ADJ 244022080605231780 happy
place NOUN 7512738811199700769 place
with ADP 12510949447758279278 with
all DET 13409319323822384369 all
happiness NOUN 2779265004918961325 happiness
. PUNCT 12646065887601541794 .
It PRON 10239237003504588839 it
feels VERB 5741770584995928333 feel
how SCONJ 16331095434822636218 how
happier ADJ 244022080605231780 happy
we PRON 16064069575701507746 we
are AUX 10382539506755952630 be
"""

在上面的词形还原代码中,单词的描述给出了所有信息。每个单词的词性和输出中的数字是英语语言库中的特定引理。
观察结果中的happiest to happy、happier to happy的结果,得出词形还原比词干分析器更好的结论。

停止词

停止词用于过滤一些经常重复且但不提供有关文本信息的词。在Spacy中,有一些停用词的内置列表:

import spacy

load_en = spacy.load("en_core_web_sm")

print(load_en.Defaults.stop_words)

词性 pos

词性是获取文本和单词信息的过程,或者说是获取单词的语法信息,深层信息对于自然语言处理非常重要。

有两种类型的标签:对于名词,动词使用粗标签;对于复数名词,过去时类型,使用细粒度标签 (fine-grained tags):

import spacy

load_en = spacy.load("en_core_web_sm")

str1 = load_en(u"This laptop belongs to Amit Chauhan")

检查有索引位置的标记:
print(str1[1])

调用这个token操作:

# pos_ tag操作

print(str1[1].pos_)

# output: NOUN

# 了解细粒度信息

print(str1[1].tag_)

# output: NN

粗标记是 NOUN,细粒度 标记是NN,可以看出这个名词是单数。

借助spacy了解什么是 POS 计数:

pos_count = str1.count_by(spacy.attrs.POS)
print(pos_count)

# 输出:
# {90: 1, 92: 1, 100: 1, 85: 1, 96: 2}

这些数字是什么?咱们接着看!

先来看看90这个数字是什么意思:

ret = str1.vocab[90].text
print(ret)

# 输出:DET

DET表示数字90属于限定词,数值1属于它,DET在一个句子中重复了一次。

命名实体识别:NER

命名实体识别对于识别文本并将其赋予标签实体非常有用,无论它是原始形式还是非结构化形式。

当你不知道文本的实体类型时,NER帮助你标记它们并赋予文本含义。

使用spacy做NER示例:

import spacy

load_en = spacy.load('en_core_web_sm')

file = load_en(u" I am living in India, Studying in IIT")

for ner in file.ents:
    print(ner.text + ' - ' + ner.label_ + ' - ' + str(spacy.explain(ner.label_)))

输出结果:
India - GPE - Countries, cities, states
Studying - GPE - Countries, cities, states
IIT - ORG - Companies, agencies, institutions, etc.

面的代码中用NER分析文本,发现印度是一个国家名称或州名,所以我们可以知道标记是用实体标注完成的。文章来源地址https://www.toymoban.com/news/detail-478454.html

到了这里,关于通过python进行nlp操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【自然语言处理】自然语言处理 --- NLP入门指南

    NLP的全称是 Natuarl Language Processing ,中文意思是自然语言处理,是人工智能领域的一个重要方向 自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能到计算语言学的多个计算研究领域都在研究计算机与人类语言之间的相互作用。它主要关注计算机

    2024年02月03日
    浏览(62)
  • 自然语言处理-NLP

    目录 自然语言处理-NLP 致命密码:一场关于语言的较量 自然语言处理的发展历程 兴起时期 符号主义时期 连接主义时期 深度学习时期 自然语言处理技术面临的挑战 语言学角度 同义词问题 情感倾向问题 歧义性问题 对话/篇章等长文本处理问题 探索自然语言理解的本质问题

    2024年02月11日
    浏览(78)
  • NLP(自然语言处理)

     一、NLP是什么 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究

    2024年02月02日
    浏览(66)
  • NLP自然语言介绍

    自然语言处理(Natural Language Processing, NLP)是人工智能领域中研究和处理人类语言的一项技术。它涉及将人类语言转化为计算机可理解和处理的形式,以便计算机能够理解、分析、生成和回复自然语言。 NLP技术的目标是使计算机能够像人类一样理解和处理语言。它包括以下几

    2024年01月24日
    浏览(43)
  • 自然语言处理(NLP)

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram) 自然语言处理PaddleNLP-词法分析技术及其应用 自然语言处理Pa

    2024年02月08日
    浏览(50)
  • 自然语言处理NLP:一文了解NLP自然语言处理技术,NLP在生活中的应用,图导加深了解,NLP语料库,NLP开源工具

    目录 1.自然语言处理NLP 1.1 NLP中英对照(双份) 1.2 相关文章  2.NLP语料库

    2024年02月09日
    浏览(61)
  • 【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取

       语言 是一种使用具有共同处理规则的沟通指令的广义概念,这些指令可以通过视觉、声音或触觉等方式传递。语言可以分为自然语言、动物语言和计算机语言。    自然语言 是人类发展过程中形成的一种信息交流方式,它包括口语和书面语,并且反映了人类的思想。

    2024年03月12日
    浏览(142)
  • 自然语言处理(NLP) —— 心理语言学

            认知科学和心理语言学是两个密切相关的领域,它们研究 认知过程和语言使用是如何相互作用的。         在历史上,这两个领域的发展经历了几个重要的阶段: 1.1.1 19世纪晚期(内省法)         Wundt 和其他德国心理学家使用一种叫做 内省法 的研究方

    2024年02月21日
    浏览(62)
  • 聊聊自然语言处理NLP

    自然语言处理(NLP)的正式定义:是一个使用计算机科学、人工智能(AI)和形式语言学概念来分析自然语言的研究领域。不太正式的定义表明:它是一组工具,用于从自然语言源(如web页面和文本文档)获取有意义和有用的信息。 NLP工具的实现一般是基于机器学习与深度学习、其它

    2024年02月14日
    浏览(66)
  • NLP自然语言处理介绍

    自然语言处理(NLP,Natural Language Processing)是一门涉及计算机与人类语言之间交互的学科。它的目标是使计算机能够理解和生成人类语言,从而更好地处理和解析大量的文本数据。NLP不仅是人工智能领域中一个重要的分支,也是当今社会应用广泛的领域之一。 在NLP中,一个基

    2024年01月21日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包