Example #1
0
def make_counted_table(data):
    pairs = merge_pairs(data)  # Sorteer eerst de binnengekomen data

    res = []  # init the resultaat array
    zelfdeWoordAndereBestand = []  # init array om de count in te zetten
    fresh = ""

    if len(pairs) != 0:
        fresh = pairs[0][0]  # zet het eerste woord waar we naar gaan kijken
        currentTextFile = pairs[0][1]
        # zet het textfile naam waar het eerste woord in voor komt
        countForHowManyInTextFile = 1
        # zet de count op 1 omdat we het eerste woord zelf hebben neergezet

        i = 1  # set i op 1 omdat we de eerste woord handmatig hebben gedaan

        while i < len(pairs):  # ga door tot het eind
            if pairs[i][0] == fresh:
                if pairs[i][1] == currentTextFile:
                    countForHowManyInTextFile += (
                        1
                    )  # Als het woord het zelfde is, en je zit nog in hetzelfde bestand, doe de counter +1
                else:
                    zelfdeWoordAndereBestand.append(
                        [currentTextFile, countForHowManyInTextFile]
                    )  # Als we niet meer in hetzelfde textbestand zitten zetten we de counter in de array, om later te sorteren
                    currentTextFile = pairs[i][1]  # set de huidige textfile naam
                    countForHowManyInTextFile = 1  # Doe de counter op 1, omdat we hem handmatig hebben ingesteld

            else:
                if len(zelfdeWoordAndereBestand) == 0:
                    # woord is maar in 1 textfile terechtgekomen
                    zelfdeWoordAndereBestand.append([currentTextFile, countForHowManyInTextFile])

                zelfdeWoordAndereBestand = sortVanGrootNaarKlein(
                    zelfdeWoordAndereBestand
                )  # er komt een nieuw woord aan bod, dus sorteer de count-array van het laatste woord

                res.append([fresh, zelfdeWoordAndereBestand])  # Voeg deze lijst toe aan de resultaat array
                zelfdeWoordAndereBestand = []  # reset de array voor de counters

                fresh = pairs[i][0]  # Set het nieuwe zoekwoord
                currentTextFile = pairs[i][1]
                # En het textbestand waar we nu in zoeken
                countForHowManyInTextFile = 1
                # En zet de counter op 1 omdat we hem zelf al hebben gecount

            i += 1

        zelfdeWoordAndereBestand.append(
            [currentTextFile, countForHowManyInTextFile]
        )  # laatste is nog niet tegevoegt, hierna wel :)

        # Omdat alle woorden nu zijn geweest zitten we aan onze maximale lengte, maar het laatste woord moet nog wel aan de array toegevoegt worden:
        zelfdeWoordAndereBestand = sortVanGrootNaarKlein(zelfdeWoordAndereBestand)
        res.append([fresh, zelfdeWoordAndereBestand])
    return res
Example #2
0
def make_density_table(data):
    woordenPerFile = []  # [["Brian.txt",17562],["huppel.txt",127547]]

    pairs = merge_pairs(data)

    res = []
    zelfdeWoordAndereBestand = []
    fresh = ""

    if len(pairs) != 0:
        fresh = pairs[0][0]
        i = 1

        currentTextFile = pairs[0][1]
        countForHowManyInTextFile = 1

        while i < len(pairs):
            if pairs[i][0] == fresh:  # Als woord is gelijk aan het te vergelijkenwoord
                if pairs[i][1] == currentTextFile:  # als die uit het zelfde bestand komt counter 1 omhoog
                    countForHowManyInTextFile += 1
                else:
                    # check if we already have the wordCount in our Array

                    indexOfTextFile = linearPairs(
                        woordenPerFile, currentTextFile
                    )  # zoek dan de index van het huidige textbestand

                    if indexOfTextFile != -1:
                        totalWordCount = woordenPerFile[indexOfTextFile][
                            1
                        ]  # als deze niet -1 is kunnen we hem gewoon opvragen
                    else:
                        totalWordCount = len(
                            words(currentTextFile)
                        )  # als hij -1 is, kijk wat het totaal aantal woorden is
                        woordenPerFile.append([currentTextFile, totalWordCount])  # en zet deze in de array

                    freq = (
                        countForHowManyInTextFile / totalWordCount
                    )  # bereken de frequentie door de het getelde aantal woorden delen door het totaal aantal woorden

                    zelfdeWoordAndereBestand.append([currentTextFile, freq])  # En voeg deze vervolgens toe aan de array
                    currentTextFile = pairs[i][1]  # set de nieuwe huidige textfile, waar we nu in aan het zoeken zijn
                    countForHowManyInTextFile = 1  # En er is dus al 1 geteld, dus de counter begint op 1

            else:
                # Er is nu een nieuw woord gedetecteerd
                if len(zelfdeWoordAndereBestand) == 0:
                    # woord voorgekomen in 1 tekstbestand
                    indexOfTextFile = linearPairs(woordenPerFile, currentTextFile)

                    if indexOfTextFile != -1:
                        totalWordCount = woordenPerFile[indexOfTextFile][1]
                    else:
                        totalWordCount = len(words(currentTextFile))
                        woordenPerFile.append([currentTextFile, totalWordCount])

                    freq = countForHowManyInTextFile / totalWordCount
                    zelfdeWoordAndereBestand.append([currentTextFile, freq])

                # Dus moeten we eerst de array van de tekstbestanden met de frequentie sorteren van groot naar klein
                zelfdeWoordAndereBestand = sortVanGrootNaarKlein(zelfdeWoordAndereBestand)

                res.append(
                    [fresh, zelfdeWoordAndereBestand]
                )  # Vervolgens voegen wij het woord + de gesorteerde lijst met frequenties toe aan het resultaat

                zelfdeWoordAndereBestand = []  # We resetten deze array voor nieuwe frequenties
                fresh = pairs[i][0]  # Setten het nieuwe woord om naar te zoeken
                currentTextFile = pairs[i][1]
                # Setten het nieuwe textbestand waarin we zoeken
                countForHowManyInTextFile = 1
                # Omdat hij nu al is gezien begint de counter op 1

            i += 1

        # nu van de laatste het laatste frequentie nog berekenen:
        indexOfTextFile = linearPairs(woordenPerFile, currentTextFile)

        if indexOfTextFile != -1:
            totalWordCount = woordenPerFile[indexOfTextFile][1]
        else:
            totalWordCount = len(words(currentTextFile))
            woordenPerFile.append([currentTextFile, totalWordCount])

        freq = countForHowManyInTextFile / totalWordCount
        zelfdeWoordAndereBestand.append([currentTextFile, freq])

        # einde van de rit, sorteer en voeg het laatste woord nog toe
        zelfdeWoordAndereBestand = sortVanGrootNaarKlein(zelfdeWoordAndereBestand)
        res.append([fresh, zelfdeWoordAndereBestand])

    return res