Python error "ZeroDivisionError: float division by zero"

+1 vote

Hey! I am trying to create a plagiarism checker logic. I have used this from GitHub: https://github.com/abhilampard/Simple-Plagiarism-Checker

I am ending up with the following error:

ZeroDivisionError: float division by zero

Code:

from flask import Flask, request, render_template
import re
import math

app = Flask("__name__")

q = ""


@app.route("/")
def loadPage():
    return render_template('index.html', query="aws")


@app.route("/", methods=['POST'])
def cosineSimilarity():
    universalSetOfUniqueWords = []
    matchPercentage = 0

    ####################################################################################################

    inputQuery = request.form['query']
    lowercaseQuery = inputQuery.lower()

    queryWordList = re.sub("[^\w]", " ", lowercaseQuery).split()  # Replace punctuation by space and split
    queryWordList = map(str, queryWordList)

    for word in queryWordList:
        if word not in universalSetOfUniqueWords:
            universalSetOfUniqueWords.append(word)

    ####################################################################################################

    fd = open("database1.txt", "r")
    database1 = fd.read().lower()

    databaseWordList = re.sub("[^\w]", " ", database1).split()  # Replace punctuation by space and split
    databaseWordList = map(str, databaseWordList)

    for word in databaseWordList:
        if word not in universalSetOfUniqueWords:
            universalSetOfUniqueWords.append(word)

    ####################################################################################################

    queryTF = []
    databaseTF = []

    for word in universalSetOfUniqueWords:
        queryTfCounter = 0
        databaseTfCounter = 0

        for word2 in queryWordList:
            if word == word2:
                queryTfCounter += 1
        queryTF.append(queryTfCounter)

        for word2 in databaseWordList:
            if word == word2:
                databaseTfCounter += 1
        databaseTF.append(databaseTfCounter)

    dotProduct = 0
    for i in range(len(queryTF)):
        dotProduct += queryTF[i] * databaseTF[i]

    queryVectorMagnitude = 0
    for i in range(len(queryTF)):
        queryVectorMagnitude += queryTF[i] ** 2
    queryVectorMagnitude = math.sqrt(queryVectorMagnitude)

    databaseVectorMagnitude = 0
    for i in range(len(databaseTF)):
        databaseVectorMagnitude += databaseTF[i] ** 2
    databaseVectorMagnitude = math.sqrt(databaseVectorMagnitude)

    matchPercentage = (float)(dotProduct / (queryVectorMagnitude * databaseVectorMagnitude)) * 100

    '''
    print queryWordList
    print
    print databaseWordList
    print queryTF
    print
    print databaseTF
    '''

    output = "Input query text matches %0.02f%% with database." % matchPercentage

    return render_template('index.html', query=inputQuery, output=output)


app.run(debug=True)
Oct 9 in Python by Hannah
• 17,150 points
579 views

1 answer to this question.

0 votes

remove the following statements from code
    queryWordList = map(str, queryWordList)

    databaseWordList = map(str, databaseWordList

its because map can be iterated only once and we are iterating them twice in this code
   for word in queryWordList:  and second time as
   for word2 in queryWordList:
same for databaseWordList

Hope its helps you
 

answered Nov 12 by Abhishek
• 150 points

Related Questions In Python

0 votes
1 answer

Python error "ZeroDivisionError: division by zero"

Catch the error and handle it: try: ...READ MORE

answered May 31 in Python by Rhea
187 views
+2 votes
2 answers

Error while printing hello world in python.

You must be trying this command in ...READ MORE

answered Mar 31, 2018 in Python by GandalfDwhite
• 1,320 points
146 views
0 votes
1 answer

Number division in python

For Python 3, use the // operator: q = ...READ MORE

answered Apr 18, 2018 in Python by Nietzsche's daemon
• 4,260 points
43 views
+1 vote
3 answers
0 votes
1 answer

How to sort Counter by value using python?

Use the Counter.most_common() method, it'll sort the items for you: >>> ...READ MORE

answered May 22, 2018 in Python by charlie_brown
• 7,720 points
2,228 views
0 votes
2 answers

Indentation Error in Python

Use tabs instead of spaces. This is ...READ MORE

answered Feb 14 in Python by Shashank
• 1,350 points
122 views
+1 vote
2 answers

how can i count the items in a list?

Syntax :            list. count(value) Code: colors = ['red', 'green', ...READ MORE

answered Jul 6 in Python by Neha
• 330 points

edited Jul 8 by Kalgi 415 views
+4 votes
6 answers