已经安装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.
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中文模型包—汇智网
一周热门 更多>