如何将 SpaCy 依赖树拆分为子句?

我正在尝试通过依赖树(根据 SpaCy)来拆分文本单元。我已经尝试了 spacy 提供的大部分文档,但我不知道如何完成这项任务。要可视化,请参见下文:


import spacy

from spacy import displacy


doc = nlp('I was, I dont remember. Do you want to go home?')

dependency_flow = displacy.render(doc, style='dep', jupyter = True, options = {'disxatance': 120})

上面的代码产生了这个依赖关系树图(由于大小分成了 2 个屏幕截图):

http://img3.mukewang.com/63f5c01d000177cd06500292.jpg

http://img1.mukewang.com/63f5c0240001f04f06510294.jpg

直观上,这表明原句中有 2 个独立子句。原来的句子是'I was, I dont remember. Do you want to go home?', 它被有效地分成了两个从句,'I was, I dont remember.', 和'Do you want to go home?'

输出

如何使用 SpaCy 或任何其他工具将原始话语拆分为这两个子句,以便输出为:

['I was, I dont remember.', 'Do you want to go home?']?

我目前的方法相当冗长且昂贵。它涉及在原始文本中找到两个最大的子树,它们的相对索引跨越原始文本索引的范围,但我相信还有另一种更好的方法。


PIPIONE
浏览 96回答 1
1回答

元芳怎么了

给定您的输入和输出,即一个子句不会跨越多个句子。然后,与其沿着依赖树的兔子洞走下去,不如从文档中将子句作为句子(在内部它们是跨度)获取会更好。import spacynlp = spacy.load("en_core_web_sm")doc = nlp('I was, I dont remember. Do you want to go home?')print([sent.text for sent in doc.sents])输出['I was, I dont remember.', 'Do you want to go home?']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python