 Good afternoon everyone, we are presenting a reputation system, we Shubhendra, Puneet and myself Kaushik, so we thank Fardak sir for giving us this wonderful opportunity to express our ideas and also thank Nagesh sir, Abhidhi sir and Nitin sir for guiding us throughout the internship period. We also thank the PBL team for testing our project, okay let's begin. So what is reputation? Reputation is nothing but the image of a user in a particular society. So in the system of collaborative communities, reputation is nothing but the active participation of the user. This reputation is used to change the roles of a particular user from author to publisher and publisher to admin, this is done automatically and the reputation factor is solely based on the contribution made by that user. So these are some of the technologies that we used, the Django is a Python framework used for backend development, Docker is a containerization software that is like Docker can be used for placing application into a virtual container so that the application thinks that it is the only application that is running in the system. MySQL is a relational database used for storing the data, for those who don't know what is collaborative communities use a brief description, we have communities 0 to N communities, you can join a community, leave a community, you can request for a community creation which must be approved by the system admin, there can be 0 to N groups within a community, the groups can be either public or private, if the group is public then anyone can join, if it is private you have to be invited, if there are different kinds of roles, author, publisher and admin, resources such as basic article and courses can be created either in community as well as groups and each article can be revised by different number of users. So each revision are stored in the revision module of the Django, workflow is nothing but the number of the stage through which the article passes until it reaches the public state and it is different for both community articles as well as group articles, dashboard is nothing but the friend and we have users dashboard, community dashboard and the group dashboard. So why do we need a reputation system? So the main purpose was to decentralize the power, in the earlier system the system admin had the entire power to make the role changes from author to publisher and publisher to admin. So consider a case where the system admin was not available, so there is a locked up activities going on and there will be no one to supervise the role changes. So in order to automate this process we have introduced a reputation system. So reputation was solely based on one factor that is contribution. The contribution can be measured based on the number of votes, the article, the editor, reporter and published and creation of community slash group. So this is a use case diagram. As you can see there are authors, publisher, community admin and system admin. Author can either upload, download article, report an article and draft an article whereas publisher can additionally as a publish an article as well. The community admin as a feature of handling articles reported where he can approve or reject an article and he can also manage a community where he can add a user and remove a user and also as well update a user. The sole purpose of system admin is to manage a reputation dashboard. Reputation dashboard contains a set of reputation values for the system. I will be explaining in the later slide. This is the reputation dashboard. All these values can be dynamically changed by the system admin. So first these are the initial values for creating a community. Once it gets approved by the super admin, the person who is creating the community gets a place 25 points. Once the article gets published, the user of the last edit gets plus 5 and the publisher gets plus 5 who publish the article and once the article gets reported, if the community admin approves that article, then the user of that version gets minus 5 and the publisher also gets minus 5. If the article is rejected then all the users who reported gets minus 5. If the article is supported and downloaded then the plus or minus 2 gets respectively author of that article. So batch system, coming to the batch system we implemented this to in order to encourage the users to contribute more. So the user separation ranges from 0 to 2000 is considered as an author, if it is beyond 2000 is considered as a publisher. We have used 5 colors to depict the different levels of contribution and values have been divided in between publishing and authors. So this is the table for batch system. The columns represent the number of articles and the rows represent the activity done by the user. So consider a situation where the user has contributed 20 articles as an author out of which 10 has been published. So you will basically get AC yellow batch and red AP batch. So my friend will continue. Hello everyone. Now we will see what and how the reputation changes for a particular user. Basically there are 5 activities that change the reputation of a user. The first is when a person joins a community he get initially 25 points and his role is basically initially set as a author he can either create or draft an article and he can contribute to the community. When a person supports and downwards an article the reputation of the author changes by plus 5 or minus 5 accordingly and when a person edits an article the editor of that article when click on the save button the reputation will change by plus 2 points and when a person reports for an article a notification is sent to the community admin and community admin either approves or reject that request. If he accepts that request then the reputation of author and the publisher decreases and if he rejects the reputation of all the users decreases by minus 5 points. And lastly when article changes from a publishable state to a publish state then the reputation of author as well as the publisher increases by plus 5 points. And our system basically consists of 3 main subsystems I will explain all of these subsystems accordingly this is the first subsystem voting mechanism. We are explaining using flowchart so it will be easy to understand the first is the voting mechanism. The voting mechanism explains how the reputation changes by a port or a port or downvoter of the particular article firstly the article is shown to the user. And when he tries to afford to download that article then the system will check that he is an authenticated user or not. If he is an authenticated user then he has the permission he is not an authenticated user then he has to login first if he is authenticated then the system will check that the user is the author or not. If the user is author then he cannot afford his own article. So the vote flag is disabled for him and if he is not he can either click on a port or downvote button. When he click on a port or downvote button either he can click a port or downvote. If he click a port then the system will check he is recalling that a port button or not. If he is recalling that then the port count will be decreased by 1 and if he is not recalling that a port then the system will check that he has already downvoted that article. If he has already downvoted that article then the downvote count decrease by 1 and the port count increase by 1 and if he has not downvoted article first then the port count increase by 1. Similarly, when he downvotes then the system will check that he is recalling that article or not. If he is recalling then the decrease downvote count by 1 and if he is not recalling then the system will check that he has already upvoted or not. If he has upvoted then upvote count decrease by 1 and downvote count decrease by 1 and if not then the downvote count increase by 1 and all these will lead to the reputation changes and the second reputation mechanism is the reporting mechanism. This will show how system is reported or not. The firstly the displayed article is shown, article is displayed to then the user either reports the article then system will check that he is an authenticated user or not. Then he has to login first if he is not an authenticated user then if he is an authenticated user he click on report button. If he is recalling this report then the report count will be decreased by 1 and if he is not he is pressing that report article then he has to give reasons for that report and the report count will be increased by 1 and report count then the system will check that if the report count is greater than the threshold. Where threshold means the minimum number of reports that is required to send the notification to the community admin then if he the threshold is not fulfilled then the system will do nothing and if it is yes then the notification is send to the community admin and the community admin either approves or reject that request. If he rejects that request then the reputation of all the users that has reported for their article decreases. If he has approved for that then the reputation for the author will and the publisher will decrease and finally this will change to the article state from published to the reported article and this will end and the finally the best system is basically to encourage the user to contribute more in our community. First the article is displayed then the system will again check that he is an authenticated user or not if he is not an authenticated user he has to login and if he is an authenticated user then he can edit an article and the firstly the system will check the role of the article. If the user is an author or he has he edit and click the save changes button then the number the increase article contributed by one and the if the role as a publisher or then he the system will check that either he has revised that article or he has changed the state for the article. If he changed the state for the article then the increase the number of article published by that publisher by one and the author article published by one and if he has revised that article then the increase article revised by one as a publisher will increase by one and these are the implementation links of our project this is the docker link and this is the documentation now should build. So we did some extra work regarding the selenium testing also so inaugural what happened was reprint system tested for notification, notification tested for event log and so on. So first of all we tested for the notification systems. So if you want to see that how a selenium test case runs and how the system is automated then you can go to the link and see that how it is tested and the selenium testing was again done by the PBL team and they listed the main basic four functionalities the upward buttons, the reports, the articles published and there were many things that they should be tested in repetition change because you had different guidelines, different guidelines for different repetition change like there were different protocols as to how the repetition changes so they tested all of that. So coming back, coming to the limitations of our model first there's this point that if there's an article which has been drafted and it slowly goes to the publishable state then why should all the authors present between that should get the equal points though they have the different level of contribution that is the first point that we need to think over. Second is let's say I am just inserting a comma or I'm inserting a full stop or I'm not inserting anything I'm just putting an an or a or whatever so why should I consider let's say if that is not compulsory in an article then why are we considering those edits it should be redundant we should exclude them from grading that particular thing so that is what the other thing that we need to prefer upon and the last is the user behavior as to how to attract the users in the particular model so improvements in future this is again there's one of the algorithms tested by me I have fully developed it but it still needs some validation from the from high officials and this implementation has been done in C++ and further the documentation of that this prototype has been is there in the link given below so this is basically the journal algorithm I'll not be discussing this algorithm as we are running short of time so what I'll tell you is what I'll tell you is this algorithm basically deals with the votes like let's say there's let's say there are versions of articles so we need to select that which of the versions actually improve the article so first of all we are dealing on the selection of the article so this is basically that this is this algorithm basically tells you that what versions to select upon then this tells that if they are selected then how to grade those among all so there's a bank kind of system that I implemented and it'll be further upon work done okay how to avoid the unnecessary edits by user so this is basically an NLP research going on where they try to show that where they actually try to develop the meaning of an article and they try to check that the comma is actually like it is making some sense or not so if it is not making sense then reject it if it's making sense then included so this is a part of NLP that is going on and it is not included yet like it is it has not been researched upon yet so we need to think over that and the last is the game theory part so if you need to if you need to think over that why users will come in our community join our community and play with our community then this is all about game theory so it has some like it has some terms like such as Nash equilibrium and not going to the details but you can refer to the link that was given below all of that consists of all of the documentation of this for future references so concluding we just tried to show that reputed system was decentralized we included the grading and the batch system and we included something in a system reputation so that the users can be graded on the full-scale basis as well as in their own community basis these are all the references that we use so any questions can be posed thank you so I just wanted to first know you're talking about collaborative community right so have you implemented that also or no we have just implemented the reputation system in collaborative community collaborative community was already you're using existing system and based on that you have built up it okay so this one doubt actually got confused so when is the article actually published okay so let's say there are few authors of the article there are few authors in the community and there's one article now this author edits the article and he thinks that this is this can be published so he pushes the publishable button and it goes to the publisher that the notification that review this article for publication now the publisher will see that that whether this article is alleged or not now on the basis of the algorithm that I said to select the versioning he can just see that whether the previous article that was at the previous version has it been improved upon or not if it has not been improved upon then the publisher can directly reject it otherwise he needs to leave the article and see whether is getting published or not okay so the publisher acts as the admin means like he is like the controlling authority on this not exactly controlling authority but yes to an extent he controls the system by publishing the article yeah because if he's not I can just ask like I can submit a article and he's my friend I'll ask him to just no but there are many publishers in the community so they might report so that is what reporting the article they the other publishers might say that you have done the wrong thing and they'll report you report your article and then you report it if it is approved then the replacement goes down by minus 1 how does the allocation every publisher every notification sent every publisher so any one of them can publish yes it gets published and the published article can be reported by any number of users once he's get reported a notification sent to the community admin he is the higher level of the publisher so while the community comment if he can approve and reject article if he approves that reported article the person who publish that article gets the reputation decreases for him I had a doubt about the unnecessary edits also but you already mentioned it as a limitation so I think a simple solution would be to just like incentivizing positive edits you can penalize negative unnecessary edits as well as those are unnecessary based on just like you are you can put the edits also on the collaborative community means like the edits edit the edits have a separate versioning of the article where they'll be stored okay a person can review that but the per we need we need the user to review that but our system we need some such a system which does not depend on user we need to automate the process trying to decentralize right so trying to decentralize but the point is that we cannot rely on users for this okay so the grading system is basically relied on the automation of the collaborative system if this is also in the hands of user then basically there's no control in even like the the super admin basically what you say has no control we are not doing as no control we are saying that he has some control but some of his control has been given to you're not completely what he said decentralizing it by removing the powers from super admin but you're taking some of the past from him and spreading out in the no but at least we can eliminate the negative unnecessary edits but to some extent but how should I identify those unnecessary that's what I'm saying it's like you can eliminate by say if you are able to detect it without even any human intervention you should be able to and if we if it is possible to eliminate even unnecessary edits it could be penalized also yes I mean yeah possible to penalize if you don't want to penalize you don't panelize the bigger issue is how will you identify those unnecessary yes so some tools will be required how do you identify necessary edits that's what I'm saying the unnecessary edits and unnecessary edits the we cannot distinguish between the two that's why you need the NLP research for this this is a short demo of 40 seconds which you can see and see that how we have implemented some new features in that this is the upward and the no-note button that you can see this is the reporting flag no I'm just I'm just trying to show that what functionalities that we add it's already understood I guess no we got it so okay