Tiempo de lectura aprox: 1 minutos, 59 segundos
At Play Business, we are community-centric; hence, we encourage and allow our community to speak up and share their opinion with the rest of the investors through the comments section of each investment opportunity we publish. There are two channels available to cast comments, the snapshots (a brief of the company) of the investment rounds and the different rounds’ sales reports. There, users can comment on anything they like, and if there is the need, we respond to them if appropriate. These comments also serve to have a general idea of the conformity of the users with the different projects, the team in charge of moderating the comment sections can have a general idea of the sentiment after reading several comments. However, there is no way of quantifying this sentiment, and it does not scale well with the increment of users in the platform. Therefore we needed a technical solution to address this concern.
The proposed solution was to use natural language processing to determine each comment’s sentiment and sentiment subjects. Specifically, we decided to use a neural network trained with a dataset of generic comments and texts. To host and train this neural network, we hired MeaningCloud to provide an easily accessible API to analyze texts using our designed model.
To develop a natural language processing model that fitted our needs, we worked closely with the moderation team in charge of the comments to better identify key terms that needed to be considered for our model because our users have developed their own words over the years to refer to certain things. Therefore, our model required to consider them to identify the sentiment subjects accurately.
Using this model, we can, for instance, analyze the following comment that was found in our platform on an investment round snapshot: “It is my second investment, and I trust you, I had a bad experience with my first investment in the brewery, but always forward.” The analysis returns that it is an overall neutral comment, without irony and with subjectivity; however, when we check the different sections, we identify that:
- “I trust you” is a positive component, with its subject being Play Business.
- “I had a bad experience with my first investment in the brewery” is a negative component with the subject being the investment and the company of the investment.
- The rest of the comment is neutral or without sentiment. For example, “It is my second investment” has no sentiment.
Having the model up and running in MeaningCloud meant that we got the resulting score and subjects in a JSON object with just an API call. However, to properly analyze this data, we needed to have it stored in our database so that we do not make a lot of requests to the API every time we want to see the score. The database structure to store these analyses was as follows:
It is a simple schema that allows us to store the overall sentiment of the comments and the sentiment subjects identified within it to easily query either the general sentiment towards a specific subject or the overall comments for a particular project. It is also polymorphically related to the owner object that contains the text to analyze; this allows us to reuse the exact same module with any text, not just comments.
Having a sentiment metric helps to identify projects where there is excitement or discomfort by the users; having an unique metric helps to take action more quickly in responding to potential problems expressed in the comments. It also allows us to easily identify the sentiment subjects causing specific reactions and helps address them separately, allowing for more data-driven decision-making.
If you would like to be involved in projects like this, check out our jobs page and join the engineering team.