Open chadbrower0 opened 1 year ago
Chad, this is pretty awesome! Some notes:
I'm really happy to get some code that can construct the opinion similarity network amongst users. There's a related network, the "influence" network that is constructed to create some kind of measure of the influence of a participant on other participants in the forum (e.g. by writing a pro or con that gets lots of inclusions, or a proposal that is voted up).
I would love to provide a direct network view into these networks using a force-directed layout or something similar. I wrote about it a little bit at https://consider.consider.it/data-analytics-dashboard-design-development-priorities-33-24910, and I have some sketches in my sketchbook. While I've been thinking about these network visualizations as part of the host interface, I'm also curious if it would make sense to make them accessible to everyone.
I've added additional halting parameter MAX_GROUP_USERS_FRAC, to prevent all users ending up in the same cluster. You may need to adjust the parameter values to get better results. Also, I've moved the clustering method to a separate worker thread. It appears to prevent freeze-up when clustering is slow, though I don't know what other effects might occur in a real forum with a large number of users.
This is a prototype of coloring users in an opinion dot display, by automatically clustering the users, and then assigning the same color to all users in the same cluster.
Memory use is O( number_of_users x number_of_proposals ). Processor use is O( number_of_users^2 x number_of_proposals ).
Arguably, the clustering logic should go in a separate file, and run in a worker thread started only on-demand.