Emergence of polarized ideological opinions in multidimensional topic spaces

*Opinion polarization is on the rise, causing concerns for the openness of public debates. Additionally, extreme opinions on different topics often show significant correlations. The dynamics leading to these polarized ideological opinions pose a challenge: How can such correlations emerge, without assuming them a priori in the individual preferences or in a preexisting social structure? Here we propose a simple model that reproduces ideological opinion states found in survey data, even between rather unrelated, but sufficiently controversial, topics.***Inspired by skew coordinate systems recently proposed in natural language processing models, we solidify these intuitions in a formalism where opinions evolve in a multidimensional space where topics form a non-orthogonal basis. The model features a phase transition between consensus, opinion polarization, and ideological states,**which we analytically characterize as a function of the controversialness and overlap of the topics. Our findings shed light upon the mechanisms driving the emergence of ideology in the formation of opinions.

DtZ has broken

GPT2-Agents

- Continue working on the trajectory. I think that a plot that works entirely on distance to target can result in spirals, so there needs to be some kind of system that looks at the distance to the center line first, and if there is a fail, move the last node from the trajectory list to a dirty list. Then the search restores the cur node to the previous, and continue the search with the trajectory and dirty list nodes ignored?
- Found an example to fix: A6 – H7
- get_closest_node() line = [337.0, 44.0, 581.0, 499.0], cur_node = h1, node_list = [‘a6’, ‘b6’, ‘c7’, ‘d7’, ‘e6’, ‘c5’, ‘b7’, ‘g7’, ‘h6’, ‘g6’, ‘c6’, ‘e7’, ‘f7’, ‘g8’, ‘f6’, ‘d8’, ‘a8’, ‘e8’, ‘d6’, ‘b4’, ‘b8’, ‘c8’, ‘c4’, ‘e5’, ‘d5’, ‘d4’, ‘b5’, ‘c3’, ‘e4’, ‘f5’, ‘f8’, ‘f4’, ‘g5’, ‘g4’, ‘h5’, ‘h4’, ‘f3’, ‘d3’, ‘c2’, ‘e3’, ‘d2’, ‘e2’, ‘b2’, ‘b1’, ‘c1’, ‘e1’, ‘d1’, ‘a1’, ‘f1’, ‘g3’, ‘h3’, ‘g2’, ‘f2’, ‘g1’, ‘h2’, ‘h1’]
- It does fine until it gets to E6, where it chooses c5
- Adding a target distance-based search if the distance to line search fails seems to have fixed it:
nlist = list(nx.all_neighbors(self.gml_model, cur_node)) print("\tneighbors = {}".format(nlist)) dist_dict = {} sx, sy = self.get_center(cur_node) for n in nlist: if n not in node_list: newx, newy = self.get_center(n) newa = [newx, newy] print("\tline dist checking {} at {}".format(n, newa)) x, y = self.point_to_line([l[0], l[1]], [l[2], l[3]], newa) ca = [x, y] ib = self.is_between([sx, sy], [l[2], l[3]], [x, y]) if ib: # option 1: Find the closest to the line dist = np.linalg.norm(np.array(newa)-np.array(ca)) dist_dict[n] = dist print("\tis BETWEEN = {}, dist = {}".format(ib, dist)) if len(dist_dict) == 0: ta = [self.get_center(self.target_node)] for n in nlist: if n not in node_list: newx, newy = self.get_center(n) newa = [newx, newy] print("\ttarget dist checking {} at {}".format(n, newa)) # option 2: Find the closest to the target node dist = np.linalg.norm(np.array(newa)-np.array(ta)) dist_dict[n] = dist print("\tis CLOSEST: dist = {}".format(dist))

- Got legal trajectories working. Below is a set of jumps that are legal (rook to c1, bishop to e3 and then h6, then rook the rest of the way) I think I want to also sort based on closest distance to the current node.

GOES

- Add InfluxDB streaming to DD
- 10:00 Sim meeting
- 2:00 Status meeting