示例#1
0
def make_table(pairs):
    sortedPairs = merge_pairs(pairs)  # sorteer eerst de binnengekomen data
    pairs = remove_dups_pairs(sortedPairs)  # Verwijder daarna de duplicaten

    res = []  # init de resultaat array
    woordInDezeTextFiles = []  # init de array om de textfiles in te zetten
    fresh = ""

    if len(pairs) != 0:
        fresh = pairs[0][0]  # set het te zoeken woord op de eerste van de data
        woordInDezeTextFiles.append(pairs[0][1])  # voeg de textfile name dan ook direct toe
        i = 1  # En zet i op 1 want je hebt de eerste al gehad

        while i < len(pairs):
            if pairs[i][0] == fresh:
                woordInDezeTextFiles.append(
                    pairs[i][1]
                )  # als het woord om te zoeken hetzelfde is, voeg de textfile name dan toe aan de array
            else:
                res.append(
                    [fresh, woordInDezeTextFiles]
                )  # Er komt een nieuw woord => zet de te zoeken woord en de textfile names in de resultaat array
                woordInDezeTextFiles = []  # Reset de textfiles namen array

                fresh = pairs[i][0]  # Set het nieuwe te zoeken woord
                woordInDezeTextFiles.append(pairs[i][1])  # En voeg de naam van de textfile toe aan de array
            i += 1

        res.append([fresh, woordInDezeTextFiles])  # Alles is nu geweest, voeg het laatste woord + textfiles nog toe
    return res
示例#2
0
def make_table(pairs):
    result1 = sort.merge_pairs(pairs)  #merge sort all the pairs
    result2 = dup.remove_dup(
        result1)  #removes the duplicates in the word pairs
    result3 = dup.merge_dupes_file(
        result2
    )  #same words having different file names are put into one list as specification asks
    return result3
示例#3
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
示例#4
0
def make_table(pairs):
    result1 = sort.merge_pairs(
        pairs
    )  #merge sort all the pairs, the dupes function only work on sorted files
    result2 = dup.count_dupes_per_file(
        result1)  #count the number of duplicates for each word in the file
    result3 = dup.merge_dupes_file(
        result2)  #make the list for each word to tell in which files it occurs
    for i in range(
            0, len(result3)
    ):  #make the list created in previous step descending for all the words
        result3[i][1] = sort.bubbledes(result3[i][1])
    return result3  #give output of the table created
示例#5
0
def make_table(pairs):
    ref = count_files_words(
        pairs
    )  #make a table which keeps in track the number of wrods in each file
    result1 = sort.merge_pairs(pairs)  #merge sort the pairs
    result2 = dup.count_dupes_per_file(
        result1)  #count the number of duplicates for each word in each file
    result3 = dup.merge_dupes_file(
        result2
    )  #make a list for each word listing all the files they occur in
    for i in range(
            0, len(result3)
    ):  #calculates the frequency density for each word in each file using the list created above
        result3[i][1] = calculate_density(
            result3[i][1],
            ref)  #carries out the function above for each i-th word
    result3 = make_des(result3)  #makes it descending order
    return result3  #gives back the result
示例#6
0
def make_table(pairs):
    print("all: ", pairs)
    print()
    ref = count_files_words(pairs)
    print("words in each file: ", ref)
    print()
    result1 = sort.merge_pairs(pairs)
    print("sorted: ", result1)
    print()
    result0 = dup.count_dupes_per_file(result1)
    print("counting dupes: ", result0)
    print()
    ##    result2 = dup.remove_dup(result1)
    ##    print("no in file dup: ", result2)
    ##    print()
    result3 = dup.merge_dupes_file(result0)
    print("merged dupes interfile: ", result3)
    print()
    for i in range(0, len(result3)):
        result3[i][1] = calculate_density(result3[i][1], ref)
    result3 = make_des(result3)
    return result3
示例#7
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