如何取消对spacy.tokens.token.Token的标记?

时间:2019-04-04 12:06:59

标签: python nlp nltk token spacy

如何取消此代码输出的令牌?

类核心:

def __init__(self, user_input):
    pos = pop(user_input)
    subject = ""
    for token in pos:
        if token.dep == nsubj:
            subject = untokenize.untokenize(token)
    subject = S(subject)

我尝试过: https://pypi.org/project/untokenize/

MosesDetokenizer

.join()

但是我的最后一个代码有这个错误(来自这篇文章):

TypeError: 'spacy.tokens.token.Token' object is not iterable

.join()的此错误:

AttributeError: 'spacy.tokens.token.Token' object has no attribute 'join'

对于MosesDetokenizer:     text = u“ {}” .format(“” .join(tokens)) TypeError:只能加入可迭代的

3 个答案:

答案 0 :(得分:0)

所有有效的令牌都保持其上下文不变,因此可以重新创建所有文本而不会丢失任何数据。

对于您而言,您要做的就是:

''.join([token.text_with_ws for token in doc])

由于属性text_with_ws具有标记及其相应的空白字符(如果存在)。

答案 1 :(得分:0)

SpaCy令牌具有与之关联的doc对象,因此这将为您提供原始句子作为字符串:

import spacy
nlp = spacy.load('en')
doc = nlp("I like cake.")
token = doc[0]

print(token.doc) # prints "I like cake."

答案 2 :(得分:0)

@RazvanP 我相信您这里需要获得以下输出

['I', 'like', 'cake', '.']

如果是,这是代码。

new_list=[]

doc = nlp("I like cake.")

for i in doc:

    new_list.append(''+i.text+'')

print(new_list)

看看这是否适合您。