<p>Tag-based web sites often suffer from the delicacy of language such as synonyms, homonyms, etc. For programmers looking for information, say on Stack Overflow, concrete examples are:</p>

<ul>
<li>Subversion or SVN (or svn, with case-sensitive tags)</li>
<li>.NET or Mono</li>
<li>[Will add more]</li>
</ul>

<p>The problem is that we <em>do</em> want to preserve our delicacy of language and make the machine deal with it as good as possible.</p>

<p>A site like del.icio.us sees its tag base grow a lot, thus probably hindering usage or search. Searching for SVN-related entries will probably list a majority of entries with both subversion and svn tags, but I can think of three issues:</p>

<ol>
<li>A search is incomplete as many entries may not have both tags (which are 'synonyms').</li>
<li>A search is less useful as Q/A often lead to more Qs! Notably for newbies on a given topic.</li>
<li>Tagging a question (note: or an answer separately, sounds useful) becomes philosophical: 'Did I Tag the Right Way?'</li>
</ol>

<p>One way to address these issues is to create semantic links between tags, so that subversion and SVN are automatically bound by the system, not by poor users.</p>

<p><em>Is it an approach that sounds good/feasible/attractive/useful? How to implement it efficiently?</em></p>

[{'answer_id': 21427, 'author': 'Espo', 'author_id': 2257, 'author_profile': 'https://Stackoverflow.com/users/2257', 'pm_score': 1, 'selected': False, 'text': '<p>The way the software on blogspot.com is set up, is that there is an ajax-autocomplete-thingie on the box where you write the name of the tags. This searches all your previous posts for tags that start with the same letters. At least that way you catch different casings and spellings (but not synonyms).</p>\n'}, {'answer_id': 21429, 'author': 'Tilendor', 'author_id': 1470, 'author_profile': 'https://Stackoverflow.com/users/1470', 'pm_score': 1, 'selected': False, 'text': '<p>I completely agree.  The mass of tags that have currently.  I don\'t participate in other tagged based sites.  However having a hierarchy of tags would be very helpful, instead of <a href="/questions/tagged/ruby" class="post-tag" title="show questions tagged &#39;ruby&#39;" rel="tag">ruby</a> <a href="/questions/tagged/rails" class="post-tag" title="show questions tagged &#39;rails&#39;" rel="tag">rails</a> <a href="/questions/tagged/ruby-on-rails" class="post-tag" title="show questions tagged &#39;ruby-on-rails&#39;" rel="tag">ruby-on-rails</a> <a href="/questions/tagged/rubyonrails" class="post-tag" title="show questions tagged &#39;rubyonrails&#39;" rel="tag">rubyonrails</a> etc...</p>\n'}, {'answer_id': 21436, 'author': 'Steve', 'author_id': 2019, 'author_profile': 'https://Stackoverflow.com/users/2019', 'pm_score': 1, 'selected': False, 'text': '<p>How would the system know which tags to semantically link? Would it keep an ever-growing map of tags? I can\'t see that working. What if someone typed sbversion instead? How would that get linked?</p>\n\n<p>I think that asking the user when they submit tags could work. For example, "You\'ve entered the following tags: sbversion, pascal and bindings. Did you mean, "Subversion", "Pascal" and "Bindings"?</p>\n\n<p>Obviously the system would have to have a fairly smart matching system for that to work. Doing it this way would be extra input for the user (which\'d probably annoy them) but the human input would, if done correctly, make for less duplicate tags.</p>\n\n<p>In fact, having said all that, the system could use the results of the user\'s input as a basis for automatic tag matching. From the previous example, someone creates a tag of "sbversion" and when prompted changes it to "Subversion" - the system could learn that and do it automatically next time.</p>\n'}, {'answer_id': 21505, 'author': 'Nick', 'author_id': 1490, 'author_profile': 'https://Stackoverflow.com/users/1490', 'pm_score': 0, 'selected': False, 'text': '<p>Tags are basically our admission that search algorithms aren\'t up to snuff.  If  we can get a  computer to be smart enough to identify that things tagged "Subversion" have similar content to things tagged "svn", presumably we can parse the contents, so why not skip tags altogether, and match a search term directly to the content (i.e., autotagging, which is basically mapping keywords to results)?!</p>\n'}, {'answer_id': 22829, 'author': 'Eric Platon', 'author_id': 2050, 'author_profile': 'https://Stackoverflow.com/users/2050', 'pm_score': 0, 'selected': False, 'text': "<p>The problem is to make the search engine use the fact that 'subversion' and 'svn' are <em>very similar</em> to the point that they mean the same 'thing'.</p>\n\n<p>It might be attractive to compute a simple similarity between tags based on frequency: 'subversion' and 'svn' appear very often together, so requesting 'svn' would return SVN-related questions, but also the rare questions only tagged 'subversion' (and vice versa). However, 'java' and 'c#' also appear often together, but for very different reasons (they are not synonyms). So similarity based on frequency is out.</p>\n\n<p>An answer to this problem might be a mix of mechanisms, as the ones suggested in this Q/A thread:</p>\n\n<ul>\n<li>Filtering out typos by suggesting tags when the user inputs them.</li>\n<li>Maintaining a user-generated map of synonyms. This map may not be that big if it just targets synonyms.</li>\n<li>Allowing multi-tag search, such that the user can put 'subversion svn' or 'subversion &amp;&amp; svn' (well, from programmers to programmers) in the search box and get both. This would be quite practical as many users may actually try such approach when they do not know which term is the most meaningful.</li>\n</ul>\n\n<p>@Nick: Agreed. The question is not meant to argue against tags. Tags have great potential, but users will face a growing issue if one cannot search 'across' tags.</p>\n\n<p>@Steve: Maintaining an ever-growing <em>map</em> of tags is definitely not practical. As SO is accumulating an ever-growing <em>bag</em> of tags, how could we shade some light on this bag to make search of Q/A tags even more useful, in a convenient way?</p>\n\n<p>@Espo: 'Ajax-powered' tag suggestions based on existing tags is apparently available on SO when creating a question. This is by the way very helpful to choose tags and appropriate spelling (avoiding the 'subversion' vs. 'sbversion' issue from Steve).</p>\n"}, {'answer_id': 88884, 'author': 'Josh Millard', 'author_id': 13600, 'author_profile': 'https://Stackoverflow.com/users/13600', 'pm_score': 2, 'selected': False, 'text': "<p>Recognizing synonyms and semantic connections is something that <i>humans are good at</i>; a solution to organizing an open-ended taxonomy like what SO is featuring would probably  be well served by finding a way to leave the matching to humans.</p>\n\n<p>One general approach:  someone (or some team) reviews <i>new</i> tags on a daily basis.  New synonyms are added to synonym groups.  Searches hit synonym groups (or, more nuanced, hit either literal matches or synonym group matches according to user preference).</p>\n\n<p>This requires support for synonym groups on the back end (work for the dev team).  It requires a tag wrangler or ten (work for the principals or for trusted users).  It <i>doesn't</i> require constant scaling, though&mdash;the rate at which the total tag pool grows will likely (after the initial Here Comes Everybody bump of the open beta) will in all likelihood <i>decrease</i> over time, as any organic lexicon's growth-rate does.</p>\n\n<p>Synonymy strikes me as the go-to issue.  Hierarchical mapping is an ambitious and more complicated issue; it may be worth it or it may not be, but given the relative complexity of defining the hierarchy it'd probably be better left as a Phase 2 to any potential synonym project's Phase 1.</p>\n"}, {'answer_id': 287025, 'author': 'warren', 'author_id': 4418, 'author_profile': 'https://Stackoverflow.com/users/4418', 'pm_score': 1, 'selected': False, 'text': '<p>Part of the issue you\'re looking at is that English is rife with synonyms - are the following different: build-management, subversion, cvs, source-control?</p>\n\n<p>Maybe, maybe not. Having a system, like the one [now] in use on SO that brings up the tag you probably meant is extremely helpful. But it doesn\'t stop people from bulling-through the tagging process.</p>\n\n<p>Maybe you could refuse to accept "new" tags without a user-interaction? Before you let \'sbversion\' go in, force a spelling check?</p>\n\n<p>This is definitely an interesting problem. I asked an open question similar to this on my <a href="http://antipaucity.com/2007/06/14/i-know-why-search-is-broken/" rel="nofollow noreferrer">blog</a> last year. A couple of the responses were quite insightful.</p>\n'}]
['https://Stackoverflow.com/questions/21422', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/2050/']