关于spacy的中文/英文模型使用问题!!!

2021-02-22 11:20发布

已经安装spacy , 对应的中文模型也安装了。pip list 里面都能看见spacy,和中文/英文的包   但是一旦运行就报错,就算用的是英文的模型也一样。import spacynlp = sp...

已经安装spacy , 对应的中文模型也安装了。pip list 里面都能看见spacy,和中文/英文的包   但是一旦运行就报错,就算用的是英文的模型也一样。

import spacynlp = spacy.load("zh_core_web_md")
OSError: [E050] Can't find model 'zh_core_web_md'. It doesn't seem to be a Python package or a valid path to a data directory.
SError: [E050] Can't find model 'en_core_web_md'. It doesn't seem to be a Python package or a valid path to a data directory.


1条回答
卡卡
2楼-- · 2021-02-25 14:28



spaCy是最流行的开源NLP开发包之一,它有极快的处理速度,并且预置了词性标注、句法依存分析、命名实体识别等多个自然语言处理的必备模型,因此受到社区的热烈欢迎。中文版预训练模型包括词性标注、依存分析和命名实体识别,由汇智网提供,下载地址:spaCy2.1中文模型包。

1、模型下载安装与使用

下载后解压到一个目录即可,例如假设解压到目录/models/zh_spacy,目录结构如下:


/spacy/zh_model

|-meta.json#模型描述信息

|-tokenizer

|-vocab#词库目录

|-tagger#词性标注模型

|-parser#依存分析模型

|-ner#命名实体识别模型


使用spaCy载入该模型目录即可。例如:


importspacy


nlp=spacy.load('/spacy/zh_model')

doc=nlp('西门子将努力参与中国的三峡工程建设。')

fortokenindoc:

print(token.text)


spaCy2.1中文预训练模型下载地址:


spaCy2.1中文模型包-汇智网sc.hubwiz.com




2、使用词向量

spaCy中文模型采用了中文维基语料预训练的300维词向量,共352217个词条。

例如,查看词向量表大小及维度:


importspacy

nlp=spacy.load('/spacy/zh_model')

print(nlp.vocab.vectors.shape)

print(nlp.vocab['北京'].vector)


结果如下:


(352217,300)

[-0.136166-0.3398350.5281090.417842-0.093321-0.42306-0.475931

-0.1254590.137432-0.5672290.2423390.245993-0.377495-0.274273

...

0.2380250.309567-0.692431-0.078103-0.268160.0518050.075192

-0.0529020.376131-0.2212350.23855-0.116850.40507]


3、使用词性标注

spaCy中文词性标注模型采用UniversalDependency的中文语料库进行训练。


importspacy

nlp=spacy.load('/spacy/zh_model')

doc=nlp('西门子将努力参与中国的三峡工程建设。')

fortokenindoc:

print(token.text,token.pos_,token.tag_)


将得到如下的词性标注结果:


西门子NNP

将BB

努力RB

参与VV

中国NNP

的DEC

三峡工程NN

建设NN


4、使用依存分析

spaCy中文依存分析模型采用UniversalDependency的中文语料库进行训练。

例如,下面的代码输出各词条的文本、依赖关系以及其依赖的词条:


importspacy

nlp=spacy.load('/spacy/zh_model')

doc=nlp('西门子将努力参与中国的三峡工程建设。')

fortokenindoc:

print(token.text,token.dep_,token.head)


输出结果如下:


西门子nsubj参与

将advmod参与

努力advmod参与

参与ROOT参与

中国det建设

的case:dec中国

三峡工程nmod建设

建设obj参与

。punct参与


也可以使用spaCy内置的可视化工具:


fromspacyimportdisplacy

displacy.render(doc,type='dep')


结果如下:





5、使用命名实体识别

spaCy中文NER模型采用ontonotes5.0数据集训练。

例如:


importspacy

nlp=spacy.load('/spacy/zh_model')

doc=nlp('西门子将努力参与中国的三峡工程建设。')

forentindoc.ents:

print(ent.text,ent.label_)


输出结果如下:


西门子ORG

中国GPE

三峡工程FAC


也可以使用spaCy内置的可视化工具:


fromspacyimportdisplacy

displacy.render(doc,type='ent')


运行结果如下:






原文链接:spaCy2.1中文模型包—汇智网