自然语言处理--使用spaCy进行词性标注

更新时间:2023-07-10 10:25:35 阅读: 评论:0

⾃然语⾔处理--使⽤spaCy进⾏词性标注
词性(POS)标注可以使⽤语⾔模型来完成,这个语⾔模型包含词及其所有可能词性组成的字典。然后,该模型可以使⽤已经正确标注好词性的句⼦进⾏训练,从⽽识别由该字典中其他词组成的新句⼦中所有词的词性。NLTK 和 spaCy 都具备词性标注功能。我们在这⾥使⽤spaCy,因为它更快、更精确。另外词性标注允许提取⼀个句⼦中实体之间的关系。
import spacy
import en_core_web_md
from spacy.displacy import render
import pandas as pd
from collections import OrderedDict
from spacy.matcher import Matcher
en_model = en_core_web_md.load()
ntence =("In 1541, Desoto met the Pascagoula, Desoto wrote in his journal that the Pascagoula people "+
"ranged as far north as the confluence of the Leaf and Chickasawhay rivers at 30.4, -88.5.")
pard_nt = en_model(ntence)
print(pard_nt)气愤的近义词
鳄鱼流眼泪# spaCy 没有识别出纬度/经度对中的经度
print(s)
# spaCy 使⽤了“OntoNotes 5”词性标注标签体系
print(' '.join(['{}_{}'.format(tok, tok.tag_)for tok in pard_nt]))
# 可视化依存树
# spaCy 解析的句⼦还包含嵌套字典表⽰的依存树
# render():
#  docs (list or Doc):可视化的⽂档。
#  page (bool):将标记呈现为完整的HTML页⾯。
#  options (dict):特定于Visualir的选项,例如颜⾊。
with open('pascagoula.html','w')as f:
f.write(render(docs=pard_nt, page=True, options=dict(compact=True)))
# 以表格形式列出所有的词条标签
def token_dict(token):
ordered_dict = OrderedDict(h_, LEMMA=token.lemma_,
POS=token.pos_, TAG=token.tag_, DEP=token.dep_)
return ordered_dict
def doc_dataframe(doc):
return pd.DataFrame([token_dict(tok)for tok in doc])
伏波将军是
print(doc_dataframe(pard_nt))
# ⽰例 spaCy 词性标注模式
'''
⼀个模式由⼀个或多个`token_specs`组成,其中`token_spec`
是将属性ID映射到值的字典,并且可以选择
关键字“ op”下的量词运算符。可⽤的量词是:
'!':通过要求精确匹配0次来求反。
'?':允许模式匹配0或1次,从⽽使其成为可选模式。
'+':要求模式匹配1次或多次。
'*':允许模式零次或多次。
'''
pattern =[{'TAG':'NNP','OP':'+'},{'IS_ALPHA':True,'OP':'*'},操批
{'LEMMA':'meet'},{'IS_ALPHA':True,'OP':'*'},{'TAG':'NNP','OP':'+'}]教学督导
# ⽤ spaCy 创建词性标注模式匹配器
matcher = Matcher(en_model.vocab)
# 将匹配规则添加到匹配器
'''
key (unicode):匹配ID。
patterns (list):为给定键添加的模式。
on_match (callable):匹配时执⾏的可选回调。
'''
matcher.add('met',None, pattern)
# print(help(matcher.add))
# print(help(matcher.add))
宇文化及简介m = matcher(pard_nt)
print(m)
print(pard_nt[m[0][1]:m[0][2]])
什么是青春print('+'*50)
# 使⽤词性标注模式匹配器看看对于维基百科中类似句⼦的效果
doc = en_model("October 24: Lewis and Clark met their first Mandan Chief, Big White.")
m = matcher(doc)
print(m)
print(doc[m[0][1]:m[0][2]])
幼儿园墙面布置
print('+'*50)
doc = en_model("On 11 October 1986, Gorbachev and Reagan met at a hou.")
m = matcher(doc)
print(m)
print('+'*50)
# 组合多个模式得到更鲁棒的模式匹配器
# 再添加⼀个模式,允许动词在主语和宾语名词之后出现
doc = en_model("On 11 October 1986, Gorbachev and Reagan met at a hou, Clark met their first Mandan Chief.") pattern2 =[{'TAG':'NNP','OP':'+'},{'LEMMA':'and'},{'TAG':'NNP','OP':'+'},
{'IS_ALPHA':True,'OP':'*'},{'LEMMA':'meet'}]
# 在不删除前⼀个模式的情况下添加另⼀个模式
matcher.add('met2',None, pattern2)
m = matcher(doc)
print(m)
# 最长的匹配是匹配列表中的最后⼀个
for i in range(len(m)):
print(doc[m[i][1]:m[i][2]])

本文发布于:2023-07-10 10:25:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1075514.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:词性   标注   模式   匹配   字典   添加   识别   允许
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图