Better pruning of tags and recommenders

This commit is contained in:
Dominik Moritz Roth 2021-09-26 16:51:17 +02:00
parent 9d03b37e16
commit 06a0461e93

View File

@ -169,7 +169,7 @@ def removeTags(G):
def pruneTags(G, minCons=2): def pruneTags(G, minCons=2):
for n in list(G.nodes): for n in sorted(list(G.nodes), key=lambda i: G.nodes[i]['score'] + len(G.nodes[i]['feedbacks'])/5 if 'score' in G.nodes[i] and 'feedbacks' in G.nodes[i] else 0):
node = G.nodes[n] node = G.nodes[n]
if node['t'] == 'tag': if node['t'] == 'tag':
foundCon = 0 foundCon = 0
@ -188,7 +188,7 @@ def pruneTags(G, minCons=2):
def pruneRecommenders(G, minCons=2): def pruneRecommenders(G, minCons=2):
for n in list(G.nodes): for n in sorted(list(G.nodes), key=lambda i: G.nodes[i]['score'] if 'score' in G.nodes[i] else 0):
node = G.nodes[n] node = G.nodes[n]
if node['t'] == 'recommender': if node['t'] == 'recommender':
foundCon = 0 foundCon = 0
@ -638,11 +638,12 @@ def recommendNBooksTagBased(G, mu, std, n, removeTopListsB=True):
def recommendNBooks(G, mu, std, n, removeTopListsB=True, removeUselessRecommenders=True): def recommendNBooks(G, mu, std, n, removeTopListsB=True, removeUselessRecommenders=True):
removeRestOfSeries(G) removeRestOfSeries(G)
removeBad(G, mu-std-1) removeBad(G, mu-std-0.5)
removeBad(G, mu+std/2, groups=['recommender'])
removeKeepBest(G, int(n*2) + 5, maxDistForRead=2) removeKeepBest(G, int(n*2) + 5, maxDistForRead=2)
removeEdge(G) removeEdge(G)
removeHighSpanTags(G, 12) removeHighSpanTags(G, 10)
removeHighSpanReadBooks(G, 6) removeHighSpanReadBooks(G, 10)
removeDangling(G, alsoBooks=False) removeDangling(G, alsoBooks=False)
pruneRecommenders(G, 13) pruneRecommenders(G, 13)
pruneTags(G, 13) pruneTags(G, 13)