I am trying to build a system where user come on the platform and he chooses a topic(predefined few topics) and then we connect him with any random online user who chooses the same topic. Then they can do conversation.

Now, I am trying to connect them smartly based on user's historical data (users with whom he had match earlier along with time duration of their conversation, and raing after the conversation etc). and his basic profile data.

How can I use collaborative filtering here, because I don't have any product here and their are very few users available online(10-15) at any time so I have to connect any one of them.

Thanks in advance!

  • $\begingroup$ I disagree with your premise that you don't have a product - the conversation is your product. Do you collect your conversation data? If so, you can apply NLP techniques to it, treat it as a product and then make recommendations based on the content of the conversations. That should be important to you because a long, enjoyable conversation - and the topics within - may have nothing to do with the original topic the person(s) chose. $\endgroup$ Commented Oct 18, 2018 at 19:55
  • $\begingroup$ No, I am not storing their conversation. But in collaborative filtering we create matrix between user and item. Can we create matrix between user and user. and after call we have rating provided to user. so we can say here user is also a product. what you say ? $\endgroup$ Commented Oct 22, 2018 at 11:13
  • $\begingroup$ Yes, you may be able to do that but you're going to need a long list of factors for each user in order to make that work. But then what? You're going to run into an issue where User A matches with User B because of conversation topic but User C is a better match because of the recommender, but no match via topic, right? Or will you be eliminating the match via topic? $\endgroup$ Commented Oct 22, 2018 at 13:19
  • $\begingroup$ What if first, we will filter the available users with the topic and then see best rating user with the help of recommender. I think it will work? $\endgroup$ Commented Oct 22, 2018 at 13:37
  • $\begingroup$ Only you can answer that. It depends on the depth/quality of the data you have and the power of the resulting algorithm(s) $\endgroup$ Commented Oct 22, 2018 at 13:44

1 Answer 1


You can use collaborative filtering with implicit features. However, I would first start with an even simpler approach. Maybe you could start using a distance metric, such as cosine similarity, or search for nearest neighbours using KNN.

  • $\begingroup$ Thank you for your answer, I am also trying to do something similar suggested by you. I am calculating the centroid(using avg of all the feature vector) of all the previous good conversation of that user and finding cosine similarity between centroid and online users feature vector. And the closest user we can say will have good conversation. But I am struggling here to improve accuracy(precision at 1). How can I improve accuracy ? $\endgroup$ Commented Oct 22, 2018 at 11:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.