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 |