Module conversationkg.kgs.TextKG

Expand source code
from tqdm import tqdm

#from ..conversations.entities import Person as WholePerson
from .KGs import KG, Person, WholePerson




class TextKG(KG):
    def __new__(cls, email_corpus):
        triples = []
        
        provenances = []
        
        for conv in tqdm(email_corpus, desc="Iterating Conversations in TextKG"):
            triples.append((conv, "is_about", conv.topic.topic))
            provenances.append(conv[0].message_id)
            
            for email in conv:
                triples.append((email, "is_about", email.topic.topic))
                provenances.append(email.message_id)
                
                mentioned_people = [Person(WholePerson(str(e), "")) for e, l in email.body.entities 
                                    if l == "PERSON"]

                for person in mentioned_people:
                    triples.append((email, "mentions", person))
                    provenances.append(email.message_id)
                    
                    for person2 in mentioned_people:
                        if not person == person2:
                            triples.append((person, "talked_to", person2))
                            provenances.append(email.message_id)

        
        return KG.from_email_corpus(email_corpus, triples, provenances)

Classes

class TextKG (triples, provenances)
Expand source code
class TextKG(KG):
    def __new__(cls, email_corpus):
        triples = []
        
        provenances = []
        
        for conv in tqdm(email_corpus, desc="Iterating Conversations in TextKG"):
            triples.append((conv, "is_about", conv.topic.topic))
            provenances.append(conv[0].message_id)
            
            for email in conv:
                triples.append((email, "is_about", email.topic.topic))
                provenances.append(email.message_id)
                
                mentioned_people = [Person(WholePerson(str(e), "")) for e, l in email.body.entities 
                                    if l == "PERSON"]

                for person in mentioned_people:
                    triples.append((email, "mentions", person))
                    provenances.append(email.message_id)
                    
                    for person2 in mentioned_people:
                        if not person == person2:
                            triples.append((person, "talked_to", person2))
                            provenances.append(email.message_id)

        
        return KG.from_email_corpus(email_corpus, triples, provenances)

Ancestors