Python 电影文件将文件解析为字典的形式

Python 电影文件将文件解析为字典的形式,python,Python,1.6。推荐一部电影 创建一个函数,计算一组电影评论中有多少关键字相似 并推荐具有最相似关键字数的电影。 此任务的解决方案需要使用字典。 电影评论和关键词位于名为film_reviews.txt的文件中,用逗号分隔。 第一个术语是电影名称,其余术语是电影的关键字标签(即。, “惊人”、“诗意”、“恐怖”等) 功能名称:类似电影() 参数/参数:电影的名称 返回:与作为参数传递的电影类似的电影列表 film_reviews.txt- 7 Days in Entebbe,fun,foreign,sa

1.6。推荐一部电影 创建一个函数,计算一组电影评论中有多少关键字相似 并推荐具有最相似关键字数的电影。 此任务的解决方案需要使用字典。 电影评论和关键词位于名为film_reviews.txt的文件中,用逗号分隔。 第一个术语是电影名称,其余术语是电影的关键字标签(即。, “惊人”、“诗意”、“恐怖”等)

功能名称:类似电影()

参数/参数:电影的名称

返回:与作为参数传递的电影类似的电影列表

film_reviews.txt-

7 Days in Entebbe,fun,foreign,sad,boring,slow,romance
12 Strong,war,violence,foreign,sad,action,romance,bloody
A Fantastic Woman,fun,foreign,sad,romance
A Wrinkle in Time,book,witty,historical,boring,slow,romance
Acts of Violence,war,violence,historical,action
Annihilation,fun,war,violence,gore,action
Armed,foreign,sad,war,violence,cgi,fancy,action,bloody
Black '47,fun,clever,witty,boring,slow,action,bloody
Black Panther,war,violence,comicbook,expensive,action,bloody

我想这对你有用

film_data = {'films': {}} 
with open('film_reviews.txt', 'r') as f:
    for line in f.readlines():
        data = line.split(',')
        data[-1] = data[-1].strip() # removing new line character
        film_data['films'][data[0].lower()] = data[1:]

def get_smilar_movie(name):
    if name.lower() in film_data['films'].keys():
        original_review = film_data['films'][name.lower()]
        similarities = dict()
        for key in film_data['films']:
            if key == name.lower():
                continue
            else:
                similar_movie_review = set(film_data['films'][key])
                overlap = set(original_review) & similar_movie_review
                universe = set(original_review) | similar_movie_review
                # % of overlap  compared to the first movie = output1
                output1 = float(len(overlap)) / len(set(original_review)) * 100 
                # % of overlap compared to the second movie = output2
                output2 = float(len(overlap)) / len(similar_movie_review) * 100 
                # % of overlap compared to universe
                output3 = float(len(overlap)) / len(universe) * 100 
                similarities[output1 + output2 + output3] = dict()
                similarities[output1 + output2 + output3]['reviews'] = film_data['films'][key]
                similarities[output1 + output2 + output3]['movie'] = key 
        max_similarity = max(similarities.keys())
        movie2 = similarities[max_similarity]
        print(name,' reviews ',film_data['films'][name.lower()])
        print('similar movie ',movie2)
        print('Similarity = {0:.2f}/100'.format(max_similarity/3))
        return movie2['movie']
    return None

get\u similure\u movie
函数将从电影数据
dict
返回最相似的电影。该函数将电影名称作为
参数

我认为这对您可能有用

film_data = {'films': {}} 
with open('film_reviews.txt', 'r') as f:
    for line in f.readlines():
        data = line.split(',')
        data[-1] = data[-1].strip() # removing new line character
        film_data['films'][data[0].lower()] = data[1:]

def get_smilar_movie(name):
    if name.lower() in film_data['films'].keys():
        original_review = film_data['films'][name.lower()]
        similarities = dict()
        for key in film_data['films']:
            if key == name.lower():
                continue
            else:
                similar_movie_review = set(film_data['films'][key])
                overlap = set(original_review) & similar_movie_review
                universe = set(original_review) | similar_movie_review
                # % of overlap  compared to the first movie = output1
                output1 = float(len(overlap)) / len(set(original_review)) * 100 
                # % of overlap compared to the second movie = output2
                output2 = float(len(overlap)) / len(similar_movie_review) * 100 
                # % of overlap compared to universe
                output3 = float(len(overlap)) / len(universe) * 100 
                similarities[output1 + output2 + output3] = dict()
                similarities[output1 + output2 + output3]['reviews'] = film_data['films'][key]
                similarities[output1 + output2 + output3]['movie'] = key 
        max_similarity = max(similarities.keys())
        movie2 = similarities[max_similarity]
        print(name,' reviews ',film_data['films'][name.lower()])
        print('similar movie ',movie2)
        print('Similarity = {0:.2f}/100'.format(max_similarity/3))
        return movie2['movie']
    return None

get_similure_movie
函数将从电影数据
dict
返回最相似的电影。该函数将电影名称作为
参数

您刚才复制粘贴作业了吗?;)您刚才复制粘贴作业了吗?;)