4
votes

Comment puis-je désactiver un jeton spacy.tokens.token.Token?

comment puis-je annuler la validation de la sortie de ce code?

class Core:

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

J'ai essayé: https://pypi.org/project/untokenize/

MosesDetokenizer

.join()

Mais j'ai cette erreur pour mon dernier code (de ce post):

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

Cette erreur pour .join ():

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)

Et pour MosesDetokenizer: text = u "{}" .format ("" .join (jetons)) TypeError: ne peut rejoindre qu'un itérable


0 commentaires

3 Réponses :


4
votes

Tous les jetons dans spacy conservent leur contexte afin que tout le texte puisse être recréé sans aucune perte de données.

Dans votre cas, tout ce que vous avez à faire est:

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

Puisque l'attribut text_with_ws a le jeton avec son caractère d'espacement correspondant s'il existe.


6 commentaires

J'ai toujours cette erreur: su.join ([token.text_with_ws pour jeton dans le sujet]) TypeError: l'objet 'spacy.tokens.token.Token' n'est pas itérable


Je viens de réaliser, dans votre code, vous n'enregistrez qu'un seul jeton comme sujet


Oui, puis-je faire quelque chose avec ça? Rien d'Internet ne fonctionne :(


Mettez les jetons dans une liste, puis rejoignez


Voici mon code où j'essaye de vérifier si le sujet existe dans une liste: class S: def __init __ (self, subject): personal_words = ["I", "ME", "US"] er = ["YOU"] self.subject = subject s = [] s.append (subject) print (s) su = "" su.join ([token.text_with_ws for token in s]) print (su) if any (item in s for item in personal_words): print ("T1") else: print ("T2") Et voici ma sortie Je suis Ironman [I] (je ne sais pas pourquoi le code est si difficile à lire ici)


Et voici l'erreur: TypeError: L'argument 'other' a un type incorrect (spacy.tokens.token.Token attendu, str obtenu)



2
votes

Les jetons SpaCy ont leur objet doc associé, donc cela vous donnera la phrase originale sous forme de chaîne:

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

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


4 commentaires

OK, pouvez-vous développer votre code? Qu'est-ce que pop ? Qu'est-ce qu'un exemple de chaîne d'entrée? Je réviserai mon code pour passer du texte au jeton.


pop = spacy.load ('en_core_web_sm') Un exemple d'entrée est quelque chose comme: Je suis Ironman Le programme prendra le sujet I et créera un jeton. Je peux vous envoyer le code par e-mail, mais je ne sais pas comment le rendre facile à lire ici


@ polm23 Et si je voulais muter un jeton et renvoyer un document muté? Comment pourrais-je procéder?


Si vous avez une question, posez une nouvelle question plutôt que de poser une question dans les commentaires ...



-2
votes

@RazvanP Je crois que ce dont vous avez besoin ici est d'obtenir la sortie suivante

new_list=[]

doc = nlp("I like cake.")

for i in doc:

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

print(new_list)

Si oui, voici le code.

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

Voir si cela fonctionne pour vous.


0 commentaires