
Stanza 是一款强大的自然语言处理工具,尤其擅长处理多种语言的文本。其词形还原器能够将单词还原为其基本形式(词元)。然而,默认情况下,Stanza 的词形还原器会返回一个包含多个属性的字典,例如 ID、文本、词性标注等。对于只需要词元信息的用户来说,这会造成不必要的冗余。本文将介绍如何从 Stanza 的输出中提取词元,从而简化后续处理流程。
以下是如何提取词元的步骤:
初始化 Stanza Pipeline:
首先,需要下载并初始化 Stanza Pipeline。确保指定所需的语言和处理器(tokenize, mwt, pos, lemma)。
import stanza
stanza.download('es', package='ancora', processors='tokenize,mwt,pos,lemma', verbose=False)
stNLP = stanza.Pipeline(processors='tokenize,mwt,pos,lemma', lang='es', use_gpu=True)这段代码会下载西班牙语(es)的 ancora 包,并配置包含分词(tokenize)、多词单元(mwt)、词性标注(pos)和词形还原(lemma)的处理器。use_gpu=True 会尝试使用 GPU 加速处理。
处理文本:
使用初始化后的 stNLP 对象处理文本。
doc = stNLP('me hubiera gustado mas “sincronia” con la primaria')doc 对象包含了处理后的文本信息。
提取词元:
关键步骤在于从 doc 对象中提取词元。Stanza 的输出是一个嵌套结构,其中每个句子是一个列表,每个 token 也是一个列表,其中每个 token 类似于一个字典,包含 ID、文本、词元等属性。可以使用列表推导式来提取所有词元。
lemmas = [word.lemma for t in doc.iter_tokens() for word in t.words]
这段代码使用嵌套的列表推导式来遍历文档中的所有 token 和 word,并提取每个 word 的 lemma 属性。doc.iter_tokens() 迭代每个 token,t.words迭代每个token对应的word。
查看结果:
提取的词元存储在 lemmas 列表中。
print(lemmas)
输出结果将是一个包含所有词元的列表。例如,对于输入文本 'me hubiera gustado mas “sincronia” con la primaria',输出可能如下:
['yo', 'haber', 'gustar', 'mas', '“', 'sincronia', '”', 'con', 'el', 'primario']
完整代码示例:
import stanza
stanza.download('es', package='ancora', processors='tokenize,mwt,pos,lemma', verbose=False)
stNLP = stanza.Pipeline(processors='tokenize,mwt,pos,lemma', lang='es', use_gpu=True)
doc = stNLP('me hubiera gustado mas “sincronia” con la primaria')
lemmas = [word.lemma for t in doc.iter_tokens() for word in t.words]
print(lemmas)注意事项:
总结:
通过本文的教程,您可以轻松地使用 Stanza 词形还原器,并提取文本的词元信息。这种方法可以有效地简化后续处理流程,提高文本处理效率。 通过理解 Stanza 的输出结构,并使用简单的列表推导式,可以方便地提取所需的词元信息,避免处理不必要的冗余数据。
以上就是Stanza Lemmatizer:提取词元而非完整字典的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号