如何在 spacy 中设置最大句子长度?

How to set maximum sentence length in spacy?

我有一个字符串已转换为空字符串 Doc。但是,当我遍历 Doc.sents 对象时,我发现它们太长了。

在做doc = nlp(string)时有没有办法设置单个句子的最大长度?

非常感谢,这真的很有帮助。

不,没有办法做到这一点。

在正常的语言中,虽然实际上句子不会太长,但对句子的长度没有严格的限制。想象一下所有水果或其他东西的清单。

部分原因在于,不清楚如何处理超长句子。您是否将它们分成最大长度或更短的段?你是把它们完全扔掉,还是在第一块之后就把单词删掉?正确的方法取决于您的应用程序。

通常应该很容易在 .sents 迭代器之上实现您想要的策略。


要将句子拆分为最大长度或更短,您可以这样做:

def my_sents(doc, max_len):
    for sent in doc.sents:
        if len(sent) < max_len:
            yield sent
            continue

        # this is a long one
        offset = 0
        while offset < len(sent):
            yield sent[offset:offset+max_len]
            offset += max_len

但是,请注意,对于许多应用程序来说,这没有用。如果你有句子的最大长度,你应该真正考虑你为什么有它并根据它调整你的方法。