Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
WordNet::Similarity::jUser)Contributed Perl DocumenWordNet::Similarity::jcn(3)

       WordNet::Similarity::jcn	- Perl module for computing semantic
       relatedness of word senses according to the method described by Jiang
       and Conrath (1997).

	 use WordNet::Similarity::jcn;

	 use WordNet::QueryData;

	 my $wn	= WordNet::QueryData->new();

	 my $rel = WordNet::Similarity::jcn->new($wn);

	 my $value = $rel->getRelatedness("car#n#1", "bus#n#2");

	 ($error, $errorString)	= $rel->getError();

	 die "$errorString\n" if($error);

	 print "car (sense 1) <-> bus (sense 2)	= $value\n";

       This module computes the	semantic relatedness of	word senses according
       to the method described by Jiang	and Conrath (1997). This measure is
       based on	a combination of using edge counts in the WordNet 'is-a'
       hierarchy and using the information content values of the WordNet
       concepts, as described in the paper by Jiang and	Conrath. Their
       measure,	however, computes values that indicate the semantic distance
       between words (as opposed to their semantic relatedness). In this
       implementation of the measure we	invert the value so as to obtain a
       measure of semantic relatedness.	Other issues that arise	due to this
       inversion (such as handling of zero values in the denominator) have
       been taken care of as special cases.

       $jcn->getRelatedness ($synset1, $synset2)
	   Computes the	relatedness of two word	senses using an	information
	   content scheme.  See	the discussion section below for detailed
	   information on how the jcn measure calculates relatedness.

	   Parameters: two word	senses in "word#pos#sense" format.

	   Returns: Unless a problem occurs, the return	value is the
	   relatedness score.  If no path exists between the two word senses,
	   then	a large	negative number	is returned.  If an error occures,
	   then	the error level	is set to non-zero and an error	string is
	   created (see	the description	of getError()).	 Note: the error level
	   will	also be	set to 1 and an	an error string	will be	created	if no
	   path	exists between the words.

       The relatedness value returned by the jcn measure is equal to
       1A /A jcn_distance, where jcn_distance is equal to
       IC(synset1)A +A IC(synset2)A -A 2A *A IC(lcs).  The original metric
       proposed	by Jiang and Conrath was this distance measure.	 By taking the
       multiplicative inverse of it, we	have converted it to a measure of
       similarity, but by so doing, we have shifted the	distribution of

       For example, if we have the following pairs of synsets with the given
       jcn distances:

	 synset1 synset2: 3
	 synset3 synset4: 4
	 synset5 synset6: 5

       We observe that the difference in the score for synset1-synset2 and
       synset3-synset4 is the same as for synset3-synset4 and synset5-synset6.
       When we take the	multiplicative inverse of them,	we get:

	 synset1 synset2: .333
	 synset3 synset4: .25
	 synset5 synset6: .2

       Now the difference between the scores for synset3-synset4 is less than
       the difference for synset1-synset2 and synset3-synset4.	This can have
       negative	consequences when computing correlation	coefficients.  It
       might be	useful to compute relatedness as
       max_distanceA -A	jcn_distance, where max_distance is the	maximum
       possible	jcn distance between any two synsets.  The original jcn
       distance	can easily be determined by taking the inverse of the value
       returned: 1/scoreA =A 1/1/jcn_distanceA =A jcn_distance.

       There are two special cases that	need to	be handled carefully when
       computing relatedness; both of these involve the	case when jcn_distance
       is zero.

       In the first case, we have
       ic(synset1)A =A ic(synset2)A =A ic(lcs)A	=A 0.  In an ideal world, this
       would only happen when all three	concepts, viz.	synset1, synset2, and
       lcs, are	the root node.	However, when a	synset has a frequency count
       of zero,	we use the value 0 for the information content.	 In this first
       case, we	return 0 due to	lack of	data.

       In the second case, we have
       ic(synset1)A +A ic(synset2)A =A 2A *A ic(lics).	This is	almost always
       found when synset1A =A synset2A =A lcs (i.e., the two input synsets are
       the same).  Intuitively this is the case	of maximum relatedness,	which
       would be	infinity, but it is impossible to return infinity.  Insteady
       we find the smallest possible distance greater than zero	and return the
       multiplicative inverse of that distance.

       The semantic relatedness	modules	in this	distribution are built as
       classes that define the following methods:

       See the WordNet::Similarity(3) documentation for	details	of these

       Typical Usage Examples

       To create an object of the jcn measure, we would	have the following
       lines of	code in	the Perl program.

	  use WordNet::Similarity::jcn;
	  $measure = WordNet::Similarity::jcn->new($wn,	'/home/sid/jcn.conf');

       The reference of	the initialized	object is stored in the	scalar
       variable	'$measure'. '$wn' contains a WordNet::QueryData	object that
       should have been	created	earlier	in the program.	The second parameter
       to the 'new' method is the path of the configuration file for the jcn
       measure.	If the 'new' method is unable to create	the object, '$measure'
       would be	undefined. This, as well as any	other error/warning may	be

	  die "Unable to create	object.\n" if(!defined $measure);
	  ($err, $errString) = $measure->getError();
	  die $errString."\n" if($err);

       To find the semantic relatedness	of the first sense of the noun 'car'
       and the second sense of the noun	'bus' using the	measure, we would
       write the following piece of code:

	  $relatedness = $measure->getRelatedness('car#n#1', 'bus#n#2');

       To get traces for the above computation:

	  print	$measure->getTraceString();

       However,	traces must be enabled using configuration files. By default
       traces are turned off.

       The behavior of the measures of semantic	relatedness can	be controlled
       by using	configuration files. These configuration files specify how
       certain parameters are initialized within the object. A configuration
       file may	be specified as	a parameter during the creation	of an object
       using the new method. The configuration files must follow a fixed

       Every configuration file	starts with the	name of	the module ON THE
       FIRST LINE of the file. For example, a configuration file for the jcn
       module will have	on the first line 'WordNet::Similarity::jcn'. This is
       followed	by the various parameters, each	on a new line and having the
       form 'name::value'. The 'value' of a parameter is optional (in case of
       boolean parameters). In case 'value' is omitted,	we would have just
       'name::'	on that	line. Comments are supported in	the configuration
       file. Anything following	a '#' is ignored till the end of the line.

       The module parses the configuration file	and recognizes the following

	   The value of	this parameter specifies the level of tracing that
	   should be employed for generating the traces. This value is an
	   integer equal to 0, 1, or 2.	If the value is	omitted, then the
	   default value, 0, is	used. A	value of 0 switches tracing off. A
	   value of 1 or 2 switches tracing on.	 A trace level of 1 means the
	   synsets are represented as word#pos#sense strings, while for	level
	   2, the synsets are represented as word#pos#offset strings.

	   The value of	this parameter specifies whether or not	caching	of the
	   relatedness values should be	performed.  This value is an integer
	   equal to  0 or 1.  If the value is omitted, then the	default	value,
	   1, is used. A value of 0 switches caching 'off', and	a value	of 1
	   switches caching 'on'.

	   The value of	this parameter indicates the size of the cache,	used
	   for storing the computed relatedness	value. The specified value
	   must	be a non-negative integer.  If the value is omitted, then the
	   default value, 5,000, is used. Setting maxCacheSize to zero has the
	   same	effect as setting cache	to zero, but setting cache to zero is
	   likely to be	more efficient.	 Caching and tracing at	the same time
	   can result in excessive memory usage	because	the trace strings are
	   also	cached.	 If you	intend to perform a large number of
	   relatedness queries,	then you might want to turn tracing off.

	   The value of	this parameter indicates whether or not	a unique root
	   node	should be used.	In WordNet, there is no	unique root node for
	   the noun and	verb taxonomies. If this parameter is set to 1 (or if
	   the value is	omitted), then certain measures	(wup, path, lch, res,
	   lin,	and jcn) will "fake" a unique root node. If the	value is set
	   to 0, then no unique	root node will be used.	 If the	value is
	   omitted, then the default value, 1, is used.

	   The value for this parameter	should be a string that	specifies the
	   path	of an information content file containing the frequency	of
	   occurrence of every WordNet concept in a large corpus. A number of
	   utility programs are	included in this distribution that can be used
	   to generate an infocontent file (see	utils.pod).  If	no path	is
	   specified, then the default infocontent file	is used, which was
	   generated from SemCor using the sense-tags.

       perl(1),	WordNet::Similarity(3),	WordNet::QueryData(3)

	 Ted Pedersen, University of Minnesota Duluth
	 tpederse at

	 Siddharth Patwardhan, University of Utah
	 sidd at

	 Jason Michelizzi, University of Minnesota Duluth
	 mich0212 at

       Copyright (c) 2005, Ted Pedersen, Siddharth Patwardhan and Jason

       This program is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License as published by the
       Free Software Foundation; either	version	2 of the License, or (at your
       option) any later version.

       This program is distributed in the hope that it will be useful, but
       WITHOUT ANY WARRANTY; without even the implied warranty of
       General Public License for more details.

       You should have received	a copy of the GNU General Public License along
       with this program; if not, write	to

	   The Free Software Foundation, Inc.,
	   59 Temple Place - Suite 330,
	   Boston, MA  02111-1307, USA.

       Note: a copy of the GNU General Public License is available on the web
       at <>	and is included	in this
       distribution as GPL.txt.

perl v5.24.1			  2008-03-27	   WordNet::Similarity::jcn(3)


Want to link to this manual page? Use this URL:

home | help