Considerit / ConsiderIt

For deliberation and opinion visualization
GNU Affero General Public License v3.0
90 stars 14 forks source link

Add automatic-clustering as custom-view attribute #175

Open chadbrower0 opened 1 year ago

chadbrower0 commented 1 year ago

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.

tkriplean commented 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.

chadbrower0 commented 1 year ago

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.