wordnet 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.gems +5 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.simplecov +8 -0
  8. data/Gemfile +2 -0
  9. data/History.rdoc +7 -0
  10. data/Manifest.txt +11 -12
  11. data/README.md +1 -0
  12. data/Rakefile +44 -25
  13. data/certs/ged.pem +26 -0
  14. data/examples/gcs.rb +24 -34
  15. data/examples/hypernym_tree.rb +34 -0
  16. data/lib/wordnet.rb +4 -4
  17. data/lib/wordnet/constants.rb +2 -1
  18. data/lib/wordnet/lexicallink.rb +2 -1
  19. data/lib/wordnet/lexicon.rb +6 -5
  20. data/lib/wordnet/model.rb +2 -1
  21. data/lib/wordnet/morph.rb +2 -1
  22. data/lib/wordnet/semanticlink.rb +2 -1
  23. data/lib/wordnet/sense.rb +48 -4
  24. data/lib/wordnet/sumoterm.rb +3 -2
  25. data/lib/wordnet/synset.rb +12 -10
  26. data/lib/wordnet/word.rb +21 -20
  27. data/spec/helpers.rb +43 -0
  28. data/spec/wordnet/lexicon_spec.rb +44 -61
  29. data/spec/wordnet/model_spec.rb +5 -37
  30. data/spec/wordnet/semanticlink_spec.rb +6 -26
  31. data/spec/wordnet/sense_spec.rb +80 -0
  32. data/spec/wordnet/synset_spec.rb +33 -47
  33. data/spec/wordnet/word_spec.rb +22 -42
  34. data/spec/wordnet_spec.rb +4 -23
  35. data/wordnet.gemspec +63 -0
  36. metadata +110 -113
  37. metadata.gz.sig +0 -0
  38. data/.gemtest +0 -0
  39. data/examples/add-laced-boots.rb +0 -35
  40. data/examples/clothes-with-collars.rb +0 -42
  41. data/examples/clothesWithTongues.rb +0 -28
  42. data/examples/distance.rb +0 -37
  43. data/examples/domainTree.rb +0 -27
  44. data/examples/holonymTree.rb +0 -27
  45. data/examples/hypernymTree.rb +0 -28
  46. data/examples/hyponymTree.rb +0 -28
  47. data/examples/memberTree.rb +0 -27
  48. data/examples/meronymTree.rb +0 -29
  49. data/spec/lib/helpers.rb +0 -80
  50. data/spec/linguawordnet.tests.rb +0 -38
@@ -1,4 +1,5 @@
1
- #!/usr/bin/ruby
1
+ # -*- ruby -*-
2
+ #encoding: utf-8
2
3
 
3
4
  require 'wordnet' unless defined?( WordNet )
4
5
  require 'wordnet/model'
@@ -9,9 +10,16 @@ class WordNet::Sense < WordNet::Model( :senses )
9
10
 
10
11
  set_primary_key :senseid
11
12
 
13
+ ##
14
+ # The Synset this is a Sense for
12
15
  many_to_one :synset, :key => :synsetid
16
+
17
+ ##
18
+ # The Word this is a Sense for
13
19
  many_to_one :word, :key => :wordid
14
20
 
21
+ ##
22
+ # The lexical links between this sense and its related Synsets.
15
23
  # Sense -> [ LexicalLinks ] -> [ Synsets ]
16
24
  one_to_many :lexlinks,
17
25
  :class => :"WordNet::LexicalLink",
@@ -21,35 +29,71 @@ class WordNet::Sense < WordNet::Model( :senses )
21
29
 
22
30
  ### Generate a method that will return Synsets related by the given lexical pointer
23
31
  ### +type+.
24
- def self::lexical_link( type, typekey=nil )
32
+ def self::lexical_link( type, typekey=nil ) # :nodoc:
25
33
  typekey ||= type.to_s.chomp( 's' ).to_sym
26
34
 
27
35
  self.log.debug "Generating a %p method for %p links" % [ type, typekey ]
28
36
 
29
37
  method_body = Proc.new do
30
- linkinfo = WordNet::Synset.linktype_names[ typekey ] or
38
+ linkinfo = WordNet::Synset.linktypes[ typekey ] or
31
39
  raise ScriptError, "no such link type %p" % [ typekey ]
32
40
  ssids = self.lexlinks_dataset.filter( :linkid => linkinfo[:id] ).select( :synset2id )
33
41
  self.class.filter( :synsetid => ssids )
34
42
  end
35
- self.log.debug " method body is: %p" % [ method_body ]
36
43
 
37
44
  define_method( type, &method_body )
38
45
  end
39
46
 
40
47
 
48
+ ##
49
+ # Return the synsets that are lexically linked to this sense via an "also see" link.
41
50
  lexical_link :also_see, :also
51
+
52
+ ##
53
+ # Return the synsets that are lexically linked to this sense via an "antonym" link.
42
54
  lexical_link :antonym
55
+
56
+ ##
57
+ # Return the synsets that are lexically linked to this sense via a "derivation" link.
43
58
  lexical_link :derivation
59
+
60
+ ##
61
+ # Return the synsets that are lexically linked to this sense via a "domain category" link.
44
62
  lexical_link :domain_categories, :domain_category
63
+
64
+ ##
65
+ # Return the synsets that are lexically linked to this sense via a "domain member
66
+ # category" link.
45
67
  lexical_link :domain_member_categories, :domain_member_category
68
+
69
+ ##
70
+ # Return the synsets that are lexically linked to this sense via a "domain member region" link.
46
71
  lexical_link :domain_member_region
72
+
73
+ ##
74
+ # Return the synsets that are lexically linked to this sense via a "domain member usage" link.
47
75
  lexical_link :domain_member_usage
76
+
77
+ ##
78
+ # Return the synsets that are lexically linked to this sense via a "domain region" link.
48
79
  lexical_link :domain_region
80
+
81
+ ##
82
+ # Return the synsets that are lexically linked to this sense via a "domain usage" link.
49
83
  lexical_link :domain_usage
84
+
85
+ ##
86
+ # Return the synsets that are lexically linked to this sense via a "participle" link.
50
87
  lexical_link :participle
88
+
89
+ ##
90
+ # Return the synsets that are lexically linked to this sense via a "pertainym" link.
51
91
  lexical_link :pertainym
92
+
93
+ ##
94
+ # Return the synsets that are lexically linked to this sense via a "verb group" link.
52
95
  lexical_link :verb_group
53
96
 
97
+
54
98
  end # class WordNet::Sense
55
99
 
@@ -1,11 +1,12 @@
1
- #!/usr/bin/ruby
1
+ # -*- ruby -*-
2
+ #encoding: utf-8
2
3
 
3
4
  require 'wordnet' unless defined?( WordNet )
4
5
  require 'wordnet/model'
5
6
  require 'wordnet/constants'
6
7
 
7
8
 
8
- # Experimental support for the WordNet mapping for the {Suggested Upper Merged
9
+ # Experimental support for the WordNet mapping for the {Suggested Upper Merged
9
10
  # Ontology}[http://www.ontologyportal.org/] (SUMO).
10
11
  # This is still a work in progress, and isn't supported by all of the WordNet-SQL
11
12
  # databases.
@@ -1,4 +1,5 @@
1
- #!/usr/bin/ruby
1
+ # -*- ruby -*-
2
+ #encoding: utf-8
2
3
 
3
4
  require 'wordnet' unless defined?( WordNet )
4
5
  require 'wordnet/constants'
@@ -45,7 +46,7 @@ require 'wordnet/model'
45
46
  # # => [#<WordNet::Synset:0x7ffbf25c76c8 {115180528} 'point, point in
46
47
  # # time' (noun): [noun.time] an instant of time>]
47
48
  #
48
- # The synset's *hypernyms*, on the other hand, are kind of like its
49
+ # The synset's *hyponyms*, on the other hand, are kind of like its
49
50
  # subclasses:
50
51
  #
51
52
  # ss.hyponyms
@@ -101,7 +102,7 @@ require 'wordnet/model'
101
102
  #
102
103
  # In order to make use of this API, you'll need to be familiar with
103
104
  # {Sequel}[http://sequel.rubyforge.org/], especially
104
- # {Datasets}[http://sequel.rubyforge.org/rdoc/files/doc/dataset_basics_rdoc.html] and
105
+ # {Datasets}[http://sequel.rubyforge.org/rdoc/files/doc/dataset_basics_rdoc.html] and
105
106
  # {Model Associations}[http://sequel.rubyforge.org/rdoc/files/doc/association_basics_rdoc.html].
106
107
  # Most of Ruby-WordNet's functionality is implemented in terms of one or both
107
108
  # of these.
@@ -176,7 +177,6 @@ class WordNet::Synset < WordNet::Model( :synsets )
176
177
  set_primary_key :synsetid
177
178
 
178
179
  ##
179
- # :singleton-method:
180
180
  # The WordNet::Words associated with the receiver
181
181
  many_to_many :words,
182
182
  :join_table => :senses,
@@ -185,7 +185,6 @@ class WordNet::Synset < WordNet::Model( :synsets )
185
185
 
186
186
 
187
187
  ##
188
- # :singleton-method:
189
188
  # The WordNet::Senses associated with the receiver
190
189
  one_to_many :senses,
191
190
  :key => :synsetid,
@@ -193,7 +192,6 @@ class WordNet::Synset < WordNet::Model( :synsets )
193
192
 
194
193
 
195
194
  ##
196
- # :singleton-method:
197
195
  # The WordNet::SemanticLinks indicating a relationship with other
198
196
  # WordNet::Synsets
199
197
  one_to_many :semlinks,
@@ -204,7 +202,6 @@ class WordNet::Synset < WordNet::Model( :synsets )
204
202
 
205
203
 
206
204
  ##
207
- # :singleton-method:
208
205
  # The WordNet::SemanticLinks pointing *to* this Synset
209
206
  many_to_one :semlinks_to,
210
207
  :class => :"WordNet::SemanticLink",
@@ -213,7 +210,6 @@ class WordNet::Synset < WordNet::Model( :synsets )
213
210
 
214
211
 
215
212
  ##
216
- # :singleton-method:
217
213
  # Terms from the Suggested Upper Merged Ontology
218
214
  many_to_many :sumo_terms,
219
215
  :join_table => :sumomaps,
@@ -551,7 +547,7 @@ class WordNet::Synset < WordNet::Model( :synsets )
551
547
  # tree, you can make a traversal enumerator for it:
552
548
  #
553
549
  # ss = $lex[:fencing]
554
- # # => #<WordNet::Synset:0x7fb582c24400 {101171644} 'fencing' (noun): [noun.act] the art or
550
+ # # => #<WordNet::Synset:0x7fb582c24400 {101171644} 'fencing' (noun): [noun.act] the art or
555
551
  # sport of fighting with swords (especially the use of foils or epees or sabres to score
556
552
  # points under a set of rules)>
557
553
  #
@@ -671,13 +667,19 @@ class WordNet::Synset < WordNet::Model( :synsets )
671
667
  # :section:
672
668
  #
673
669
 
670
+ ### Return the Synset's Words as an Array of Strings.
671
+ def wordlist
672
+ return self.words.map( &:to_s )
673
+ end
674
+
675
+
674
676
  ### Return a human-readable representation of the objects, suitable for debugging.
675
677
  def inspect
676
678
  return "#<%p:%0#x {%d} '%s' (%s): [%s] %s>" % [
677
679
  self.class,
678
680
  self.object_id * 2,
679
681
  self.synsetid,
680
- self.words.map(&:to_s).join(', '),
682
+ self.wordlist.join(', '),
681
683
  self.part_of_speech,
682
684
  self.lexical_domain,
683
685
  self.definition,
@@ -1,4 +1,5 @@
1
- #!/usr/bin/ruby
1
+ # -*- ruby -*-
2
+ #encoding: utf-8
2
3
 
3
4
  require 'wordnet' unless defined?( WordNet )
4
5
  require 'wordnet/model'
@@ -17,43 +18,43 @@ class WordNet::Word < WordNet::Model( :words )
17
18
  # "unq_words_lemma" UNIQUE, btree (lemma)
18
19
  # Referenced by:
19
20
  # TABLE "adjpositions" CONSTRAINT "fk_adjpositions_wordid"
20
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
21
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
21
22
  # TABLE "bncconvtasks" CONSTRAINT "fk_bncconvtasks_wordid"
22
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
23
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
23
24
  # TABLE "bncimaginfs" CONSTRAINT "fk_bncimaginfs_wordid"
24
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
25
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
25
26
  # TABLE "bncs" CONSTRAINT "fk_bncs_wordid"
26
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
27
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
27
28
  # TABLE "bncspwrs" CONSTRAINT "fk_bncspwrs_wordid"
28
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
29
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
29
30
  # TABLE "casedwords" CONSTRAINT "fk_casedwords_wordid"
30
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
31
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
31
32
  # TABLE "lexlinks" CONSTRAINT "fk_lexlinks_word1id"
32
- # FOREIGN KEY (word1id) REFERENCES words(wordid)
33
+ # FOREIGN KEY (word1id) REFERENCES words(wordid)
33
34
  # TABLE "lexlinks" CONSTRAINT "fk_lexlinks_word2id"
34
- # FOREIGN KEY (word2id) REFERENCES words(wordid)
35
+ # FOREIGN KEY (word2id) REFERENCES words(wordid)
35
36
  # TABLE "morphmaps" CONSTRAINT "fk_morphmaps_wordid"
36
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
37
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
37
38
  # TABLE "sensemaps2021" CONSTRAINT "fk_sensemaps2021_wordid"
38
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
39
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
39
40
  # TABLE "sensemaps2130" CONSTRAINT "fk_sensemaps2130_wordid"
40
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
41
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
41
42
  # TABLE "senses20" CONSTRAINT "fk_senses20_wordid"
42
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
43
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
43
44
  # TABLE "senses21" CONSTRAINT "fk_senses21_wordid"
44
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
45
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
45
46
  # TABLE "senses" CONSTRAINT "fk_senses_wordid"
46
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
47
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
47
48
  # TABLE "vframemaps" CONSTRAINT "fk_vframemaps_wordid"
48
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
49
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
49
50
  # TABLE "vframesentencemaps" CONSTRAINT "fk_vframesentencemaps_wordid"
50
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
51
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
51
52
  # TABLE "vnclassmembers" CONSTRAINT "fk_vnclassmembers_wordid"
52
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
53
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
53
54
  # TABLE "vnframemaps" CONSTRAINT "fk_vnframemaps_wordid"
54
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
55
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
55
56
  # TABLE "vnrolemaps" CONSTRAINT "fk_vnrolemaps_wordid"
56
- # FOREIGN KEY (wordid) REFERENCES words(wordid)
57
+ # FOREIGN KEY (wordid) REFERENCES words(wordid)
57
58
 
58
59
 
59
60
  set_primary_key :wordid
@@ -0,0 +1,43 @@
1
+ # -*- ruby -*-
2
+ #encoding: utf-8
3
+ # coding: utf-8
4
+
5
+ # SimpleCov test coverage reporting; enable this using the :coverage rake task
6
+ require 'simplecov' if ENV['COVERAGE']
7
+
8
+ require 'rspec'
9
+ require 'loggability/spechelpers'
10
+ require 'wordnet'
11
+
12
+
13
+ ### RSpec helper functions.
14
+ module WordNet::SpecHelpers
15
+ end
16
+
17
+
18
+ ### Mock with Rspec
19
+ RSpec.configure do |config|
20
+ config.run_all_when_everything_filtered = true
21
+ config.filter_run :focus
22
+ config.order = 'random'
23
+ config.mock_with( :rspec ) do |mock|
24
+ mock.syntax = :expect
25
+ end
26
+
27
+ if Gem::Specification.find_all_by_name( 'pg' ).empty?
28
+ config.filter_run_excluding( :requires_pg )
29
+ end
30
+
31
+ begin
32
+ uri = WordNet::Lexicon.default_db_uri
33
+ WordNet.log.info "Database tests will use: #{uri}"
34
+ rescue WordNet::LexiconError
35
+ config.filter_run_excluding( :requires_database )
36
+ end
37
+
38
+ config.include( WordNet::SpecHelpers )
39
+ config.include( Loggability::SpecHelpers )
40
+ end
41
+
42
+ # vim: set nosta noet ts=4 sw=4:
43
+
@@ -1,20 +1,8 @@
1
- #!/usr/bin/env ruby
2
-
3
- BEGIN {
4
- require 'pathname'
5
- basedir = Pathname.new( __FILE__ ).dirname.parent.parent
6
-
7
- libdir = basedir + 'lib'
8
-
9
- $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
10
- $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
11
- }
1
+ #!/usr/bin/env rspec
2
+ require_relative '../helpers'
12
3
 
13
4
  require 'rspec'
14
- require 'sequel'
15
-
16
- require 'spec/lib/helpers'
17
- require 'wordnet'
5
+ require 'wordnet/lexicon'
18
6
 
19
7
 
20
8
  #####################################################################
@@ -24,53 +12,48 @@ require 'wordnet'
24
12
  describe WordNet::Lexicon do
25
13
 
26
14
  before( :all ) do
27
- setup_logging()
28
15
  @devdb = Pathname( 'wordnet-defaultdb/data/wordnet-defaultdb/wordnet30.sqlite' ).
29
16
  expand_path
30
17
  end
31
18
 
32
- after( :all ) do
33
- reset_logging()
34
- end
35
-
36
19
 
37
20
  context "the default_db_uri method" do
38
21
 
39
22
  it "uses the wordnet-defaultdb database gem (if available)" do
40
- Gem.should_receive( :datadir ).with( 'wordnet-defaultdb' ).at_least( :once ).
23
+ expect( Gem ).to receive( :datadir ).with( 'wordnet-defaultdb' ).at_least( :once ).
41
24
  and_return( '/tmp/foo' )
42
- FileTest.should_receive( :exist? ).with( '/tmp/foo/wordnet30.sqlite' ).
25
+ expect( FileTest ).to receive( :exist? ).with( '/tmp/foo/wordnet30.sqlite' ).
43
26
  and_return( true )
44
27
 
45
- WordNet::Lexicon.default_db_uri.should == "sqlite:/tmp/foo/wordnet30.sqlite"
28
+ expect( WordNet::Lexicon.default_db_uri ).to eq( "sqlite:/tmp/foo/wordnet30.sqlite" )
46
29
  end
47
30
 
48
31
  it "uses the development version of the wordnet-defaultdb database gem if it's " +
49
32
  "not installed" do
50
- Gem.should_receive( :datadir ).with( 'wordnet-defaultdb' ).
33
+ expect( Gem ).to receive( :datadir ).with( 'wordnet-defaultdb' ).
51
34
  and_return( nil )
52
- FileTest.should_receive( :exist? ).with( @devdb.to_s ).
35
+ expect( FileTest ).to receive( :exist? ).with( @devdb.to_s ).
53
36
  and_return( true )
54
37
 
55
- WordNet::Lexicon.default_db_uri.should == "sqlite:#{@devdb}"
38
+ expect( WordNet::Lexicon.default_db_uri ).to eq( "sqlite:#{@devdb}" )
56
39
  end
57
40
 
58
41
  it "returns nil if there is no default database" do
59
- Gem.should_receive( :datadir ).with( 'wordnet-defaultdb' ).
42
+ expect( Gem ).to receive( :datadir ).with( 'wordnet-defaultdb' ).
60
43
  and_return( nil )
61
- FileTest.should_receive( :exist? ).with( @devdb.to_s ).
44
+ expect( FileTest ).to receive( :exist? ).with( @devdb.to_s ).
62
45
  and_return( false )
63
46
 
64
- WordNet::Lexicon.default_db_uri.should be_nil()
47
+ expect( WordNet::Lexicon.default_db_uri ).to be_nil()
65
48
  end
66
49
 
67
50
  end
68
51
 
69
52
 
70
53
  it "raises an exception if created with no arguments and no defaultdb is available" do
71
- Gem.should_receive( :datadir ).with( 'wordnet-defaultdb' ).at_least( :once ).
54
+ expect( Gem ).to receive( :datadir ).with( 'wordnet-defaultdb' ).at_least( :once ).
72
55
  and_return( nil )
73
- FileTest.should_receive( :exist? ).with( @devdb.to_s ).
56
+ expect( FileTest ).to receive( :exist? ).with( @devdb.to_s ).
74
57
  and_return( false )
75
58
 
76
59
  expect {
@@ -87,36 +70,36 @@ describe WordNet::Lexicon do
87
70
 
88
71
  it "can look up a Synset by ID" do
89
72
  rval = lexicon[ 101219722 ]
90
- rval.should be_a( WordNet::Synset )
91
- rval.words.map( &:to_s ).should include( 'carrot' )
73
+ expect( rval ).to be_a( WordNet::Synset )
74
+ expect( rval.words.map( &:to_s ) ).to include( 'carrot' )
92
75
  end
93
76
 
94
77
  it "can look up a Word by ID" do
95
78
  rval = lexicon[ 21338 ]
96
- rval.should be_a( WordNet::Word )
97
- rval.lemma.should == 'carrot'
79
+ expect( rval ).to be_a( WordNet::Word )
80
+ expect( rval.lemma ).to eq( 'carrot' )
98
81
  end
99
82
 
100
83
  it "can look up the synset for a word and a sense" do
101
84
  ss = lexicon[ :boot, 3 ]
102
- ss.should be_a( WordNet::Synset )
103
- ss.definition.should == 'footwear that covers the whole foot and lower leg'
85
+ expect( ss ).to be_a( WordNet::Synset )
86
+ expect( ss.definition ).to eq( 'footwear that covers the whole foot and lower leg' )
104
87
  end
105
88
 
106
89
  it "can look up all synsets for a particular word" do
107
90
  sss = lexicon.lookup_synsets( :tree )
108
- sss.should have( 7 ).members
109
- sss.all? {|ss| ss.should be_a(WordNet::Synset) }
91
+ expect( sss.size ).to eq( 7 )
92
+ expect( sss ).to all( be_a(WordNet::Synset) )
110
93
  end
111
94
 
112
95
  it "can constrain fetched synsets to a certain range of results" do
113
96
  sss = lexicon.lookup_synsets( :tree, 1..4 )
114
- sss.should have( 4 ).members
97
+ expect( sss.size ).to eq( 4 )
115
98
  end
116
99
 
117
100
  it "can constrain fetched synsets to a certain (exclusive) range of results" do
118
101
  sss = lexicon.lookup_synsets( :tree, 1...4 )
119
- sss.should have( 3 ).members
102
+ expect( sss.size ).to eq( 3 )
120
103
  end
121
104
 
122
105
  end
@@ -131,55 +114,55 @@ describe WordNet::Lexicon do
131
114
 
132
115
  it "can look up a Synset by ID" do
133
116
  rval = lexicon[ 101219722 ]
134
- rval.should be_a( WordNet::Synset )
135
- rval.words.map( &:to_s ).should include( 'carrot' )
117
+ expect( rval ).to be_a( WordNet::Synset )
118
+ expect( rval.words.map(&:to_s) ).to include( 'carrot' )
136
119
  end
137
120
 
138
121
  it "can look up a Word by ID" do
139
122
  rval = lexicon[ 21338 ]
140
- rval.should be_a( WordNet::Word )
141
- rval.lemma.should == 'carrot'
123
+ expect( rval ).to be_a( WordNet::Word )
124
+ expect( rval.lemma ).to eq( 'carrot' )
142
125
  end
143
126
 
144
127
  it "can look up the synset for a word and a sense" do
145
128
  ss = lexicon[ :boot, 3 ]
146
- ss.should be_a( WordNet::Synset )
147
- ss.definition.should == 'footwear that covers the whole foot and lower leg'
129
+ expect( ss ).to be_a( WordNet::Synset )
130
+ expect( ss.definition ).to eq( 'footwear that covers the whole foot and lower leg' )
148
131
  end
149
132
 
150
133
  it "can look up a synset for a word and a substring of its definition" do
151
134
  ss = lexicon[ :boot, 'kick' ]
152
- ss.should be_a( WordNet::Synset )
153
- ss.definition.should =~ /kick/i
135
+ expect( ss ).to be_a( WordNet::Synset )
136
+ expect( ss.definition ).to match( /kick/i )
154
137
  end
155
138
 
156
139
  it "can look up a synset for a word and a part of speech" do
157
140
  ss = lexicon[ :boot, :verb ]
158
- ss.should be_a( WordNet::Synset )
159
- ss.definition.should =~ /cause to load/i
141
+ expect( ss ).to be_a( WordNet::Synset )
142
+ expect( ss.definition ).to match( /cause to load/i )
160
143
  end
161
144
 
162
145
  it "can look up a synset for a word and an abbreviated part of speech" do
163
146
  ss = lexicon[ :boot, :n ]
164
- ss.should be_a( WordNet::Synset )
165
- ss.definition.should =~ /act of delivering/i
147
+ expect( ss ).to be_a( WordNet::Synset )
148
+ expect( ss.definition ).to match( /act of delivering/i )
166
149
  end
167
150
 
168
151
  it "can constrain fetched synsets with a Regexp match against its definition" do
169
152
  sss = lexicon.lookup_synsets( :tree, /plant/ )
170
- sss.should have( 2 ).members
153
+ expect( sss.size ).to eq( 2 )
171
154
  end
172
155
 
173
156
  it "can constrain fetched synsets via lexical domain" do
174
157
  sss = lexicon.lookup_synsets( :tree, 'noun.shape' )
175
- sss.should have( 1 ).member
176
- sss.first.should == WordNet::Synset[ 113912260 ]
158
+ expect( sss.size ).to eq( 1 )
159
+ expect( sss.first ).to eq( WordNet::Synset[ 113912260 ] )
177
160
  end
178
161
 
179
162
  it "can constrain fetched synsets via part of speech as a single-letter Symbol" do
180
163
  sss = lexicon.lookup_synsets( :tree, :n )
181
- sss.should have( 3 ).members
182
- sss.should include(
164
+ expect( sss.size ).to eq( 3 )
165
+ expect( sss ).to include(
183
166
  WordNet::Synset[ 113912260 ],
184
167
  WordNet::Synset[ 111348160 ],
185
168
  WordNet::Synset[ 113104059 ]
@@ -188,8 +171,8 @@ describe WordNet::Lexicon do
188
171
 
189
172
  it "can constrain fetched synsets via part of speech as a Symbol word" do
190
173
  sss = lexicon.lookup_synsets( :tree, :verb )
191
- sss.should have( 4 ).members
192
- sss.should include(
174
+ expect( sss.size ).to eq( 4 )
175
+ expect( sss ).to include(
193
176
  WordNet::Synset[ 200319111 ],
194
177
  WordNet::Synset[ 201145163 ],
195
178
  WordNet::Synset[ 201616293 ],
@@ -198,7 +181,7 @@ describe WordNet::Lexicon do
198
181
  end
199
182
 
200
183
  it "includes the database adapter name in its inspect output" do
201
- lexicon.inspect.should include( "postgres" )
184
+ expect( lexicon.inspect ).to include( "postgres" )
202
185
  end
203
186
 
204
187
  end