【问题标题】:What is nlp in spacy?spacy中的nlp是什么?
【发布时间】:2022-11-10 20:55:53
【问题描述】:

通常我们从:

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

或者

nlp = English()

然后:

doc = nlp('my text')

然后,即使不知道第一行的性质,我们也可以从中获得很多乐趣。

但究竟什么是“nlp”?引擎盖下发生了什么? “nlp”是机器学习中所理解的预训练模型,因此某些大文件位于磁盘上的某处吗?

我遇到了一个解释,“nlp”是一个“对象,包含流程管道”,但这只是解释了一点。

【问题讨论】:

  • 这似乎不是关于非工作代码的编程问题,可能应该在Data Science 上。 Spacy 文档或论坛中的一些研究也可能会直接回答您的问题;特别是,我认为您在询问 Doc 对象。
  • @kwinkunks 我问的是 Doc intantiating 之前的步骤,而不是 Doc 对象。
  • SO 有很多有用的信息,不仅是关于“不工作的代码”。例如。 stackoverflow.com/questions/53645882/pandas-merging-101

标签: python-3.x machine-learning nlp spacy


【解决方案1】:

您可以随时检查任何 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

【讨论】:

    【解决方案2】:

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

    import spacy
    from spacy import displacy
    
    nlp = spacy.load("en_core_web_lg")
    
    text = "Elon Musk 889-888-8888 elonpie@tessa.net Jeff Bezos (345)123-1234 bezzi@zonbi.com Reshma Saujani example.email@email.com 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
    

    它确实是英语语言的大型预训练模型,并且具有许多功能(解析器、词形还原器、标记器),如上所示。希望这有助于澄清您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      相关资源
      最近更新 更多