Verständnis / Spelling Correction

ja, aber wenn es das einmal für alle entity typen macht dauert das ja dann doch ne weile.
18 * 30 min

Achso, du möchtest es nochmal tunen? In dem Fall würde ich empfehlen, nur die entities abzuspeichern. Das müsste doch den corpus sogar kleiner machen. Also dass processed_documents_store direkt auf die spacy ents zeigt, dann kann der rest während der Ausführung garbage collected werden, dann müsste es recht wenig speicherplatz brauchen, und du kannst trotzdem noch alles machen?

Ich hatte das was du mir geschickt hattest bei mir mit implementiert.
So
Und wollte einfach nochmal alle Werte im vergleich sehen.
Aber ja und dann halt schauen das ich gute Kombinationen finde oder so.

Ich wollte erst processed_documents_store beim entity zählen mit erstellen damit es nur einmal nlp(i.get(“text”)) aussführt, da das scheinbar so lange brauch. Aber da kommt das mit Kernel absturz. Deswegen hatte ich den nlp aufruf jetzt auch in der Hilfsfunktion was halt jedes Indexing/Erstellen der manipulierten Texte so lange dauern lässt

hast du den falschen Link geschickt? Kann da nichts mit processed_documents_store finden.

Aber ja, das was ich geschrieben habe mit nur die entities direkt speichern sollte ja auf jeden Fall klappen.

Ich wollte erst processed_documents_store beim entity zählen mit erstellen damit es nur einmal nlp(i.get(“text”)) aussführt, da das scheinbar so lange brauch. Aber da kommt das mit Kernel absturz. Deswegen hatte ich den nlp aufruf jetzt auch in der Hilfsfunktion was halt jedes Indexing/Erstellen der manipulierten Texte so lange dauern lässt

Ich bin mir nicht sicher, ob wir über das gleiche reden.

Ich hab es so verstanden, dass du anstelle von nlp(i.get("text")) im processed_documents_store abzuspeichern, du dort nlp(i.get("text")).ents abspeichern könntest. Das sollte das Problem doch lösen, oder?

Weil so deutlich weniger Speicherplatz verbraucht werden sollte.

Mhhh also dann habe ich doch aber nur noch die Entity Typen nicht mehr den Text dahinter oder?

Wenn ich nur noch die Typen habe kann ich den Text doch nicht mehr so manipulieren dass nur noch der Text mit Entity Label “ORG” oder so übrig bleibt

Den Text hast du noch, der ist ja für eine entity ent in ent.text gespeichert, sieh das Colab Notebook.
Und in ent.label_ hast du den Typen, also ist alles da, was du brauchst?

ah ok, ich versuchs

KeyError: ‘L02-1310’

# entity Recognition
# Process all documents with spacy.
nlp = spacy.load("en_core_web_sm")

# count entitys
# Erstelle ein Dictionary {}
EntityTypeDict = dict()
#store all processed documents for easy random access
processed_documents_store = {}
# gehe über alle abstracts mit spacy und ließ deren Entitäten
for i in pt_dataset.get_corpus_iter():
    doc = nlp(i.get("text"))
    processed_documents_store[i.get("docno")] = doc.ents
    print(doc.ents)
    for ent in doc.ents:
        #print("entity:")
        #print(ent.text, ent.start_char, ent.end_char, ent.label_)
        # wenn der Entity Type bereits im Dictionary ist dann ...
        if ent.label_ in EntityTypeDict:
            EntityTypeDict[ent.label_] += 1
        # falls nicht füge den Entity Typen in den Dictionary mit Initial 1 vorkommen    
        else: 
            EntityTypeDict[ent.label_] = 1 
    break          
print(EntityTypeDict)

ausgabe von doc.ents ist (Context Vector Models, two, IDF)

Dann gebe ich das weiter (nur zur Testausgabe code verändert)

ret = []
    for i in pt_dataset.get_corpus_iter():
        text = ""
        print(processed_documents_store[i.get("docno")])
        for ent in processed_documents_store[i.get("docno")]:
            if str(ent.label_) in ["ORG"]:
                text += " " + ent.text
        if len(text) > 0:
            ret += [{"docno": i["docno"], "text": text}]    
    print( ret  )      

hier ist processed_documents_store[i.get(“docno”)] auch wieder (Context Vector Models, two, IDF); jedoch habe ich diesen key error

Ok, der Kernel würde trotzdem abstürzen

Ok, es stürzt jetzt mit dem KeyError: ‘L02-1310’ ab?

Das problem scheint mir zu sein, dass processed_documents_store bestimmt nur einen einzelnen Eintrag enthält? Weil beim hinzufügen ein break im code steht, deswegen würde ich vermuten, dass es nur einen Eintrag in processed_documents_store einfügt, und dann kann er später die Dokumente nicht finden, weil sie nicht eingefügt worden.

Viele Grüße,

maik

Ja war der Fall, aber ich hatte es auch mal ohne break durchlaufen lassen und dann war wieder Kernel absturz auch wenn ich nur doc.ents darin speicher

Hast du währenddessen mit htop geschaut, woran es liegen könnte? ist es der Speicher

Ne, also wo schreibe ich das denn hin?

Einfach während es läuft htop aufmachen (in der konsole htop tippen), und beobachten, wie sich der speicher verhält.

ok mach ich mal

mhhh oder auch nicht, ist jetzt schon nach 7000 Dokumenten abgestürzt hatte noch freien Platz

aber es kommt auf jedenfall davon

processed_documents_store = {}
processed_documents_store[i.get('docno')] = nlp(i.get("text")).ents

Projekt
(Stemming und Ausgabe eines Dokuments nicht ausgeführt)

Ok, also die CPU Auslastung sieht gut aus, die Memory auslastung sieht auch gut aus?

Lässt du es bei dir lokal oder im Codespace laufen?
(Im link oben kann ich keine processed_documents_store finden)

lasse es im codespace laufen

oh muss ich das erst commiten damit man das da sieht

Richtiges Projekt

Ja, also Memory war nicht voll

Ok, was ist dein Ziel gerade? Möchtest du herausfinden, wie deine Retrieval Pipeline aussehen soll? Dafür könntest du auch die einschränkung auf die qrels machen, und die gesamte pipeline über alles lassen wir dann nur in TIRA laufen, da können wir dem ganzen mehr ram und CPUs geben, da ist es auch kein problem wenn es langsam läuft. Wäre das nicht das einfachste?