wordnet 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 27d43321cb1c8ba285945387a8eedd6bd25f5647
4
- data.tar.gz: 6b7f5d9abef4970f46a98bc06f621ef2de26744d
2
+ SHA256:
3
+ metadata.gz: 6a3f4db4815bfad5f10d2c684bb66466414b27c5fdb186a53579ca71d2c279f9
4
+ data.tar.gz: 939d0eb8a138ef9802105829d31ee2078a3dce010186a1606d7456aef6292f7f
5
5
  SHA512:
6
- metadata.gz: 6dac34d56a4eea80abe63377c08e8f68e1d149e40e230757bb05213f3bd45d88b0238eb4f3cb04d46e0ef2a016bb9229e8a22e6240c94295e19e32fed023ec31
7
- data.tar.gz: 7b93069a12a31970a977afcf2ecf8a12113f103d56818c99c417c83f5f7f2c3f4d1f93e0ffd268d73f81d0910c760de20c5d923ab06d214d00e320bf391c80f5
6
+ metadata.gz: 8ef75970224d87c5946815902d168d344fed6321598218d0eec4a6a972ab5d6b3e0cd52e68e8808debd63d9e71ab1044576f31d479628d23fa71028e875c16db
7
+ data.tar.gz: 5dc4fb6d4e93470f9d778727cb6d6a045aa42ae02fbc08b99197b69d09356b02af4868d65eede1af56b64a0ac0409032c6443951ce82a1d835bacde5bbbbbd10
checksums.yaml.gz.sig CHANGED
Binary file
data/History.md ADDED
@@ -0,0 +1,33 @@
1
+ # Release History for wordnet
2
+
3
+ ---
4
+
5
+ ## v1.2.0 [2023-05-10] Michael Granger <ged@FaerieMUD.org>
6
+
7
+ Enhancements:
8
+
9
+ - Update for Ruby 3
10
+ - Improve API docs
11
+
12
+
13
+ ## v1.1.0 [2017-09-26] Michael Granger <ged@FaerieMUD.org>
14
+
15
+ Enhancements:
16
+
17
+ - Update to WordNet 3.1 (from SQLUNet 5.2.0), Sequel 5.0.
18
+ - Made fetching Synset by ordinal deterministic
19
+ - Documentation updates/fixes
20
+
21
+
22
+ ## v1.0.1 [2016-09-18] Michael Granger <ged@FaerieMUD.org>
23
+
24
+ - Finish up and fix WordNet::Sense
25
+ - Add Wordnet::Synset#wordlist
26
+ - Documentation fixes, fixes for newer Ruby versions
27
+
28
+
29
+ ## v1.0.0 [2012-08-22] Michael Granger <ged@FaerieMUD.org>
30
+
31
+ Converted to use Sequel and wnsql.
32
+
33
+
data/README.md CHANGED
@@ -1 +1,140 @@
1
- The README is in RDoc format, which Bitbucket/Github doesn't support; [see the source](https://bitbucket.org/ged/ruby-wordnet/src/3db62d5ed69878e8e7c36795d3379291db0402d6/README.rdoc?at=default).
1
+ # Ruby-WordNet
2
+
3
+ home
4
+ : https://hg.sr.ht/~ged/ruby-wordnet
5
+
6
+ code
7
+ : https://hg.sr.ht/~ged/ruby-wordnet/browse
8
+
9
+ docs
10
+ : http://deveiate.org/code/wordnet
11
+
12
+ github
13
+ : https://github.com/ged/ruby-wordnet
14
+
15
+
16
+ ## Description
17
+
18
+ This library is a Ruby interface to WordNet®[https://wordnet.princeton.edu/].
19
+ WordNet® is an online lexical reference system whose design is inspired by
20
+ current psycholinguistic theories of human lexical memory. English nouns,
21
+ verbs, adjectives and adverbs are organized into synonym sets, each
22
+ representing one underlying lexical concept. Different relations link the
23
+ synonym sets.
24
+
25
+ This library uses SqlUNET[http://sqlunet.sourceforge.net/], which is a
26
+ conversion of the WordNet (along with a number of other linguistic databases)
27
+ lexicon flatfiles into a relational database format. You can either install the
28
+ [wordnet-defaultdb](https://rubygems.org/gems/wordnet-defaultdb) gem, which
29
+ packages up the SQLite3 version of SqlUNet, or install your own and point the
30
+ lexicon at it by passing [Sequel connection
31
+ parameters](http://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html)
32
+ to the constructor.
33
+
34
+ ## Usage
35
+
36
+ There are three major parts to this library:
37
+
38
+ WordNet::Lexicon
39
+ : the interface to the dictionary, used to connect to the
40
+ database and look up Words and Synsets.
41
+
42
+ WordNet::Word
43
+ : the English word entries in the Lexicon that are mapped
44
+ to Synsets via one or more Senses.
45
+
46
+ WordNet::Synset
47
+ : the main artifact of WordNet: a "synonym set". These
48
+ : are connected to one or more Words through a Sense,
49
+ and are connected to each other via SemanticLinks.
50
+
51
+ The other object classes exist mostly as a way of representing relationships
52
+ between the main three:
53
+
54
+ WordNet::Sense
55
+ : represents a link between one or more Words and
56
+ one or more Synsets for one meaning of the word.
57
+
58
+ WordNet::SemanticLink
59
+ : represents a link between Synsets
60
+
61
+ WordNet::LexicalLink
62
+ : represents a link between Words in Synsets
63
+
64
+ WordNet::Morph
65
+ : an interface to a lookup table of irregular word
66
+ forms mapped to their base form (lemma)
67
+
68
+
69
+ The last class (WordNet::Model) is the abstract superclass for all the others,
70
+ and inherits most of its functionality from Sequel::Model, the ORM layer
71
+ of the Sequel toolkit. It's mostly just a container for the database
72
+ connection, with some convenience methods to allow the database connection
73
+ to be deferred until runtime instead of when the library loads.
74
+
75
+ The library also comes with the beginnings of support for the SUMO-WordNet
76
+ mapping:
77
+
78
+ WordNet::SumoTerm
79
+ : [Suggested Upper Merged Ontology](http://www.ontologyportal.org/) terms,
80
+ with associations back to related Synsets.
81
+
82
+ As mentioned above, SqlUNet has done an amazing job of linking up a number of
83
+ other useful linguistic lexicons via WordNet synsets. I plan on adding support
84
+ for at minimum VerbNet, FrameNet, and PropBank.
85
+
86
+
87
+ ## Requirements
88
+
89
+ * Ruby >= 3.0
90
+ * Sequel >= 5.0
91
+
92
+
93
+ ## Contributing
94
+
95
+ You can check out the current development source with Mercurial via its
96
+ [project page](https://hg.sr.ht/~ged/ruby-wordnet). Or if you prefer
97
+ Git, via [its Github mirror](https://github.com/ged/ruby-wordnet).
98
+
99
+ After checking out the source, run:
100
+
101
+ $ gem install -Ng
102
+ $ rake setup
103
+
104
+ This will do any necessary development environment set up.
105
+
106
+
107
+ ## Authors
108
+
109
+ * Michael Granger <ged@FaerieMUD.org>
110
+
111
+
112
+ ## License
113
+
114
+ Copyright (c) 2002-2023, Michael Granger
115
+ All rights reserved.
116
+
117
+ Redistribution and use in source and binary forms, with or without
118
+ modification, are permitted provided that the following conditions are met:
119
+
120
+ * Redistributions of source code must retain the above copyright notice,
121
+ this list of conditions and the following disclaimer.
122
+
123
+ * Redistributions in binary form must reproduce the above copyright notice,
124
+ this list of conditions and the following disclaimer in the documentation
125
+ and/or other materials provided with the distribution.
126
+
127
+ * Neither the name of the author/s, nor the names of the project's
128
+ contributors may be used to endorse or promote products derived from this
129
+ software without specific prior written permission.
130
+
131
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
132
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
133
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
134
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
135
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
136
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
137
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
138
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
139
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
140
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'wordnet' unless defined?( WordNet )
5
4
 
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'wordnet' unless defined?( WordNet )
5
4
  require 'wordnet/synset' unless defined?( WordNet::Synset )
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'pathname'
5
4
  require 'loggability'
@@ -224,11 +223,13 @@ class WordNet::Lexicon
224
223
  ### #lookup_synsets instead.
225
224
  ###
226
225
  ### The +word+ can be one of:
227
- ### [Integer]
226
+ ###
227
+ ### [+Integer+]
228
228
  ### Looks up the corresponding Word or Synset by ID. This assumes that all Synset IDs are
229
229
  ### all 9 digits or greater, which is true as of WordNet 3.1. Any additional +args+ are
230
230
  ### ignored.
231
- ### [Symbol, String]
231
+ ###
232
+ ### [+Symbol+, +String+]
232
233
  ### Look up a Word by its gloss using #lookup_synsets, passing any additional +args+,
233
234
  ### and return the first one that is found.
234
235
  def []( word, *args )
@@ -250,13 +251,13 @@ class WordNet::Lexicon
250
251
  ###
251
252
  ### The *args* can contain:
252
253
  ###
253
- ### [Integer, Range]
254
+ ### [+Integer+, +Range+]
254
255
  ### The sense/s of the Word (1-indexed) to use when searching for Synsets. If not specified,
255
256
  ### all senses of the +word+ are used.
256
- ### [Regexp]
257
+ ### [+Regexp+]
257
258
  ### The Word's Synsets are filtered by definition using an RLIKE filter. Note that not all
258
259
  ### databases (including the default one, sqlite3) support RLIKE.
259
- ### [Symbol, String]
260
+ ### [+Symbol+, +String+]
260
261
  ### If it matches one of either a lexical domain (e.g., "verb.motion") or a part of
261
262
  ### speech (e.g., "adjective", :noun, :v), the resulting Synsets are filtered by that
262
263
  ### criteria.
data/lib/wordnet/model.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'loggability'
5
4
  require 'sequel'
@@ -37,7 +36,6 @@ module WordNet
37
36
 
38
37
 
39
38
  ### Reset the database connection that all model objects will use.
40
- ### @param [Sequel::Database] newdb the new database object.
41
39
  def self::db=( newdb )
42
40
  Loggability.with_level( :fatal ) do
43
41
  super
data/lib/wordnet/morph.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'wordnet' unless defined?( WordNet )
5
4
  require 'wordnet/model'
@@ -22,6 +21,15 @@ class WordNet::Morph < WordNet::Model( :morphs )
22
21
 
23
22
  set_primary_key :morphid
24
23
 
24
+
25
+ ##
26
+ # :method: morphid
27
+ # The Integer ID of the morph
28
+
29
+ ##
30
+ # :method: morph
31
+ # The text of the morph
32
+
25
33
  # Table "public.morphmaps"
26
34
  # Column | Type | Modifiers
27
35
  # ---------+--------------+-------------------------------
@@ -35,6 +43,9 @@ class WordNet::Morph < WordNet::Model( :morphs )
35
43
  # Foreign-key constraints:
36
44
  # "fk_morphmaps_morphid" FOREIGN KEY (morphid) REFERENCES morphs(morphid)
37
45
  # "fk_morphmaps_wordid" FOREIGN KEY (wordid) REFERENCES words(wordid)
46
+
47
+ ##
48
+ # The WordNet::Word entries associated with this Morph
38
49
  many_to_many :words,
39
50
  join_table: :morphmaps,
40
51
  right_key: :wordid,
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'wordnet' unless defined?( WordNet )
5
4
  require 'wordnet/constants'
@@ -12,11 +11,19 @@ class WordNet::SemanticLink < WordNet::Model( :semlinks )
12
11
 
13
12
  set_primary_key [:synset1id, :synset2id, :linkid]
14
13
 
14
+ ##
15
+ # :method: linkid
16
+ # The ID of this semlink
17
+
18
+ ##
19
+ # The "origin" WordNet::Synset associated with this SemanticLink
15
20
  many_to_one :origin,
16
21
  class: 'WordNet::Synset',
17
22
  key: :synset1id,
18
23
  primary_key: :synsetid
19
24
 
25
+ ##
26
+ # The "target" WordNet::Synset associated with this SemanticLink
20
27
  one_to_one :target,
21
28
  class: 'WordNet::Synset',
22
29
  key: :synsetid,
data/lib/wordnet/sense.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'wordnet' unless defined?( WordNet )
5
4
  require 'wordnet/model'
@@ -10,6 +9,50 @@ class WordNet::Sense < WordNet::Model( :senses )
10
9
 
11
10
  set_primary_key :senseid
12
11
 
12
+ # Table "wn.senses"
13
+ # Column | Type | Collation | Nullable | Default
14
+ # -------------+------------------------+-----------+----------+-------------
15
+ # wordid | bigint | | not null | '0'::bigint
16
+ # casedwordid | bigint | | |
17
+ # synsetid | bigint | | not null | '0'::bigint
18
+ # senseid | bigint | | |
19
+ # sensenum | bigint | | not null | '0'::bigint
20
+ # lexid | bigint | | not null | '0'::bigint
21
+ # tagcount | bigint | | |
22
+ # sensekey | character varying(100) | | |
23
+ # Indexes:
24
+ # "idx_192341_primary" PRIMARY KEY, btree (wordid, synsetid)
25
+ # "k_senses_lexid" btree (lexid)
26
+ # "k_senses_synsetid" btree (synsetid)
27
+ # "k_senses_wordid" btree (wordid)
28
+ # "unq_senses_senseid" UNIQUE, btree (senseid)
29
+ # "unq_senses_sensekey" UNIQUE, btree (sensekey)
30
+ # Foreign-key constraints:
31
+ # "senses_synsetid_fkey" FOREIGN KEY (synsetid) REFERENCES synsets(synsetid)
32
+ # "senses_wordid_fkey" FOREIGN KEY (wordid) REFERENCES words(wordid)
33
+ #
34
+
35
+ ##
36
+ # :method: wordid
37
+ # The integer ID of the WordNet::Word this Sense is linked to
38
+
39
+ ##
40
+ # :method: synsetid
41
+ # The integer ID Of the WordNet::Synset this Sense is linked to.
42
+
43
+ ##
44
+ # :method: senseid
45
+ # The unique integer ID of the Sense.
46
+
47
+ ##
48
+ # :method: sensenum
49
+ # The index of this Sense in relation to its Synset
50
+
51
+ ##
52
+ # :method: sensekey
53
+ # The raw sense key as it appeared in the sources
54
+
55
+
13
56
  ##
14
57
  # The Synset this is a Sense for
15
58
  many_to_one :synset, key: :synsetid
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'wordnet' unless defined?( WordNet )
5
4
  require 'wordnet/model'
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'wordnet' unless defined?( WordNet )
5
4
  require 'wordnet/constants'
@@ -353,7 +352,7 @@ class WordNet::Synset < WordNet::Model( :synsets )
353
352
  ### Return the table of part-of-speech types, keyed by letter identifier.
354
353
  def self::postype_table
355
354
  @postype_table ||= self.db[:postypes].inject({}) do |hash, row|
356
- hash[ row[:pos].untaint.to_sym ] = row[:posname]
355
+ hash[ row[:pos].to_sym ] = row[:posname]
357
356
  hash
358
357
  end
359
358
  end
data/lib/wordnet/word.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
2
 
4
3
  require 'wordnet' unless defined?( WordNet )
5
4
  require 'wordnet/model'
data/lib/wordnet.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- #encoding: utf-8
3
2
 
4
3
  require 'loggability'
5
4
  require 'sequel'
@@ -15,7 +14,7 @@ module WordNet
15
14
 
16
15
 
17
16
  # Release version
18
- VERSION = '1.1.0'
17
+ VERSION = '1.2.0'
19
18
 
20
19
  # VCS revision
21
20
  REVISION = %q$Revision: $
data/spec/helpers.rb CHANGED
@@ -1,9 +1,14 @@
1
1
  # -*- ruby -*-
2
- #encoding: utf-8
3
- # coding: utf-8
4
2
 
5
3
  # SimpleCov test coverage reporting; enable this using the :coverage rake task
6
- require 'simplecov' if ENV['COVERAGE']
4
+ if ENV['COVERAGE']
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ add_filter 'spec/'
8
+ enable_coverage :branch
9
+ end
10
+ end
11
+
7
12
 
8
13
  $LOAD_PATH.unshift( 'wordnet-defaultdb/lib' )
9
14
 
@@ -29,8 +34,15 @@ RSpec.configure do |config|
29
34
  config.example_status_persistence_file_path = "spec/.state"
30
35
 
31
36
  if Gem::Specification.find_all_by_name( 'pg' ).any?
32
- $dburi = 'postgres:/wordnet31'
33
- else
37
+ begin
38
+ dburi = 'postgres:/sqlunet50'
39
+ Sequel.connect( dburi )
40
+ $dburi = dburi
41
+ rescue
42
+ end
43
+ end
44
+
45
+ if ! $dburi
34
46
  config.filter_run_excluding( :requires_pg )
35
47
  unless (( $dburi = WordNet::Lexicon.default_db_uri ))
36
48
  config.filter_run_excluding( :requires_database )
data.tar.gz.sig CHANGED
Binary file