Inhalt

Aktueller Ordner: /

.ipynb (pretty JSON)

{
    "metadata": {
        "language_info": {
            "codemirror_mode": {
                "name": "python",
                "version": 3
            },
            "file_extension": ".py",
            "mimetype": "text\/x-python",
            "name": "python",
            "nbconvert_exporter": "python",
            "pygments_lexer": "ipython3",
            "version": "3.8"
        },
        "kernelspec": {
            "name": "python",
            "display_name": "Python (Pyodide)",
            "language": "python"
        }
    },
    "nbformat_minor": 4,
    "nbformat": 4,
    "cells": [
        {
            "cell_type": "markdown",
            "source": "Die Wahrscheinlichkeiten werden als Gleitkommazahlen zwischen 0 und 1 dargestellt und die Wahrscheinlichkeitsverteilungen fΓΌr jedes nicht-terminale Symbol in einem WΓΆrterbuch gespeichert. Das Bayes-Netz wird mit einem Pandas DataFrame definiert, wobei jede Zeile eine gerichtete Kante von einem Knoten zu einem anderen zusammen mit der Wahrscheinlichkeit der Kante darstellt.",
            "metadata": []
        },
        {
            "cell_type": "code",
            "source": "import numpy as np\nimport pandas as pd\nimport random\n\n# Define the grammar rules and their probabilities\ngrammar = {\n    \"anfang\": {\"s vkg\": 1.0},\n    \"s vkg\": {\"ende\": 1.0},\n    \"kbbd\": {\"vbbd\": 1.0},\n    \"kba\": {\"vba\": 1.0},\n    \"kae\": {\"vae\": 1.0},\n    \"kaa\": {\"vaa\": 1.0},\n    \"s bbd\": {\"s ba\": 1.0},\n    \"s ae\": {\"s ae\": 0.5, \"s aa\": 0.5},\n    \"s ae\": {\"s aa\": 1.0},\n    \"s b\": {\"s b\": 0.5, \"s a\": 0.5},\n    \"s b\": {\"s a\": 1.0},\n    \"s vt\": {\"s b s b\": 0.5, \"s b s a\": 0.25, \"s a s b\": 0.25},\n    \"s vt\": {\"s b s a\": 0.5, \"s a s b\": 0.5},\n    \"s vt\": {\"s a s a\": 1.0},\n    \"kbg\": {\"vbg\": 1.0},\n    \"kav\": {\"vav\": 1.0},\n    \"s bg\": {\"s vt s av\": 1.0},\n    \"s vt\": {\"s vt\": 0.5, \"s av\": 0.5},\n    \"s vt\": {\"s av\": 1.0},\n}\n\n# Define the probability distributions for each nonterminal symbol\nprob_dist = {}\nfor nt in grammar:\n    for rhs in grammar[nt]:\n        prob = grammar[nt][rhs]\n        prob_dist[(nt, rhs)] = prob\n\n# Define the Bayes net using the probability distributions\nbayes_net = pd.DataFrame(columns=[\"From\", \"To\", \"Prob\"])\nfor nt in grammar:\n    for rhs in grammar[nt]:\n        for tok in rhs.split():\n            bayes_net = bayes_net.append({\"From\": nt, \"To\": tok, \"Prob\": prob_dist[(nt, rhs)]}, ignore_index=True)\n\n# Define the starting symbol and the ending symbol\nstart_symbol = \"anfang\"\nend_symbol = \"ende\"\n\n# Define a function to generate a sentence using the grammar\ndef generate_sentence():\n    stack = [start_symbol]\n    sentence = []\n    while len(stack) > 0:\n        curr_nt = stack.pop()\n        if curr_nt in grammar:\n            rhs_options = list(grammar[curr_nt].keys())\n            rhs_probs = [grammar[curr_nt][rhs] for rhs in rhs_options]\n            chosen_rhs = np.random.choice(rhs_options, p=rhs_probs)\n            stack.extend(reversed(chosen_rhs.split()))\n        else:\n            sentence.append(curr_nt)\n    return sentence\n\n# Generate 10 sentences using the grammar\nfor i in range(10):\n    sentence = generate_sentence()\n    print(\" \".join(sentence))\n",
            "metadata": [],
            "execution_count": null,
            "outputs": []
        },
        {
            "cell_type": "code",
            "source": "",
            "metadata": [],
            "execution_count": null,
            "outputs": []
        }
    ]
}