2
votes

Spacy pour extraire l'adresse e-mail d'une personne en particulier

J'ai besoin d'extraire l'adresse e-mail d'une personne. J'ai formé le modèle NER dans Spacy avec quelques exemples mais pas de chance. Il doit être formé avec des milliers d'exemples pour obtenir des résultats satisfaisants. Donc, j'ai maintenant commencé à regarder Token Matcher pour récupérer l'adresse e-mail. Quelqu'un a-t-il déjà travaillé dessus? y a-t-il une meilleure approche pour cela?


0 commentaires

3 Réponses :


0
votes

Essayez haptik-ner , bien que son utilisation soit spécifique aux robots de chat que vous pourrez peut-être utiliser le code pour détecter les e-mails également.


1 commentaires

Merci pour la réponse. J'ai fait la partie extraction en utilisant le Token Matcher de Spacy. J'ai juste besoin d'associer cette adresse e-mail à son propriétaire.



3
votes

Les adresses e-mail doivent être simples à extraire - vous pouvez écrire un modèle de jeton ou même regarder l'attribut like_email d'un jeton, qui renverra True s'il ressemble à une adresse e-mail .

Pour savoir comment le jeton d'adresse e-mail est lié au reste de la phrase, une approche consiste à examiner la syntaxe et à écrire votre propre logique d'extraction en utilisant les dépendances syntaxiques ( token.dep_ ) , balises de partie de discours ( token.pos_ ) ou sous-arborescence ( token.subtree ).

Voici un exemple qui montre l'idée:

 entrez la description de l'image ici

L'adresse e-mail est jointe au verbe «est», qui est joint à l'objet de la phrase «adresse e-mail». Le nom propre "Peter" est attaché au sujet avec l'étiquette poss (possesive). Le propriétaire de l'adresse e-mail est donc Peter. Si vos phrases ressemblent à ceci, vous pouvez écrire une fonction qui extrait ces informations en fonction des jetons et de leurs relations.

Bien sûr, ce n'est pas toujours aussi simple - vos textes peuvent être très différents et vous devrez peut-être écrire une logique pour différentes constructions différentes. Pour plus d'informations et d'exemples, consultez la documentation sur la la combinaison de modèles et de règles .


0 commentaires

0
votes

J'ai utilisé des dépendances syntaxiques pour couvrir quelques types de règles pour identifier les relations:

voir le code ci-dessous

for email in doc:
        print(email.text, email.dep_, email.ent_type_, email.pos_, email.head)
        if(email.like_email == True):  
            if email.dep_ in ("attr", "dobj", "punct"):
                subject = [w for w in email.head.lefts if w.dep_ == "nsubj" or w.dep_ == "nsubjpass"]
                if subject:
                    subject = subject[0]
                    per = extract_person_names(subject.text)
                    if(per.text != "null"):                       
                        relations.append((per, email))
                    else:
                        print("no entity")
            elif email.dep_ == "pobj" and email.head.dep_ == "prep":
                if ((doc[email.head.i-1]).ent_type_ == 'PERSON'):
                    relations.append((doc[email.head.i-1], email))    


0 commentaires