网易云课堂AI工程师(自然语言处理)学习笔记,接上一篇《英文文本处理工具库1 — NLTK》。

1. spaCy简介

spaCyspaCy是Python和Cython中的高级自然语言处理库,它建立在最新的研究基础之上,从一开始就设计用于实际产品。

spaCy 带有预先训练的统计模型和单词向量,目前支持 34+语言的标记(暂不支持中文)。它具有世界上速度最快的句法分析器,用于标签的卷积神经网络模型,解析和命名实体识别以及与深度学习整合。

2. spaCy与NLTK的对比

image.png

3. spaCy安装

windows + Anoconda环境,使用conda命令安装比较方便:

conda config --add channels conda-forge

conda install spacy

python -m spacy download en

4. spaCy基本操作

(1)英文Tokenization(标记化/分词)

import spacy

nlp = spacy.load('en')

doc = nlp('Hello! My name is LittleTree!')

print("分词如下:")

for token in doc:

print(token.text)

print("\n断句如下:")

for sent in doc.sents:

print(sent)

输出

每个token对象有着非常丰富的属性,如下的方式可以取出其中的部分属性。

doc = nlp("Next week I'll be in SZ.")

for token in doc:

print("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}".format(

token.text,

token.idx,

token.lemma_,

token.is_punct,

token.is_space,

token.shape_,

token.pos_,

token.tag_

))

输出

(2)词性标注

doc = nlp("Next week I'll be in Shanghai.")

print([(token.text, token.tag_) for token in doc])

输出:

[('Next', 'JJ'), ('week', 'NN'), ('I', 'PRP'), ("'ll", 'MD'), ('be', 'VB'), ('in', 'IN'), ('Shanghai', 'NNP'), ('.', '.')]

(3)命名实体识别

doc = nlp("Next week I'll be in Shanghai.")

for ent in doc.ents:

print(ent.text, ent.label_)

输出:

Next week DATE

Shanghai GPE

还可以用非常漂亮的可视化做显示:

from spacy import displacy

displacy.render(doc, style='ent', jupyter=True)

输出

(4)chunking/组块分析

spaCy可以自动检测名词短语,并输出根(root)词,比如下面的"Journal","piece","currencies".

doc = nlp("Wall Street Journal just published an interesting piece on crypto currencies")

for chunk in doc.noun_chunks:

print(chunk.text, chunk.label_, chunk.root.text)

输出

(5)句法依存解析

doc = nlp('Wall Street Journal just published an interesting piece on crypto currencies')

for token in doc:

print("{0}/{1}

token.text, token.tag_, token.dep_, token.head.text, token.head.tag_))

输出

(6)词向量使用

NLP中有一个非常强大的文本表示学习方法叫做word2vec,通过词的上下文学习到词语的稠密向量化表示,同时在这个表示形态下,语义相关的词在向量空间中会比较接近。也有类似v(爷爷)-v(奶奶) ≈ v(男人)-v(女人)的关系。

在spaCy中,要使用英文的词向量,需先下载预先训练好的结果,终端命令如下:

python3 -m spacy download en_core_web_lg

下面我们使用词向量来做一些有趣的事情。

nlp = spacy.load('en_core_web_lg')

from scipy import spatial

# 余弦相似度计算

cosine_similarity = lambda x, y: 1 - spatial.distance.cosine(x, y)

# 男人、女人、国王、女王 的词向量

man = nlp.vocab['man'].vector

woman = nlp.vocab['woman'].vector

queen = nlp.vocab['queen'].vector

king = nlp.vocab['king'].vector

# 我们对向量做一个简单的计算,"man" - "woman" + "queen"

maybe_king = man - woman + queen

computed_similarities = []

# 扫描整个词库的词向量做比对,召回最接近的词向量

for word in nlp.vocab:

if not word.has_vector:

continue

similarity = cosine_similarity(maybe_king, word.vector)

computed_similarities.append((word, similarity))

# 排序与最接近结果展示

computed_similarities = sorted(computed_similarities, key=lambda item: -item[1])

print([w[0].text for w in computed_similarities[:10]])

输出:

['Queen', 'QUEEN', 'queen', 'King', 'KING', 'king', 'KIng', 'Kings', 'KINGS', 'kings']

(7)词汇与文本相似度

在词向量的基础上,spaCy提供了从词到文档的相似度计算的方法,下面的例子是它的使用方法。

# 词汇语义相似度(关联性)

banana = nlp.vocab['banana']

dog = nlp.vocab['dog']

fruit = nlp.vocab['fruit']

animal = nlp.vocab['animal']

print(dog.similarity(animal), dog.similarity(fruit)) # 0.6618534 0.23552845

print(banana.similarity(fruit), banana.similarity(animal)) # 0.67148364 0.2427285

# 文本语义相似度(关联性)

target = nlp("Cats are beautiful animals.")

doc1 = nlp("Dogs are awesome.")

doc2 = nlp("Some gorgeous creatures are felines.")

doc3 = nlp("Dolphins are swimming mammals.")

print(target.similarity(doc1)) # 0.8901765218466683

print(target.similarity(doc2)) # 0.9115828449161616

print(target.similarity(doc3)) # 0.7822956752876101

持续更新中,要不要点个小❤❤鼓励鼓励我(✿◡‿◡)

spacy 英文模型下载_英语文本处理工具库2 — spaCy相关推荐

  1. spacy 英文模型下载_spaCy2.1中文模型包

    1.预训练模型概述 spaCy是最流行的开源NLP开发包之一,它有极快的处理速度,并且预置了 词性标注.句法依存分析.命名实体识别等多个自然语言处理的必备模型. 本包提供适用于spaCy 2.1的中文 ...

  2. spacy 英文模型下载_spaCy

    spaCy 是一个Python自然语言处理工具包,诞生于2014年年中,号称"Industrial-Strength Natural Language Processing in Pytho ...

  3. 英语文本处理工具库——spaCy

    spaCy的主要操作: 分词断句 import spacy nlp = spacy.load('en') doc = nlp('Hello World! My name is HanXiaoyang' ...

  4. spacy 英文模型

    import spacy nlp = spacy.load('en') #加载英文模型 doc = nlp(u"it's word tokenize test for spacy" ...

  5. sizebox模型下载_彻底弄懂CSS盒模型BoxModel

    前言 假如你想尝试一下不用表格来排版网页,而是用CSS来排版你的网页,也就是常听的用DIV来编排你的网页结构,又或者说你想学习网页标准设计,再或者说你的上司要你改变传统的表格排版方式,提高企业竞争力, ...

  6. mysql英文怎么发音_英语口语怎么练最有效?知道这3个方法就够了!

    英语口语自学教程,怎么学好英语口语?对于少儿来说,英语口语不仅是英语学习的一部分,更是一项技能,学会了英语口语,对孩子未来的发展有很大的帮助,能够让孩子获得更好的生活和工作,所以孩子很有必要把英语口语 ...

  7. 创意英文字体下载_电子游戏中字体的18种创意用途

    关于是否应将电子游戏视为一种艺术形式存在争议. 无论您站在哪一边,都不能否认, 视频游戏确实将多种形式的艺术作品纳入了故事情节,艺术指导或音频的叙述和游戏玩法. 还已知视频游戏使用多种形式的排版 ,以 ...

  8. 英文版权声明_英语课堂26个英文字母的有趣手势法(附视频)

    点击图片查看大会通知 这组萌趣的26个字母作品不单单教会大家如何用手势表示字母,还让我们看到了与该字母相关动物的有趣漫画.对于小朋友来说这是很好的英文字母学习伙伴.我们一起来看看吧~ (请在wifi情 ...

  9. 考研辅导班视频资料下载_英语_数学_法硕_新传_司考_国考_公考

    考研真题考研基础课考研专业课资料下载 22考研数学 考研英语 法硕 公务员考试 司法考试 新传 22考研数学 考研英语 法硕 公务员考试 司法考试 新传 为了22年考研,从网上收集整理了考研学习资料, ...

最新文章

  1. 二分查找(递归和非递归)
  2. C语言 int 转单精度浮点,单精度浮点数与十六进制转换 C语言程序 单片机也可用...
  3. 【BOM精讲】BOM 入门基本常识
  4. MyBatis-Plus 高级功能 —— 自动填充功能
  5. 关于[一个基于WF的业务流程平台]表设计的说明
  6. Centos6.4 本地yum源配置
  7. android 微信两个服务的,微信上线两个新功能
  8. 书评:使用Scikit-Learn和TensorFlow进行动手机器学习
  9. train_image_classifier.py:Cannot assign a device for operation CifarNet/conv1/Conv2D: node CifarNet
  10. 西方主要管理思想简介
  11. F28335的SCI模块
  12. 计算机不断自动重启,电脑不断自动重启怎么办_解决电脑不断自动重启的方法...
  13. 以太网二层技术——VPLS详解
  14. 一步一步开发Game服务器(二)登陆2
  15. Empty4Raycast 空白背景图片点击
  16. 自制和烧录单片机 unicode 字库芯片 - 创建字库
  17. MATLAB第四次作业详细内容
  18. mysql取去年年初_查询年初,年末,去年年初,明年年初与年末sql语句
  19. FreeSWITCH 显示号码
  20. 计算机等考试三级-网络技术考点总结

热门文章

  1. Debian折腾笔记
  2. WSO2 XMl转JSON
  3. 怎么让浏览器一直前置_上海居住证积分没有前置学历怎么解决?
  4. win7下安装Ubuntu16.04双系统
  5. 函数默认参数的TDZ
  6. 干货 | 18个 Python 高效编程技巧
  7. 使用用软通牒(UltraISO)制作U盘启动盘
  8. Ubuntu订阅电信物联网平台
  9. 路由器pppoe服务器无响应,宽带拨号服务器无响应
  10. RGB 色值与十六进制色值互转