SpaCy,强大的自然语言处理工具!
做数据分析的朋友们可能听说过jieba分词,不过要是想玩点高级的自然语言处理,SpaCy绝对是你的好帮手。
这个工具不光能分词,还能搞定命名实体识别、词性标注、句法分析等一大堆高大上的NLP任务。
1.
安装和基本使用
先把环境整起来,用pip装上SpaCy:
pipinstallspacypython-mspacydownloaden_core_web_sm#下载英语模型
来看个最基础的例子:
importspacy
nlp=spacy.load('en_core_web_sm')text=“Google创始人LarryPage在斯坦福大学读博士时认识了SergeyBrin”doc=nlp(text)
分词
fortokenindoc:print(token.text)
温馨提示:第一次用SpaCy时记得下载语言模型,不然会报错哦~模型有大有小,刚开始学习用小的就够啦。
2.
实体识别有多强
SpaCy最牛的地方就是能认出文本里的人名、地名、组织机构等实体,看代码:
text=“苹果公司的CEO库克参加了在纽约举办的发布会”doc=nlp(text)
forentindoc.ents:print(f“{ent.text}:{ent.label_}”)#输出实体及其类型
我之前用这个功能分析新闻数据,轻轻松松就把里面提到的公司和人名都抽出来了,贼好用!
3.
词性标注和依存分析
SpaCy还能判断句子里每个词是名词还是动词,以及词之间的关系:
text=“我家的小猫特别喜欢吃鱼”doc=nlp(text)
fortokenindoc:print(f“{token.text}->{token.pos_}”)#输出词性
句子结构分析也是小菜一碟:
温馨提示:中文处理记得装中文模型zh_core_web_sm,效果会更好。
4.
自定义管道组件
SpaCy玩得溜的话还能自己加新功能:
@Language.component(“my_component”)defmy_component(doc):
自定义处理逻辑
returndoc
nlp.add_pipe(“my_component”)
写代码的时候碰到过好多坑,比如忘记注册组件导致各种报错,害我调试了好久。
5.
加速处理大文本
处理大量文本时可以用多进程提速:
texts=[“文本1”,“文本2”,“文本3”]docs=nlp.pipe(texts,n_process=4)#开4个进程并行处理
这招我经常用,处理上百万条文本时快得飞起。不过得注意内存占用,别把电脑整崩溃了。
玩SpaCy的时候遇到不懂的就去看官方文档,里面讲得特别详细。
刚开始可能会觉得有点难上手,但是坚持一下,慢慢就会发现它真的是个超级好用的工具。
等你掌握了这些基础操作,再慢慢研究更高级的用法,分分钟就能搞定各种NLP任务。
领取专属 10元无门槛券
私享最新 技术干货