def setUp(self):
        self.movies = CsvFileHandler("..\\data", "sample_movie_dataset.csv")
        self.movies.extract_data()
        self.movies_data_frame = self.movies.get_data_frame()

        self.valid_cb = ContentBased("Avatar", self.movies_data_frame, ["Title", "Genre", "Director", "Actors"])
        self.invalid_cb = ContentBased("Avatar", self.movies_data_frame, ["Title", "Ge", "Director", "Actors"])
Example #2
0
def content_based_filtering(key,
                            movies,
                            filter_list=[
                                "Title", "Genre", "Director", "Actors"
                            ]):
    cb = ContentBased(key, movies, filter_list)
    return cb.filter()
Example #3
0
def handle_client(conn, addr):
    # print(f"[NEW CONNECTION] {addr} connected.")
    msg = conn.recv(HEADER).decode(FORMAT)
    json_msg = json.loads(msg)

    print('abc')
    try:
        algorithm_t = json_msg['algorithm_t']
        table_name = json_msg['tableName']
        pkey_column_name = json_msg['pkey_column_name']
        pkey_val = json_msg['pkey_val']

        if table_name == "movies":
            collection = db['movies']
            filter_list = ["Title", "Genre", "Director", "Actors"]
        elif table_name == "caregivers":
            collection = db['caregivers']
            filter_list = [
                "Name", "Occupation", "Services", "Availability", "Location"
            ]

        dataset = list(collection.find())
        df = DataFrame(dataset)

        cb = ContentBased(pkey_column_name, pkey_val, df, filter_list)
        recommendations = cb.get_recommendations(10)

        conn.send(json.dumps(recommendations, default=str).encode(FORMAT))
        conn.close()
    except:
        conn.send(json.dumps([], default=str).encode(FORMAT))
        conn.close()
def handle_client(conn, addr):
    print(f"[NEW CONNECTION] {addr} connected.")

    while True:
        msg = conn.recv(HEADER).decode(FORMAT)  # length of the message
        json_msg = json.loads(msg)

        print(type(json_msg))
        print(json_msg)

        collection = []
        filter_list = []

        algorithm_t = json_msg['algorithm_t']
        tableName = json_msg['tableName']
        pkey_column_name = json_msg['pkey_column_name']
        pkey_val = json_msg['pkey_val']

        if tableName == "movies":
            collection = db['movies']
            filter_list = [
                pkey_column_name, "Title", "Genre", "Director", "Actors"
            ]
        else:
            collection = db['caregivers']
            filter_list = [
                pkey_column_name, "Name", "Occupation", "Services",
                "Availability", "Location"
            ]

        result = collection.find()
        df = DataFrame(list(result))
        cb = ContentBased(pkey_val, df, filter_list).filter()

        obj = [{"key1": "7", "key2": "abc"}, {"key1": "8", "key2": "def"}]

        conn.send(json.dumps(cb.tolist()).encode(FORMAT))
        # conn.send(str(obj).encode(FORMAT))

        break

    conn.close()
def handle_client(conn, addr):
    # print(f"[NEW CONNECTION] {addr} connected.")
    msg = conn.recv(HEADER).decode(FORMAT)
    json_msg = json.loads(msg)

    try:
        algorithm_t = json_msg['algorithm_t']
        table_name = json_msg['tableName']
        pkey_column_name = json_msg['pkey_column_name']
        pkey_val = json_msg['pkey_val']


        # dataset = list(collection.find())
        # df = DataFrame(dataset)

        filter_list = ["official_occupation", "travel_radius"]
        mycursor.execute("SELECT * FROM caregiver")

        myresult = mycursor.fetchall()
        mylist = myresult
        mydf = DataFrame(mylist)

        mycursor.execute("SELECT column_name FROM information_schema.columns WHERE table_name='caregiver';")
        mycolumnnames = mycursor.fetchall()
        my_col_list = list(mycolumnnames)
        formatted_names = [''.join(i) for i in my_col_list] 
        mydf.columns = formatted_names
        print(mydf)

        cb = ContentBased(pkey_column_name, pkey_val, mydf, filter_list)
        recommendations = cb.get_recommendations(10)

        conn.send(json.dumps(recommendations, default=str).encode(FORMAT))
        conn.close()
    except:
        conn.send(json.dumps([], default=str).encode(FORMAT))
        conn.close()
class TestContentBased(unittest.TestCase):

    def setUp(self):
        self.movies = CsvFileHandler("..\\data", "sample_movie_dataset.csv")
        self.movies.extract_data()
        self.movies_data_frame = self.movies.get_data_frame()

        self.valid_cb = ContentBased("Avatar", self.movies_data_frame, ["Title", "Genre", "Director", "Actors"])
        self.invalid_cb = ContentBased("Avatar", self.movies_data_frame, ["Title", "Ge", "Director", "Actors"])

    def test_constructor(self):
        self.assertIsInstance(self.valid_cb, ContentBased)
        self.assertIsInstance(self.invalid_cb, ContentBased)
        self.assertRaises(TypeError, ContentBased, "Avatar", None, None)
        self.assertRaises(TypeError, ContentBased, None, self.movies_data_frame, None)
        self.assertRaises(TypeError, ContentBased, None, None, [])
        self.assertRaises(TypeError, ContentBased, None, None, None)

    def test_filter(self):
        self.assertIsInstance(self.valid_cb.filter(), list)
        self.assertRaises(KeyError, self.invalid_cb.filter)
Example #7
0
    key = sys.argv[2]
    prim_key = sys.argv[3]

    if sys.argv[4] == "movies":
        collection = db['movies']
        filter_list = [prim_key, "Title", "Genre", "Director", "Actors"]
    else:
        collection = db['caregivers']
        filter_list = [
            prim_key, "Name", "Occupation", "Services", "Availability",
            "Location"
        ]

    result = collection.find()
    df = DataFrame(list(result))
    cb = ContentBased(key, df, filter_list).filter()

    for e in cb[:10]:
        print(e.to_json())

# import csv
# import json
# import pandas as pd
# from pymongo import MongoClient
#
# csvfile = open('C:\\Users\\Alex\\OneDrive\\Semester 6\\Indust App Dev\\Software_Project\\Python\\data\\sample_movie_dataset.csv')
# reader = csv.DictReader(csvfile)
# client = MongoClient('mongodb://localhost:27017/')
#
# db = client['moviesDB']
# collection = db['movies']