python-3.x 什么是nlp在spacy?

m2xkgtsf  于 2023-10-21  发布在  Python
关注(0)|答案(4)|浏览(130)

通常我们从:

nlp = spacy.load('en_encore_web_sm') # or medium, or large

nlp = English()

然后:

doc = nlp('my text')

然后我们可以做很多有趣的事情,即使不知道第一行的性质。
但nlp到底是什么?引擎盖下面到底发生了什么?“nlp”是一个预先训练好的模型,就像机器学习中理解的那样,因此是位于光盘上某个地方的某个大文件吗?
我遇到了一个解释,即“nlp”是一个“对象,包含过程管道”,但这只是解释了一点。

bksxznpy

bksxznpy1#

你可以检查任何python对象的类型:

nlp = spacy.load('en_encore_web_sm') # or medium, or large
print(type(nlp))
print(dir(nlp))  # view a list of attributes

你会得到类似这样的东西(取决于传递的参数)

<class 'spacy.lang.en.English'>

你是对的,它类似于“预训练”模型,因为它包含词汇,二进制权重等。
请查看官方文档:
https://spacy.io/api/language

jm81lzqq

jm81lzqq2#

你可以通过探索它来推断nlp()是什么。举例来说:

import spacy
from spacy import displacy

nlp = spacy.load("en_core_web_lg")

text = "Elon Musk 889-888-8888 [email protected] Jeff Bezos (345)123-1234 [email protected] Reshma Saujani [email protected] 888-888-8888 Barkevious Mingo"

text = nlp(text)

print(text)

将打印完全相同的文本。另一方面,如果你这样做:

for word in text.ents:
    print(word.text,word.label_)

你将得到字符串的实体:

Elon Musk PERSON
889-888 CARDINAL
Jeff Bezos PERSON
345)123 CARDINAL
Reshma Saujani PERSON

它确实是针对英语语言的大型预训练模型,并且具有许多功能(解析器,lemmatizer,tagger),如上面所示。我希望这有助于澄清你的问题。

o0lyfsai

o0lyfsai3#

nlp是一个spaCy管道。你可以在这里看到它的细节:https://spacy.io/models/en#en_core_web_sm
管道包含多个组件,在本例中:

*tok2vec:用于文本标记化和矢量化的Token-to-Vector模型
*tagger:词性标注器
*parser:依赖解析器
*attribute_ruler:基于规则的属性Map
*lemmatizer:词形化(词的基本形式)
*ner:命名实体识别

希望这对你有帮助。在Pipelines的文档中有更多的细节:https://spacy.io/usage/processing-pipelines

esbemjvw

esbemjvw4#

spaCy是NLP(自然语言处理)领域的一个流行库,专为生产使用而设计。当你使用函数spacy.load('en_core_web_sm')或初始化一个English()对象时,你正在创建一个NLP处理管道。

  1. nlp = spacy.load('en_core_web_sm '):
    这将加载一个名为en_core_web_sm的预训练模型,这是spaCy的小型英语模型之一。该模型具有几个开箱即用的功能,例如标记化、词性标记、命名实体识别和依赖关系解析。
  2. nlp = English():
    这将创建一个空白的英语处理管道。它将不包含en_core_web_sm的功能,因为它没有加载任何预先训练的模型。它将主要标记你的文本,但没有额外的注解,如词性标签或命名实体。
    3.Pipeline:
    当你调用doc = nlp('my text ')时,文本由nlp管道处理。根据模型或您如何设置它,它将对文本进行标记,标记词性,解析依赖关系,识别命名实体,等等。

相关问题