赞
踩
下载spacy:conda install spacy
下载英文model:sm、md、lg分别表示三种大小的nlp模型,en_core_web_lg更精确,一般en_core_web_sm即可
conda install -c conda-forge spacy-model-en_core_web_sm
conda install -c conda-forge spacy-model-en_core_web_md
conda install -c conda-forge spacy-model-en_core_web_lg
各类spacy模型的网址:https://github.com/explosion/spacy-models/tags
官方文档:https://spacy.io/api/doc
spacy的统计模型和处理管道是其核心内容。
统计模型使spacy能够执行一些nlp任务,如词性标记、命名实体识别、依存关系解析
导入模型:import spacy
之后,执行spacy.load('model_name')
导入模型
import spacy
nlp = spacy.load('en_core_web_sm')
处理管道:使用spacy时第一步是将文本字符串传递给nlp对象,这个对象本质上是由几个文本预处理操作组成的管道(如标记生成器、标签器、解析器、ner等)
import spacy
nlp = spacy.load('en_core_web_sm')
# 创建nlp对象
doc = nlp("he want to be alone")
# 输出活动的管道组件
print(nlp.pipe_names)
# 禁用部分管道组件
# 当只需要标记文本时,可禁用整个管道,此时标记化过程会变得非常快
nlp.disable_pipes('tagger','parser')
print(nlp.pipe_names)
自动将词性标注分配给句子中所有单词,该任务有助于nlp的各种下游任务(如特征工程、语言理解、信息提取等)
doc2 = nlp("when that comes, all the things will be solved.")
# 遍历token,输出每个token的pos标记,
# 若不明白标记的含义,可使用spacy.explain("PART")来确定
for token in doc2:
print(token.text,"--->",token.pos_)
通过依存句法分析提取出句子的语法结构,也可看做是一个有向图,图中的节点对应于句子中的单词,图中的边对应于单词间的对应依赖关系
doc3 = nlp("I wish nothing but the best for you too.")
for token in doc3:
print(token.text,"--->",token.dep_)
实体是表示诸如个人、地点、组织等常见事物的信息的词或词组,即具有专有名称
doc4 = nlp("Indians spent over $71 billion on clothes in 2018")
for ent in doc4.ents:
print(ent.text, ent.label_)
使用spacy匹配器,可以以用户定义的规则在文本中匹配到单词或短语
# 4. 基于规则的spacy匹配 from spacy.matcher import Matcher #用spaCy词汇表初始化Matcher对象 matcher = Matcher(nlp.vocab) # 向nlp对象传递输入文本内容 doc4 = nlp("HELLO WORLD on Google Maps.") # 定义内容提取规则 patterns = [ [{"LOWER": "hello"}, {"LOWER": "world"}], [{"ORTH": "Google"}, {"ORTH": "Maps"}] ] # 定义打印函数 def on_match(matcher, doc, id, matches): print('Matched!', matches) #输出:[匹配ID,匹配标记的起始位置,结束位置] for match_id, start, end in matches: # 获得匹配的宽度 matched_span = doc4[start:end] print(matched_span.text) # 将规则、函数添加到matcher对象 matcher.add("TEST_PATTERNS", patterns, on_match=on_match) # 用自定义的提取规则提取文本 matches = matcher(doc4)
matcher.add(match_id, patterns[, on_match] [, greedy])
向匹配器添加一条规则,以对匹配项进行操作
# 5. spaCy matcher的另一个用例
doc51 = nlp("You read this book")
doc52 = nlp("I will book my ticket")
matcher2 = Matcher(nlp.vocab)
pattern = [{'TEXT': 'book', 'POS': 'NOUN'}]
matcher2.add('rule_2', [pattern])
matches1 = matcher2(doc51)
matches2 = matcher2(doc52)
print(matches1)
print(matches2)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。