Как я могу снять токен с spacy.tokens.token.Token? - PullRequest
2 голосов
/ 04 апреля 2019

как я могу отменить вывод этого кода?

Класс ядра:

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)) Ошибка типа: может присоединиться только к повторяемой

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Токены SpaCy имеют связанный с ними объект doc, так что это даст вам оригинальное предложение в виде строки:

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

print(token.doc) # prints "I like cake."
0 голосов
/ 04 апреля 2019

Все токены в пространстве сохраняют свой контекст, поэтому весь текст может быть воссоздан без потери данных.

В вашем случае все, что вам нужно сделать, это:

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

Поскольку атрибут text_with_ws имеет токен с соответствующим символом пробела, если он существует.

...