如何在 spaCy NLP 输出中通过 space 知道加入的位置
How to know where to join by space in spaCy NLP output
我正在使用 spaCys NLP 模型来计算输入数据的 POS,这样我的马尔可夫链在语法上可以更正确一些,就像 python markovify 库中的示例 here.然而,spaCy 拆分标记的方式使得重建它们变得困难,因为某些语法元素也会被拆分,例如 "don't"
变成 ["do", "n't"]
。这意味着您不能再简单地通过 space 重新加入生成的马尔可夫链,而是需要知道标记是否组成一个单词。
我假设令牌的 is_left_punct
和 is_right_punct
属性可能与此有关,但似乎没有关系。我当前的代码只考虑了 PUNCT
个令牌,但 do n't
问题仍然存在。
是否有 属性 个标记,我可以使用它来告诉将句子连接在一起的方法何时省略 space 或通过其他方式知道这一点?
Spacy 标记有一个始终设置的 whitespace_
属性。
您可以随时使用它,因为当它们存在时它将代表实际空间,或者当它们不存在时它是一个空字符串。
这发生在你提到的情况下,当标记化拆分一个连续的字符串时。
因此 Token("do").whitespace_
将是空字符串。
例如
[bool(token.whitespace_) for token in nlp("don't")]
应该产生
[False, False]
我正在使用 spaCys NLP 模型来计算输入数据的 POS,这样我的马尔可夫链在语法上可以更正确一些,就像 python markovify 库中的示例 here.然而,spaCy 拆分标记的方式使得重建它们变得困难,因为某些语法元素也会被拆分,例如 "don't"
变成 ["do", "n't"]
。这意味着您不能再简单地通过 space 重新加入生成的马尔可夫链,而是需要知道标记是否组成一个单词。
我假设令牌的 is_left_punct
和 is_right_punct
属性可能与此有关,但似乎没有关系。我当前的代码只考虑了 PUNCT
个令牌,但 do n't
问题仍然存在。
是否有 属性 个标记,我可以使用它来告诉将句子连接在一起的方法何时省略 space 或通过其他方式知道这一点?
Spacy 标记有一个始终设置的 whitespace_
属性。
您可以随时使用它,因为当它们存在时它将代表实际空间,或者当它们不存在时它是一个空字符串。
这发生在你提到的情况下,当标记化拆分一个连续的字符串时。
因此 Token("do").whitespace_
将是空字符串。
例如
[bool(token.whitespace_) for token in nlp("don't")]
应该产生
[False, False]