spacy教程--基础

spacy教程–基础

安装

pip install spacy

训练模型

安装之后还要下载官方的训练模型, 不同的语言有不同的训练模型,这里只用对应中文的模型演示:

python -m spacy download zh_core_web_sm

代码中使用:

import spacy
nlp = spacy.load("zh_core_web_sm")

模型官方文档: https://spacy.io/models
每种语言也会有几种不同的模型,例如中文的模型除了刚才下载的 zh_core_web_sm 外,还有zh_core_web_trf、zh_core_web_md 等,它们的区别在于准确度和体积大小, zh_core_web_sm 体积小,准确度相比zh_core_web_trf差,zh_core_web_trf相对就体积大。这样可以适应不同场景。

LANGUAGE : 那种语言的模型
SIZE : 模型体积的大小
COMPONENTS(组件): 模型具备的功能:

  • tok2vec: 分词
  • tagger: 词性标注
  • parser: 依存分析
  • senter: 分句
  • ner: 命名实体识别
  • attribute_ruler: 更改属性映射(没有具体了解)

功能

import spacy
s = "小米董事长叶凡决定投资华为。在2002年,他还创作了<遮天>。" 
nlp = spacy.load("zh_core_web_sm")
doc = nlp(s)

分句 (sentencizer)

# 1. 分句 (sentencizer)
for i in doc.sents:
    print(i)
"""
小米董事长叶凡决定投资华为。
在2002年,他还创作了<遮天>。
"""

分词 (Tokenization)

# 2. 分词 (Tokenization)
print([w.text for w in doc])
"""
['小米', '董事长', '叶凡', '决定', '投资', '华为', '。', '在', '2002年', ',', '他', '还', '创作', '了', '<遮天>', '。']
"""

词性标注 (Part-of-speech tagging)

细粒度

print([(w.text, w.tag_) for w in doc])
"""
[('小米', 'NR'), ('董事长', 'NN'), ('叶凡', 'NR'), ('决定', 'VV'), ('投资', 'VV'), ('华为', 'NR'), ('。', 'PU'), ('在', 'P'), ('2002年', 'NT'), (',', 'PU'), ('他', 'PN'), ('还', 'AD'), ('创作', 'VV'), ('了', 'AS'), ('<遮天>', 'NN'), ('。', 'PU')]
"""

粗粒度

print([(w.text, w.pos_) for w in doc])
"""
[('小米', 'PROPN'), ('董事长', 'NOUN'), ('叶凡', 'PROPN'), ('决定', 'VERB'), ('投资', 'VERB'), ('华为', 'PROPN'), ('。', 'PUNCT'), ('在', 'ADP'), ('2002年', 'NOUN'), (',', 'PUNCT'), ('他', 'PRON'), ('还', 'ADV'), ('创作', 'VERB'), ('了', 'PART'), ('<遮天>', 'NOUN'), ('。', 'PUNCT')]
"""

识别停用词 (Stop words)

print([(w.text, w.is_stop) for w in doc])
"""
[('小米', False), ('董事长', False), ('叶凡', False), ('决定', True), ('投资', False), ('华为', False), ('。', True), ('在', True), ('2002年', False), (',', True), ('他', True), ('还', True), ('创作', False), ('了', True), ('<遮天>', False), ('。', True)]
"""

命名实体识别 (Named Entity Recognization)

# 命名实体识别 (Named Entity Recognization)
print([(e.text, e.label_) for e in doc.ents])
"""
[('小米', 'PERSON'), ('叶凡', 'PERSON'), ('2002年', 'DATE')]
"""

依存分析 (Dependency Parsing)

print([(w.text, w.dep_) for w in doc])
"""
[('小米', 'nmod:assmod'), ('董事长', 'appos'), ('叶凡', 'nsubj'), ('决定', 'ROOT'), ('投资', 'ccomp'), ('华为', 'dobj'), ('。', 'punct'), ('在', 'case'), ('2002年', 'nmod:prep'), (',', 'punct'), ('他', 'nsubj'), ('还', 'advmod'), ('创作', 'ROOT'), ('了', 'aux:asp'), ('<遮天>', 'dobj'), ('。', 'punct')]
"""

词性还原 (Lemmatization)

这个模型没有这个功能,用英文模型演示下

找到单词的原型,即词性还原,将am, is, are, have been 还原成be,复数还原成单数(cats -> cat),过去时态还原成现在时态 (had -> have)。

import spacy
nlp = spacy.load('en_core_web_sm')
txt = "A magnetic monopole is a hypothetical elementary particle."
doc = nlp(txt)
lem = [token.lemma_ for token in doc]
print(lem)
"""
['a', 'magnetic', 'monopole', 'be', 'a', 'hypothetical', 'elementary', 'particle', '.']
"""

提取名词短语 (Noun Chunks)

noun_chunks = [nc for nc in doc.noun_chunks]
print(noun_chunks)
"""
[A magnetic monopole, a hypothetical elementary particle]
"""

指代消解 (Coreference Resolution)

指代消解 ,寻找句子中代词 he,she,it 所对应的实体。为了使用这个模块,需要使用神经网络预训练的指代消解系数,如果前面没有安装,可运行命令:pip install neuralcoref

这个模型没有这个功能,用英文模型演示下

txt = "My sister has a son and she loves him."
 
# 将预训练的神经网络指代消解加入到spacy的管道中
import neuralcoref
neuralcoref.add_to_pipe(nlp)
doc = nlp(txt)
doc._.coref_clusters
"""
[My sister: [My sister, she], a son: [a son, him]]
"""

可视化

from spacy import displacy
# 可视化依存关系
html_str = displacy.render(doc, style="dep")
#可视化命名名称实体
# html_str = displacy.render(doc, style="ent")
with open("D:\\data\\ss.html", "w", encoding="utf8") as f:
    f.write(html_str)

html_str 是一个html格式的字符串, 保存到本地 ss.html文件,浏览器打开效果:
依存关系

命名实体

官方还有一个可视化的库: spacy-streamlit , 专门用于spacy相关的nlp可视化。
streamlit 也是一个专门可视化的库。
spacy-streamlit 有一个使用demo:
https://share.streamlit.io/ines/spacy-streamlit-demo/app.py
demo对应githup
GitHub - ines/spacy-streamlit-demo

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在运行 "python -m spacy download en_core_web_sm" 命令时出现 "connection error" 错误,意味着你的计算机无法连接到Spacy的下载服务器。这可能是因为你的计算机无法访问互联网或Spacy服务器出现问题。 首先,确保你的计算机连接到可稳定的互联网连接。你可以尝试打开其他网页或应用程序来确定互联网连接是否正常。 如果你的互联网连接正常,但仍然遇到 "connection error" 错误,那么这可能是Spacy服务器出现问题。你可以稍后再次尝试下载,或者尝试从其他源下载所需的Spacy模型。 此外,你还可以尝试使用以下命令来下载en_core_web_sm模型的压缩文件,然后手动安装: 1. 打开Spacy的模型目录: - 在命令行中运行"python"进入Python解释器 - 运行以下代码: ```python import spacy print(spacy.__file__) ``` - 输出将显示Spacy的安装路径,其中一个子目录名为"models"或"models-xx"。 2. 打开Spacy的模型目录,并进入子目录,如"models/en_core_web_sm"。 3. 下载en_core_web_sm模型的压缩文件: - 在浏览器中访问 https://github.com/explosion/spacy-models/releases - 在该页面上找到en_core_web_sm模型的最新版本,并下载对应的.zip文件。 4. 将下载的压缩文件解压到模型目录中,确保解压后的文件夹名称为"en_core_web_sm"。 5. 打开命令行,并使用以下命令创建一个链接来识别该模型: ``` python -m spacy link [模型目录的绝对路径] [模型名称] ``` 经过上述步骤,你应该能够手动下载并安装en_core_web_sm模型,从而解决"connection error"错误。如果问题仍然存在,请确保你的计算机和Spacy工具的版本兼容,并尝试联系Spacy的支持团队以获取更多帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值