Advertisement
Guest User

Untitled

a guest
Jan 2nd, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.35 KB | None | 0 0
  1. import pymysql.cursors
  2. from collections import namedtuple
  3.  
  4. data_set = []
  5. #FB_subject, phrase, FB_object, relation
  6. data_set.append({"FB_subject_name":"Kevin Costner","phrase":"was awarded the","FB_object_name":"Honorary César",
  7.     "relation":"award.award_winner.awards_won..award.award_honor.award"})
  8. data_set.append({"FB_subject_name":"Kevin Costner","phrase":"won the","FB_object_name":"Honorary César",
  9.     "relation":"award.award_winner.awards_won..award.award_honor.award"})
  10. data_set.append({"FB_subject_name":"Leonardo di Caprio","phrase":"won the","FB_object_name":"Oscar",
  11.     "relation":"award.award_winner.awards_won..award.award_honor.award"})
  12.  
  13. def precision_recall_evaluation():
  14.     #phraseInfo = namedtuple("phraseInfo", "phrase true_positives false_positives true_negatives false_negatives")
  15.     true_positives = 0.0
  16.     false_positives = 0.0
  17.     true_negatives = 0.0
  18.     false_negatives = 0.0
  19.     #phrases = {}
  20.  
  21.     #Precision = true_positives/false_positives + true_positives
  22.     #Recall = true_positives/ true_positives + false negatives
  23.     connection = pymysql.connect(host= 'localhost',
  24.                                 user = 'root',
  25.                                 password = 'mysql',
  26.                                 db = 'lector',
  27.                                 charset ='utf8mb4',
  28.                                 cursorclass = pymysql.cursors.DictCursor)
  29.     try:
  30.         with connection.cursor() as cursor:
  31.             sql = "SELECT FB_subject_name,phrase,FB_object_name,relation FROM extracted_facts WHERE FB_subject_name = %s AND FB_object_name = %s"
  32.             for row in data_set:
  33.                 cursor.execute(sql,(row["FB_subject_name"],row["FB_object_name"]))
  34.                 result = cursor.fetchall()
  35.                
  36.                 if result == (): #data set con recall max
  37.                     false_negatives += 1
  38.                
  39.                 for element in result:
  40.                     if element["phrase"] == row["phrase"] and element["relation"] == row["relation"]:
  41.                         true_positives += 1
  42.                     elif element["relation"] != row["relation"]:
  43.                         false_positives += 1
  44.  
  45.                     if element["phrase"] != row["phrase"] and element["relation"] == row["relation"]:
  46.                         false_negatives += 1
  47.                     elif element["relation"] != row["relation"]:
  48.                         true_negatives +=1
  49.  
  50.             precision = true_positives/(true_positives+false_positives)
  51.             recall = true_positives/(true_positives+false_negatives)
  52.  
  53.             print "Precision = %f" %precision
  54.             print "Recall = %f" %recall
  55.                
  56.     finally:
  57.         connection.close()
  58.  
  59.    
  60. if __name__ == "__main__":
  61.     precision_recall_evaluation()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement