如何知道 spaCy NLP 输出中按空格连接的位置

Auh*_*Auh 7 python markov-chains spacy

我正在使用 spaCys NLP 模型来计算输入数据的 POS,以便我的马尔可夫链在语法上可以更加正确,就像此处找到的 python markovify 库中的示例一样。然而,spaCy 分割标记的方式使得重建它们变得困难,因为某些语法元素也被分割,例如"don't"变成["do", "n't"]。这意味着您不能再仅通过空格重新连接生成的马尔可夫链,而是需要知道标记是否组成一个单词。

我认为令牌的is_left_punctis_right_punct属性可能与此相关,但似乎并不相关。我当前的代码仅考虑了PUNCT令牌,但do n't问题仍然存在。

是否有标记的属性可以用来告诉将句子连接在一起的方法何时省略空格或其他方式来了解这一点?

Nat*_*Coy 7

Spacy 令牌有一个whitespace_始终被设置的属性。

您始终可以使用它,因为当它们存在时它将代表实际的空格,或者当它们不存在时它是一个空字符串。

当标记化分割连续字符串时,就会发生这种情况。

Token("do").whitespace_空字符串也是如此。

例如

[bool(token.whitespace_) for token in nlp("don't")]
Run Code Online (Sandbox Code Playgroud)

应该产生

[False, False]
Run Code Online (Sandbox Code Playgroud)