Natürliche Sprachverarbeitung (NLP)
Das Python Programm laboratorium-ai-nlp ermittelt, ob Fragen im Transkript vorliegen, ermittelt wie häufig bestimmte Worte im Transkript auftreten. Zudem wird ermittelt, ob vorher festgelegte Schlüsselworte oder Reizbegriffe im Transkript auftreten und Fragen detektiert.
find_keyword_position()
Diese Funktion prüft, ob das Transkript bestimmte Schlüsselwörter oder Reizbegriffe enthält. Dafür wird die Levenshtein-Distanz verwendet, um eine Ähnlichkeit für jedes Wort aus doc mit allen Schlüsselwörtern und negativen Begriffen zu berechnen. Die Ausgabe ist eine Liste, welche aus Indizes besteht, deren Länge der Anzahl der Wörter in doc entspricht und wobei 1 für ein Schlüsselwort und d -1 für einen negativen Begriff steht.
-
Eingabe:
- doc: Doc-Object
- kwords: String-List
- nwords: String-List
-
Ausgabe:
- word_pos_vector: Int-List
detect_questions()
Diese Funktion prüft, ob es sich bei einem Satz um eine Frage handelt oder nicht. Das übergebene Trankript wird mit Hilfe von Interpunktionen in Sätze unterteilt und falls ein Fragezeichen am Ende des Satzes steht, wird weiter geprüft, ob es sich um eine offene oder geschlossene Frage handelt, indem nach bestimmten Fragewörtern (z. B. wie, was, warum) gesucht wird, da diese Wörter auf eine offene Frage anzeigen. Die Funktion gibt eine Liste mit den Werten 0, 1, 2 aus, deren Länge der Anzahl der Sätze in in_text entspricht. Dabei bedeutet 0, dass ein Satz keine Frage ist, 1, dass es sich um eine offene Frage handelt und 2, dass es sich um eine geschlossene Frage handelt.
-
Eingabe:
- in_text: String
- w_words: String-List
-
Ausgabe:
- question_list: Int-List
Liste mit den Einträgen 0, 1, 2 für jeden Satz des Transkripts. - 0: Satz ist keine Frage - 1: Satz ist offene Frage - 2: Kandidat is geschlossene Frage.
count_words_unique()
Diese Funktion zählt die einzigartigen Nomen, Verben und Adjektive in einem Text mit Hilfe eines Spacy Modells.
-
Eingabe:
- text: String
- nlp_model: Spacy-Model Objekt
-
Ausgabe:
- n_word_counts: Counter
- v_word_counts: Counter
- a_word_counts: Counter
get_word_frequencies()
Diese Funktion gibt für jedes Wort in word_counts_counter die Häufigkeit in der deutschen Sprache an basierend auf den Häufigkeiten in n_f_list.
- Eingabe:
- words_counts_counter: Dict
- n_f_list: Dataframe
- Ausgabe:
- word_frequencies: Dict
Spacy Modelle
Verwendetes Model: "de_core_news_lg"
Weitere Spacy Modelle sind verfügbar, müssen allerdings zuvor heruntergeladen werden.
Befehl zum Herunterladen der Modelle:
python -m spacy download modelname
Verfügbare Spacy Modelle:
- de_core_news_sm
- de_core_news_md
- de_core_news_lg
- de_dep_news_trf
Weitere Inforamtionen zu den Modellen ist unter folgendem Link zu finden: https://spacy.io/models/de
Eingabe & Ausgabe Überblick
-
Eingabe:
- .json-Datei:
- Text: String
- Text: Sentences
- .json-Datei:
- Keywords: String-List
- Negative Words: String-List
- .json-Datei:
-
Ausgabe:
- .json-Datei:
- Keyword Position List: INT-List
- Question List: INT-List
- Noun Counts: INT-Dict
- Verb Count: INT-Dict
- ADJ Counts: INT-Dict
- Noun Frequencies: INT-Dict
- Verb Frequencies: INT-Dict
- ADJ frequencies: INT-Dict
- .json-Datei:
-
Additional Data:
- Worthäufigkeitsliste
- .txt-Datei
- Worthäufigkeitsliste
Worthäufigkeitsliste:
Zur Bestimmung der Worthäufigkeiten wir deine Liste aus dem Leipzig Korpus herangezogen. Für Cosy haben wir die Liste 1M aus der Kategorie News verwendet, welche wir von Satzzeichen und Artefakten bereinigt haben. Die Liste ist unter https://wortschatz.uni-leipzig.de/de/download/German#deu_news_2022 zu finden. Mehr Informationen zur Worthäufigkeitsliste sind in [4] gegeben.
[4] T. Eckart & U. Quasthoff: Statistical Corpus and Language Comparison on Comparable Corpora. In: Building and Using Comparable Corpora, Springer-Verlag Berlin Heidelberg, 2013, ISBN: 978-3-642-20128-8