使用stanza完成自然语言分析处理任务
安装stanza#
直接使用pip命令即可安装stanza package
pip install stanza
构建管道#
stanza中的管道用于构建NLP任务的模型加载序列、文本处理序列。需要注意,当本地不存在指定的Processor模型时,Pipeline对象会执行一个自动下载程序,将模型下载到本地。
Pipeline的初始化示例#
import stanza
nlp = stanza.Pipeline('en')# 加载全部英文模型,包括分词、序列标注、句法依赖,语义角色标注等
nlp = stanza.Pipeline('zh', processors='tokenize,pos')# 加载中文分词,序列标注模型
详细的processors列表见 processor_name_list
Pipeline的客制化设置#
package 指定模型的训练数据集gsd
nlp = stanza.Pipeline('de', processors='tokenize,mwt', package='gsd')
设定采用conll02数据集训练出的模型进行NER任务,默认的模型完成其他分析任务
nlp = stanza.Pipeline('nl', processors={'ner': 'conll02'})
设定采用winker数据集训练出的模型进行NER任务,lassysmall训练的模型完成其他分析任务
nlp = stanza.Pipeline('nl', processors={'ner': 'wikiner'}, package='lassysmall')
只将部分子任务添加到管道,并且为各子任务指定模型来源,注意package=None
,若不设置,Pipline中会增加多余的子任务
processor_dict = {
'tokenize': 'gsd',
'pos': 'hdt',
'ner': 'conll03',
'lemma': 'default'
}
nlp = stanza.Pipeline('de', processors=processor_dict, package=None)
控制模型运行的设备CPU/GPU#
stanza中的模型默认在GPU上运行,可以在构建管道时,通过use_gpu = False
使得任务得以在CPU上展开。
nlp = stanza.Pipeline('en', use_gpu=False)
执行标注#
句子级标注(一个句子结束符)#
句子级文档标注直接将要标注的句子放入构建好的Pipeline对象中,执行即可。
nlp = stanza.Pipeline('zh',processors='tokenize,pos,ner')
doc = nlp('今天也是元气满满的一天。')
print('doc:')
doc
得到元素长度为1的doc对象,其结构如下,doc对象中包含了标注结果和对应的span结果
文档级标注#
单一文档标注(多个结束符)#
单一文档标注与句子级文档标注类似,差别在于输入的文档中包含了多个句子,每个句子都会单独作为标注的结果,存放在返回的doc对象list中
nlp = stanza.Pipeline('zh',processors='tokenize,pos,ner')
doc = nlp('今天也是元气满满的一天。明天应该还是元气满满的一天。')# 返回一个doc对象,该doc的长度是2
# 访问标注结果
for sentence in doc.sentences:
for word in sentence.words:
print(word.ner, word.pos)
多文档标注#
多文档标注借助stanza.Document()
类实现,返回的标注结果是每个单一文档的doc组成的list
import stanza
nlp = stanza.Pipeline(lang="en") # 初始化默认的英文Pipeline
documents = ["This is a test document.", "I wrote another document for fun."] # 要处理的文档
in_docs = [stanza.Document([], text=d) for d in documents] #将每个文档构造出对应的stanza.Document对象,放入输入列表
out_docs = nlp(in_docs) # 开始标注
print(out_docs[1]) # 得到标注结果,返回的标注结果是每个单一文档的doc组成的list
Reference#
https://stanfordnlp.github.io/stanza/getting_started.html#basic-example
作者:Arkon
出处:https://www.cnblogs.com/arkon/p/17322718.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】