Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Working on ranking a list of reviewers with respect to a single revie…
…wer. This is being implemented with PearsonCorrelation and will be improved later to work with any SimilarityScore algorithm.
- Loading branch information
1 parent
5b203fa
commit b3b1061
Showing
6 changed files
with
113 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,71 @@ | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using NUnit.Framework; | |||
using Recommender.Data; | |||
using Recommender.Reviews; | |||
|
|||
namespace Recommender.Tests | |||
{ | |||
[TestFixture] | |||
class RankReviewersTests | |||
{ | |||
private List<Reviewer> reviewers; | |||
IOrderedEnumerable<KeyValuePair<Reviewer, double>> sortedReviewers; | |||
private RankReviewers rankReviewers; | |||
|
|||
[SetUp] | |||
public void SetUp() | |||
{ | |||
var currentUser = BuildCurrentUser(); | |||
reviewers = BuildReviewers(); | |||
|
|||
sortedReviewers = new RankReviewers(BuildCurrentUser(), BuildReviewers()).Rank(); | |||
} | |||
|
|||
private List<Reviewer> BuildReviewers() | |||
{ | |||
return new List<Reviewer> | |||
{ | |||
{ReviewerBuilder.BuildReviewer2()}, | |||
{ReviewerBuilder.BuildReviewer3()}, | |||
{ReviewerBuilder.BuildReviewer4()}, | |||
{ReviewerBuilder.BuildReviewer5()}, | |||
}; | |||
} | |||
|
|||
private static Reviewer BuildCurrentUser() | |||
{ | |||
return ReviewerBuilder.BuildReviewer1(); | |||
} | |||
|
|||
[Test] | |||
public void OrderingOfSortedReviewersShouldBeDifferentThanInitialListOfReviewers() | |||
{ | |||
Assert.AreNotEqual(reviewers.First(), sortedReviewers.First().Key); | |||
} | |||
|
|||
[Test] | |||
public void TheMostSimilarReviewerShouldBeR4() | |||
{ | |||
Assert.AreEqual(reviewers.ElementAt(2).Name, sortedReviewers.ElementAt(0).Key.Name); | |||
} | |||
|
|||
[Test] | |||
public void TheSecondRankedReviewerShouldBeR5() | |||
{ | |||
Assert.AreEqual(reviewers.ElementAt(3).Name, sortedReviewers.ElementAt(1).Key.Name); | |||
} | |||
|
|||
[Test] | |||
public void TheThirdRankedReviewerShouldBeR2() | |||
{ | |||
Assert.AreEqual(reviewers.ElementAt(0).Name, sortedReviewers.ElementAt(2).Key.Name); | |||
} | |||
|
|||
[Test] | |||
public void TheLeastSimilarReviewerShouldBeR3() | |||
{ | |||
Assert.AreEqual(reviewers.ElementAt(1).Name, sortedReviewers.ElementAt(3).Key.Name); | |||
} | |||
} | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,26 @@ | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using Recommender.Reviews; | |||
using Recommender.SimilarityScore; | |||
|
|||
namespace Recommender | |||
{ | |||
public class RankReviewers | |||
{ | |||
private readonly Reviewer CurrentUser; | |||
private readonly List<Reviewer> Reviewers; | |||
|
|||
public RankReviewers(Reviewer currentUser, List<Reviewer> reviewers) | |||
{ | |||
CurrentUser = currentUser; | |||
Reviewers = reviewers; | |||
} | |||
|
|||
public IOrderedEnumerable<KeyValuePair<Reviewer, double>> Rank() | |||
{ | |||
var scores = Reviewers.ToDictionary(r => r, r => new PearsonCorrelation(CurrentUser, r).Score()); | |||
|
|||
return scores.OrderByDescending(key => key.Value); | |||
} | |||
} | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters