{'fraction_non_alphanumeric': 0.031113640675393663, 'fraction_numerical': 0.004970593815215329, 'mean_word_length': 4.7233441910966345, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 3, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Mapping weblog communities

Websites of a particular class form increasingly complex networks, and new tools are needed to map and understand them. A way of visualizing this complex network is by mapping it. A map highlights which members of the community have similar interests, and reveals the underlying social network. In this paper, we will map a network of websites using Kohonen's self-organizing map (SOM), a neural-net like method generally used for clustering and visualization of complex data sets. The set of websites considered has been the Blogalia weblog hosting site (based at http://www.blogalia.com/), a thriving community of around 200 members, created in January 2002. In this paper we show how SOM discovers interesting community features, its relation with other community-discovering algorithms, and the way it highlights the set of communities formed over the network.


Introduction and state of the art
Web-based diaries, weblogs (pronounced wee-blogs), or simply blogs [1,2,3], have become increasingly popular in the last few years. Worldwide, there could be several million. Non-English weblogs are in the hundreds of thousands 1 . Even as weblogs are sometimes perceived as little more than postadolescent rants, they actually are on-screen renderings of communities of readers/writers, which establish long-running relationships; these communities include weblog owners/writers or editors, people that post comments to weblog stories, and silent but persistent readers, both of whom might, or might not, have its own weblog. A weblog by itself need not be important, but as part of a community, its importance cannot be disregarded. All weblogs in the world can be seen as components of a set of communities, each one with its own idols, axioms, enemies, and hierarchies. Communities are not clear-cut, since a particular weblog might belong to several communities at the same time, even though most weblogs (in fact, all weblogs in the Spanish-speaking community [4]) are connected to each other by a finite set of links.
Since blogs perform a sort of collaborative filtering of information published on the web at large, and are starting to be used as knowledge management tools, identifying communities becomes specially important. Information flows more easily within communities than outside them; getting a message across to as many persons as possible becomes, then, a matter of identifying communities, and the position of different sites within them. As straightforward as this view of the community concept might seem, the main problem is that there is no universally accepted definition of community in complex networks. Informally, it can be defined as a set of blogs (or websites) that share common interests, but this only begs the definition of common and interest. Another possible definition is to consider a community as a set of blogs that have a stronger relationship among them than with the rest of the websites of the same class. Equating relationship with hyperlinks means that a community is a set of weblogs that has more links within the group than to outside sites. However, while heavily linking implies belonging to the same community, the inverse does not necessarily hold: two weblogs 2 might both link to the same one, and thus belong, in a sense, to the same community without being aware of each other or the community.
In practice, data available to discover community ascription must be included in the web page source code, which is text formatted using HTML tags and some additional meta-tags; sometimes, each text can be assigned a time-stamp. The aforementioned common interest will have to be identified by using this data. From the point of view of text content, two websites are related if they deal approximately with the same topics. Considering links, two websites are related if they link to each other in either direction. These two definitions are actually correlated: Menczer has proved [5] that pages that link to each other are semantically related. Furthermore, there are several additional problems with communities related by content: if a community is defined by keywords, synonyms and hypernims, if not considered or appropriately chosen, can lead to overseeing certain websites. This problem is aggravated further by the distinct characteristics of weblogs as rapidly changing websites and not focusing on a single topic or set of topics. Using content requires a vector space representation, usually term frequency/inverse document frequency [6,7]. This representation is usually highly-dimensional, much more so than using links to other members of the set of webs that is going to be studied. For a small set of sites, link-based representation is much more compact. Relationship expressed by content distance, however, is implicit: two weblogs talking about politics, for instance, need not know each other, although it is very likely that they do since at least the Spanish blogosphere is connected [4]. Moreover, in many cases, communities are multilingual; two weblogs closely related to each other (for instance, written by the same author) but written in different languages (for instance, Spanish and Catalan, or Spanish and English) will be completely unrelated if only content is taken into account.
Meta-content following protocols such as Friend of a Friend (FOAF, [8,9]) could, in principle, be also used as network arcs, but its use is not widespread, and it represents simply a binary relation (either you are a FOAF or you are not), while links have some quantitative quality (linking several times is different from linking only once).
In this work, links have been chosen over content because they are easily parseable from the document source; this choice allows for a low-dimensional representation of each blog which will be represented by a vector with as writer(s), commenters, and even those that link to it without even reading it many components as blogs in the group under study. This obviously only holds if the number of relevant sites is smaller than the vocabulary needed to represent the same sites in a vector space model. It is also univocal: a link clearly identifies origin (the weblog it has been found in) and destination (from the URL). Links represent a real relationship among the blogs they join: they imply that, at least, one has read the other, which shows a kind of community relation. This is inferred because communities are created by reading, writing about other blogs or commenting on them. It is true that there might be other members of the community not uncovered by this method (for instance, loyal readers or people who use comments to participate); similarly, a member of the community could be linked to another via a blog not belonging to the set of blogs under study (Blogalia, in this case); however, we do not attempt to say the last word about community structure in the blogosphere (as is usually called the set of all weblogs). Our aim is to portray a method to identify communities by considering hyperlinks a good enough indicator of community relationship.
Content (distance in vector space) or links (number of links, or just the existence or not of links) are used to create a complex network of the set of sites under study; consequently, a community must be defined by some measure that distinguishes, or makes apart, some sites from others. There are several possible network structures that could be considered communities: cliques, or sets of sites that link to each other, bipartite cliques, sets of sites which all link to another, different, set of sites [10], k-cores or factions, sets of sites connected to, at most, k other sites in the group, or bipartite cores, which includes both the connector and the connected sites. Most of these structures can be computed and displayed with programs such as Pajek 3 or UCINET 4 , but require some initial parameters such as the number k of links or the number of cores we want to divide the original set into. All of these are valid definitions, and can be used in some cases. However, some of them are restrictive in the sense that they only take into account binary relations, and not the link weight (number of times it has been used) or direction. In the case at hand, direction is important: usually, some blog that has been "pointed to" might not even be aware of it 5 . The majority of the concepts defined above do not create clear visual image of the community they are describing.
Sometimes, further steps must be taken to infer complex network communities. Some of them are geared toward specific communities, e.g. communities expressed via web pages or email messages, like the one we are dealing with in this paper. Gibson et al. [11] proposed one of the first algorithms to infer web communities; it defined a community as a core of central, authoritative pages linked by hub pages. However, this definition is a bit fuzzy and does not provide clear-cut partitions of a set of websites, but it is interesting in the sense that it was one of the first to realize the importance of communities on the web, and to propose an algorithm to define them. Shortly afterwards, Flake et al. [12] use a maximum flow/minimal cut algorithm to define the edges and nodes that act as boundary between communities.
There exist other algorithms that detect partitions of the original set according to properties of links, as opposed to properties of nodes. One of these is the Girvan-Newman algorithm [13], which detects links that, when removed, isolate some part of the original set. Clusters, or communities, are then computed according to where these removed links are. This algorithm discovers communities quite efficiently, as seen in [14], but, once again, it does not discover the internal structure of each community, or the features that defines them.
Recently, Radicchi et al. [15] review existing community definition and identification methods, claiming that most community definitions are algorithmdependent, and propose a new definition for community discovery that is independent of the algorithm. Furthermore, they simplify Girvan-Newman algorithm by using purely local information to compute edge betweenness.
This paper, along with our previous work [16], uses Kohonen's Self-Organizing Map [17], which is an unsupervised neural-network like algorithm that simultaneously performs clustering of input data, and maps it to a twodimensional surface. Our objective is to demonstrate how the self-organizing map discovers underlying community structure efficiently, allows easy visualization of the complex network, highlights the underlying topic that defines each community, and permits assigning new websites to a community by merely looking at its links.
The rest of the paper is organized as follows: first, we make a brief introduction to Kohonen's self-organizing map in section 2. The next section is devoted to present the results of applying Kohonen's self-organizing map to community discovery in Blogalia in section 3, and, finally, our conclusions and an outline of future work is presented.

Kohonen's self-organizing map
Kohonen [17] originally proposed his self-organizing map inspired by previous work done by von der Malsburg [18] as a model for self-organizing visual domains in the brain. Kohonen's SOM is composed of a set of n-dimensional vectors, arranged in a 2-dimensional array. Each vector is surrounded by other 6 (hexagonal) (see figure 2) or 8 (rectangular arrangement) vectors (see figure 2). A size n neighborhood of a vector is defined as the set of other SOM vectors whose index differs in less than a number n.
Kohonen's SOM, as many other heuristic methods, must be trained on the data it is going to model. Training proceeds as follow: 1. A new vector from the training set (the set of data we want to be modeled) is chosen randomly.
2. The closest vector, which will be called the winner, in the SOM is computed.
3. All vectors in the neighborhood of the winner are updated so that they become closer to the input vector by a factor α.
4. Neighborhood size and α are updated.
5. After a predetermined number of iterations, stop.
The self-organization in the SOMs emerges because different neighborhoods, not the whole map, are updated every time a new vector is presented; and the learning proceeding in an unsupervised way. Other than that, SOM is similar to any other clustering algorithm such as k-means [19], but, in this case, clusters are also arranged geographically. That is why it is said to perform a topographical mapping.
Main applications of the self-organizing map are: • Visualization: projection from a high-dimensional space to a twodimensional map highlights hidden relationships between data set members [20].
• Clustering: unlike other algorithms such as k-means, each cluster will be represented by several vectors.
• Interpolation or function modeling: it is not specially suited for this purpose, but if each vector v has an assigned value f (v), these values can be projected on the map, and unknown values deduced from it. This is specially useful if f (v) is actually a vector, or if there might be missing information from the input set [21].
• Classification: if the original data set is sorted in several classes, each map vector can be calibrated with a class, and then used for classification. Even if it is not as efficient for classification as other neural net algorithms, the fact that it can handle missing values make it quite useful in those cases. Calibration can be achieved in several possible ways (using for instance Bayesian criteria), or additional supervised training using algorithms such as Learning Vector Quantization ( [22]) to improve performance.
• Vector quantization: since the map is a model of a data set, its members can be used to represent that data set, each vector can be quantized by assigning it to its closest representative in the map.
There are many software packages that implement SOM, such as the SOM Toolbox for Matlab, or the som package for R, but the most popular is probably SOM PAK 6 , created originally by Kohonen's team themselves. This package includes command-line programs for training and labelling SOMs, and several tools for visualizing it: sammon, for performing a Sammon projection of data, and umat, for applying the cluster-discovery UMatrix [23] algorithm. We will use these programs in this paper.
So far, the Kohonen SOM has been used for such diverse applications as protein secondary structure prediction [24], information retrieval [25], rum age visualization [26], and algorithm visualization [27]. In this paper we will take advantage of its capabilities for the discovery of communities within Blogalia.

Mapping weblog communities
The working set of websites corresponds to weblogs hosted by Blogalia (http://www.blogalia.com/); it hosts around 200 weblogs, of which only 162 actually link or are linked by other weblogs; these are the ones used in our study. All stories, and just the stories (excluding information in page templates, or dynamic newsfeeds, for instance) published in Blogalia up to September 2003 were used for the study; there were around eleven thousand, which included around seventeen thousand links. Of those, roughly a quarter were links to other members of the community; this set of links will be used in this work to try to understand the Blogalia community structure. Each weblog is represented by the set of output links to other members of Blogalia. Of course, and due to this decision, other websites or weblogs are not considered, which means some sites closer to some blogs hosted in Blogalia than most of the inhabitants of that site might be ignored; however, in this paper, our intention was to discover communities within Blogalia, not all communities that included webs hosted by Blogalia.
In this work, each blog is represented by a vector whose components are the number of times it links to others in Blogalia; if a blog such as http://fernand0.blogalia.com/ links to http://atalaya.blogalia.com/ 7 6 The program is free and can be downloaded from http://www.cis.hut.fi/~hynde/lvq/. 7 Last and first author's weblogs, respectively   Table 1. The number of factions was preset to 3. In this case, the first faction corresponds roughly to the densely connected cluster shown in figure ??; the third, to the sparsely connected group of blogs, and the second, to all the blogs in between.
The same data was analyzed using Kohonen's self-organizing map. The software used was SOM PAK version 3.2, with the parameters shown in table 2. The algorithm was run 30 times with the same parameters, but different Table 2: . Parameters used to train Kohonen's self-organizing map in this paper. The algorithm was run 30 times, and the map with a minimal squares error was chosen. Values chosen for these parameters are more or less standard: following Kohonen's advice, map shape is rectangular, size as small as possible, and the length of training periods is around 10 and 100 times the size of the training set. From the links array, two different analysis were performed: by rows and columns. Rows represent the set of blogs every blog links to, and columns represent the set of blogs that links to a particular one. That means that SOM was applied to blogs represented by incoming and outgoing links. On each map, Umatrix analysis [23] was applied: this analysis shows how the set is clustered, so that natural clusters tend to stand out.
Different results have been obtained by training representing blogs by incoming or outgoing links. In the first case, shown in figure 5, a single block, containing the most usually linked-to blogs, stands out. This block roughly corresponds to the purple core shown in figure 3, and the first faction shown in table 1. The scenario that uses outgoing links is shown in figure 4 is a bit more discriminating, but, once again, distinguishes factions and cores as computed by other methods. But it would also be interesting to look at what makes blogs cluster together in a single node, or what they have in common. It would be cumbersome to look at each and every node, but, if we look at a couple of them (for instance, the Southwest corner of figure 4, we obtain the plot shown in figure 6: most of them have a peak of links to pawley; for instance, elda has a single link, and it corresponds to that blog; pawley has also many links to itself, and so on. There are also some other coincidences: a few links to omar, for instance.
A similar scenario is seen at the remaining nodes: they have many links to a blog or set of blogs, which makes the euclidean distance among them relatively small. That means that the blogs mapped to a single node roughly correspond to bipartite cliques [10], that is, set of nodes whose link pattern is To infer communities from this map, a first approach would then be to assign a community to each node, which would yield several dozens of communities out of the original hundreds of websites. This is not satisfactory,  Figure 5: Relative link strength for blogs placed in a single node, close to the SE corner, in the incoming links map. Sharp peaks, corresponding to a high percentage of links to a particular site, are observed rvr, hazte-escuchar and verbascum. This node includes also several or the first blogs that were created within Blogalia. Figure 6: UMatrix map obtained from the SOM trained using rows as input, that is, outgoing links. Clusters correspond to clear zones separated by dark hexagons. A community has been identified and outlined with a red line. however, for two reasons: first, nodes which are closer in the Kohonen map might also belong to the same community, and second, some of the blogs that are mapped to a single node do not actually belong to any community: the upper left corner, for instance, in figure 4 includes all weblogs that do not link to any other.
Consequently, we will have to take, a second approach, based on the usual clustering techniques applied to Kohonen maps postproccessed with the UMatrix algorithm: clusters are "white" zones surrounded by "black" boundaries; white zones represent nodes that are close to each other, while black nodes are far apart from those around it. In this case, a single community can be appreciated, composed by those nodes that start roughly with the third row and third column, and end by the next-to-last row (sixth row) and sixth column. This group of blogs is outlined in figure 6.
From this figure, we can gather, in an approach advocated by [28], that there would be a single cluster, and then smaller cluster composed by one or, at most, two (the biggest could be one composed by 4 nodes, right above the outlined cluster). Since this can be only identified by visual inspection, a new definition of community cannot be deduced, specially in this case when there is not a clear-cut division in two or more clusters. So we will introduce a new definition of community as the set of network nodes that fall on the same node of a self-organized map. This definition is functional, and, besides, allows assignment of new nodes just by taking into account its links to the members of the set under study. An additional advantage is that navigation from a community to another is possible, just by moving from a node to its neighbors on the Kohonen map. Besides, a single representative for each community can be extracted from each node on the network.
There is indeed some congruence with communities defined this way and other concepts. In fact, we can represent factions on the Kohonen map, in the following way: since there are three of them, a primary color (red, green, blue), will be assigned to each of them; from this, each SOM node will be assigned an RGB color from the percentage of blogs mapped to that node belonging to each faction. If blogs belonging to just one faction are mapped to a node, it will have a primary color; if blogs belonging to two different factions in equal proportions are mapped to a node, the color will be 50%/50%, for instance, half green, half red. Results of applying this procedure to the maps are shown in figure 7.
This graph shows that faction #1 as computed by UCINET is more or less coherent, and maps in that faction are close to each other, occupying the majority of the map area. Faction #1, likewise, forms the core of this network, being composed mainly by the strongly connected component of the network; in other words, the strongly connected component of the network occupies the biggest area in the self-organizing map.
More information can be extracted from the self-organizing map. Why is this layout taken? Why are some blogs in the center, while others occupy the periphery or corners of the map?
To answer this, we have plotted average closeness for each node in figure  8. Apparently, there are some closeness peaks toward the center of the map, sloping down to the corners, which have a low average closeness. This is probably the feature that determines layout, although other measures such as betweenness centrality or other centrality measures, would have to be investigated.
There is an additional advantage in using Kohonen's self-organizing map: besides being able to distinguish among different groups, we can navigate using them. Since we know that blogs mapped to a single node are close to  Gray level corresponds to the average closeness of blogs falling on a particular node; the whiter, the higher the average closeness is. The node with highest average closeness is the one with eledhwen and others. Once again, nodes with an asterisk do not have any corresponding blog. each other, and are also close to the blogs mapped to the nodes surrounding them, we could create a path from one blog to another, or use it as a recommendation for users or writers of a single blog. Since it works as a mathematical map, another blog, not belonging to this community, can also be mapped to it just by taking into account links to the set of blogs already mapped (or links from them).

Conclusion
Web content creation has undergone lately, under the influx of easy contentmanagement programs such as weblogs, an extraordinary expansion, which, so far, shows no sign of abating. Interest groups are created spontaneously among web users, and it is enlightening to study and identify these groups from the sociological, economical and technological point of view. Since webcommunity formation is generally spontaneous, without an explicit register or inscription by those that integrate them, and, besides, a particular website might belong to several communities, one of the first problems posed by its study is its identification and representation.
In this paper, we give more details on using a technique well known in the pattern recognition and data mining fields: Kohonen's self-organizing maps; our approach was originally presented in [16]. As has been shown in this paper, communities identified by analyzing self-organizing maps using UMatrix are on a par with those identified using other techniques, such as faction analysis or core extraction, with the additional advantage that community navigation can be achieved by using the map: blogs on the same node, or adjacent nodes, belong (in a fuzzy sense) to the same community. The self-organizing map, besides highlighting the different communities and groups present on the sample, make an useful visual representation.
The authors of this work intend to continue along one of the following lines: • Using self-organizing maps to visualize evolution of a set of blogs, and the community formation that goes along with it, by mapping different stages in its life.
• Using other algorithms, such as a fuzzy version of Kohonen's selforganizing map [29].
• Applying different representations for each blog, using blog content, instead of blog links: for instance, TFIDF (term frequency/inverse document frequency) or latent semantic analysis.
• Analysis of nodes with no mapped blog. Do they correspond to network structural gaps? Can they be used to create new blogs that bridge gaps?
• Analysis of nodes with mapped blogs. What do they represent?
• Mapping of complex network measures on the Kohonen map. Can it be used to predict any of them, or to offer a fast estimate?