通常我们从:
开始nlp = spacy.load('en_encore_web_sm') # or medium, or large
或
nlp = English()
然后:
doc = nlp('my text')
即使不知道第一行的性质,我们也可以从中得到很多乐趣。
但是“nlp”到底是什么?幕后到底发生了什么?正如机器学习中所理解的那样,“nlp”是一个预训练模型,因此一些大文件位于光盘上的某个位置吗?
我遇到了一个解释,“nlp”是一个“对象,包含进程管道”,但这只能解释一点。
你可以随时检查任何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'>
你是对的,它类似于“预训练”模型,因为它包含词汇、二进制权重等。
请查看官方文档:
您可以通过探索来推断
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
它确实是一个大型的英语预训练模型,并且具有许多功能(解析器、词形还原器、标记器),如上面演示的那样。希望这有助于澄清您的问题。
nlp
是一个 spaCy 管道。您可以在这里查看详细信息:https://spacy.io/models/en#en_core_web_sm
管道包含多个组件,在本例中:
希望这有帮助。有关管道的文档中有更多详细信息:https://spacy.io/usage/processing-pipelines