Chat 2 dict 2 df

Chat 2 dict 2 df#

chat_0 = """
hier ein paar Metadaten, Beispiele:

Datum: 2025-11-27

KI: Google.AI

===

Was ist eine List Comprehension?

---

Eine List Comprehension in Python bietet eine kompakte und lesbare Möglichkeit, 
Listen zu erstellen, zu filtern oder zu transformieren, oft als Einzeiler.

---

In MiniZinc spricht man von Array Comprehensions, 
da Listen in MiniZinc eigentlich Arrays sind. 

Zum Beispiel erzeugt der Ausdruck [i + j | i, j in 1.. 3 where j < i] das Array [3, 4, 5]

===

Warum ist Python eine objektorientierte Sprache?

---

Alles ist ein Objekt: In Python ist jeder Wert, auch grundlegende Datentypen wie Zahlen, 
Zeichenketten oder Funktionen, ein Objekt mit eigenen Typen und Methoden.

Polymorphismus: Dieselben Methoden oder Operatoren können in verschiedenen Kontexten 
unterschiedliche Funktionen erfüllen.

---

Python ist zudem eine Multi-Paradigmen-Sprache, 
die auch prozedurale und funktionale Programmierstile zulässt, 
weshalb sie nicht als rein objektorientiert gilt, 
aber starke OOP-Fähigkeiten bietet.

"""
chat = """
Google.AI

Ein Versuch in der Python-VL

Modell unklar

===

was ist eine listcomprehension?

---

Eine List Comprehension (Listen-Generator oder Listen-Abstraktion) ist eine
prägnante und elegante Methode in Programmiersprachen wie Python.

---

Man kann damit Listen erstellen, filtern oder transformieren

---

List Comprehensions sind in vielen Fällen schneller als manuelle for-Schleifen, da die zugrunde liegende Implementierung in der Sprache optimiert ist.

===

Wie geht das in Minizinc?

---

In MiniZinc wird dieses Konzept als
"Array Comprehension" (Array-Generator) oder "Set Comprehension" (Mengen-Generator) bezeichnet und ist ein zentrales und mächtiges Sprachmerkmal

---

array_name = [<Ausdruck> | <Generatoren> where <Bedingung>];

"""
chat_interactions = chat.split("===")
len(chat_interactions), chat_interactions
(3,
 ['\nGoogle.AI\n\nEin Versuch in der Python-VL\n\nModell unklar\n\n',
  '\n\nwas ist eine listcomprehension?\n\n---\n\nEine List Comprehension (Listen-Generator oder Listen-Abstraktion) ist eine\nprägnante und elegante Methode in Programmiersprachen wie Python.\n\n---\n\nMan kann damit Listen erstellen, filtern oder transformieren\n\n---\n\nList Comprehensions sind in vielen Fällen schneller als manuelle for-Schleifen, da die zugrunde liegende Implementierung in der Sprache optimiert ist.\n\n',
  '\n\nWie geht das in Minizinc?\n\n---\n\nIn MiniZinc wird dieses Konzept als\n"Array Comprehension" (Array-Generator) oder "Set Comprehension" (Mengen-Generator) bezeichnet und ist ein zentrales und mächtiges Sprachmerkmal\n\n---\n\narray_name = [<Ausdruck> | <Generatoren> where <Bedingung>];\n\n'])
# qa ... query and answers
import regex as re

chat_qa_0 = [ re.split(r"\n+---+\n+", interaction) for interaction in chat_interactions ] 
chat_qa_0
[['\nGoogle.AI\n\nEin Versuch in der Python-VL\n\nModell unklar\n\n'],
 ['\n\nwas ist eine listcomprehension?',
  'Eine List Comprehension (Listen-Generator oder Listen-Abstraktion) ist eine\nprägnante und elegante Methode in Programmiersprachen wie Python.',
  'Man kann damit Listen erstellen, filtern oder transformieren',
  'List Comprehensions sind in vielen Fällen schneller als manuelle for-Schleifen, da die zugrunde liegende Implementierung in der Sprache optimiert ist.\n\n'],
 ['\n\nWie geht das in Minizinc?',
  'In MiniZinc wird dieses Konzept als\n"Array Comprehension" (Array-Generator) oder "Set Comprehension" (Mengen-Generator) bezeichnet und ist ein zentrales und mächtiges Sprachmerkmal',
  'array_name = [<Ausdruck> | <Generatoren> where <Bedingung>];\n\n']]
chat_qa = [ [ x.strip() for x in line ] for line in chat_qa_0 ]
chat_qa
[['Google.AI\n\nEin Versuch in der Python-VL\n\nModell unklar'],
 ['was ist eine listcomprehension?',
  'Eine List Comprehension (Listen-Generator oder Listen-Abstraktion) ist eine\nprägnante und elegante Methode in Programmiersprachen wie Python.',
  'Man kann damit Listen erstellen, filtern oder transformieren',
  'List Comprehensions sind in vielen Fällen schneller als manuelle for-Schleifen, da die zugrunde liegende Implementierung in der Sprache optimiert ist.'],
 ['Wie geht das in Minizinc?',
  'In MiniZinc wird dieses Konzept als\n"Array Comprehension" (Array-Generator) oder "Set Comprehension" (Mengen-Generator) bezeichnet und ist ein zentrales und mächtiges Sprachmerkmal',
  'array_name = [<Ausdruck> | <Generatoren> where <Bedingung>];']]
chat_dict = {}

chat_dict[0] = { "type": "metadata", "text": chat_qa[0] }

i = 1
for qa in chat_qa[1:]:  # qa ... Frage und Antworten
   
    i_query = i
    chat_dict[i_query] =  { "type": "query", "text": qa[0] }
    
    i += 1
    for answer in qa[1:]:
        chat_dict[i] = { "type": "answer", "query": i_query, "text": answer.strip() }
        i += 1
chat_dict
{0: {'type': 'metadata',
  'text': ['Google.AI\n\nEin Versuch in der Python-VL\n\nModell unklar']},
 1: {'type': 'query', 'text': 'was ist eine listcomprehension?'},
 2: {'type': 'answer',
  'query': 1,
  'text': 'Eine List Comprehension (Listen-Generator oder Listen-Abstraktion) ist eine\nprägnante und elegante Methode in Programmiersprachen wie Python.'},
 3: {'type': 'answer',
  'query': 1,
  'text': 'Man kann damit Listen erstellen, filtern oder transformieren'},
 4: {'type': 'answer',
  'query': 1,
  'text': 'List Comprehensions sind in vielen Fällen schneller als manuelle for-Schleifen, da die zugrunde liegende Implementierung in der Sprache optimiert ist.'},
 5: {'type': 'query', 'text': 'Wie geht das in Minizinc?'},
 6: {'type': 'answer',
  'query': 5,
  'text': 'In MiniZinc wird dieses Konzept als\n"Array Comprehension" (Array-Generator) oder "Set Comprehension" (Mengen-Generator) bezeichnet und ist ein zentrales und mächtiges Sprachmerkmal'},
 7: {'type': 'answer',
  'query': 5,
  'text': 'array_name = [<Ausdruck> | <Generatoren> where <Bedingung>];'}}
import pandas as pd
df = pd.DataFrame.from_dict(chat_dict, orient="index")
df
type text query
0 metadata [Google.AI\n\nEin Versuch in der Python-VL\n\n... NaN
1 query was ist eine listcomprehension? NaN
2 answer Eine List Comprehension (Listen-Generator oder... 1.0
3 answer Man kann damit Listen erstellen, filtern oder ... 1.0
4 answer List Comprehensions sind in vielen Fällen schn... 1.0
5 query Wie geht das in Minizinc? NaN
6 answer In MiniZinc wird dieses Konzept als\n"Array Co... 5.0
7 answer array_name = [<Ausdruck> | <Generatoren> where... 5.0