wordnet 1.0.1 → 1.1.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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gems +6 -5
- data/.ruby-version +1 -1
- data/History.rdoc +9 -0
- data/README.md +1 -1
- data/README.rdoc +20 -19
- data/Rakefile +5 -5
- data/certs/ged.pem +11 -11
- data/lib/wordnet.rb +12 -18
- data/lib/wordnet/constants.rb +51 -51
- data/lib/wordnet/lexicallink.rb +6 -6
- data/lib/wordnet/lexicon.rb +26 -39
- data/lib/wordnet/model.rb +31 -39
- data/lib/wordnet/morph.rb +3 -3
- data/lib/wordnet/semanticlink.rb +7 -7
- data/lib/wordnet/sense.rb +7 -7
- data/lib/wordnet/sumoterm.rb +5 -5
- data/lib/wordnet/synset.rb +58 -45
- data/lib/wordnet/word.rb +16 -11
- data/spec/helpers.rb +11 -7
- data/spec/wordnet/lexicon_spec.rb +80 -148
- data/spec/wordnet/model_spec.rb +0 -7
- data/spec/wordnet/semanticlink_spec.rb +5 -3
- data/spec/wordnet/sense_spec.rb +5 -3
- data/spec/wordnet/synset_spec.rb +14 -26
- data/spec/wordnet/word_spec.rb +14 -6
- data/wordnet.gemspec +49 -49
- metadata +49 -57
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 27d43321cb1c8ba285945387a8eedd6bd25f5647
|
4
|
+
data.tar.gz: 6b7f5d9abef4970f46a98bc06f621ef2de26744d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dac34d56a4eea80abe63377c08e8f68e1d149e40e230757bb05213f3bd45d88b0238eb4f3cb04d46e0ef2a016bb9229e8a22e6240c94295e19e32fed023ec31
|
7
|
+
data.tar.gz: 7b93069a12a31970a977afcf2ecf8a12113f103d56818c99c417c83f5f7f2c3f4d1f93e0ffd268d73f81d0910c760de20c5d923ab06d214d00e320bf391c80f5
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.gems
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
hoe-deveiate
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
simplecov
|
1
|
+
hoe-deveiate
|
2
|
+
loggability
|
3
|
+
pg
|
4
|
+
sequel
|
5
|
+
simplecov
|
6
|
+
sqlite3
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4
|
data/History.rdoc
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
== v1.1.0 [2017-09-26] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
Enhancements:
|
4
|
+
|
5
|
+
- Update to WordNet 3.1 (from SQLUNet 5.2.0), Sequel 5.0.
|
6
|
+
- Made fetching Synset by ordinal deterministic
|
7
|
+
- Documentation updates/fixes
|
8
|
+
|
9
|
+
|
1
10
|
== v1.0.1 [2016-09-18] Michael Granger <ged@FaerieMUD.org>
|
2
11
|
|
3
12
|
- Finish up and fix WordNet::Sense
|
data/README.md
CHANGED
@@ -1 +1 @@
|
|
1
|
-
The README is in RDoc format, which Bitbucket doesn't support; [see the source](https://bitbucket.org/ged/ruby-wordnet/src/3db62d5ed69878e8e7c36795d3379291db0402d6/README.rdoc?at=default).
|
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).
|
data/README.rdoc
CHANGED
@@ -1,22 +1,23 @@
|
|
1
1
|
= Ruby-WordNet
|
2
2
|
|
3
|
-
*
|
3
|
+
* https://bitbucket.org/ged/ruby-wordnet/
|
4
4
|
|
5
5
|
== Description
|
6
6
|
|
7
7
|
This library is a Ruby interface to WordNet®[http://wordnet.princeton.edu/].
|
8
|
-
WordNet® is an online lexical reference system whose design is inspired
|
9
|
-
|
10
|
-
|
11
|
-
representing one underlying lexical concept. Different relations link
|
12
|
-
|
13
|
-
|
14
|
-
This library uses
|
15
|
-
conversion of the
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
{Sequel connection
|
8
|
+
WordNet® is an online lexical reference system whose design is inspired by
|
9
|
+
current psycholinguistic theories of human lexical memory. English nouns,
|
10
|
+
verbs, adjectives and adverbs are organized into synonym sets, each
|
11
|
+
representing one underlying lexical concept. Different relations link the
|
12
|
+
synonym sets.
|
13
|
+
|
14
|
+
This library uses SqlUNET[http://sqlunet.sourceforge.net/], which is a
|
15
|
+
conversion of the WordNet (along with a number of other linguistic databases)
|
16
|
+
lexicon flatfiles into a relational database format. You can either install the
|
17
|
+
{wordnet-defaultdb}[https://rubygems.org/gems/wordnet-defaultdb] gem, which
|
18
|
+
packages up the SQLite3 version of SqlUNet, or install your own and point the
|
19
|
+
lexicon at it by passing {Sequel connection
|
20
|
+
parameters}[http://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html]
|
20
21
|
to the constructor.
|
21
22
|
|
22
23
|
=== Usage
|
@@ -53,15 +54,15 @@ mapping:
|
|
53
54
|
[WordNet::SumoTerm] {Suggested Upper Merged Ontology}[http://www.ontologyportal.org/]
|
54
55
|
terms, with associations back to related Synsets.
|
55
56
|
|
56
|
-
|
57
|
-
|
58
|
-
|
57
|
+
As mentioned above, SqlUNet has done an amazing job of linking up a number of
|
58
|
+
other useful linguistic lexicons via WordNet synsets. I plan on adding support
|
59
|
+
for at minimum VerbNet, FrameNet, and PropBank.
|
59
60
|
|
60
61
|
|
61
62
|
== Requirements
|
62
63
|
|
63
|
-
* Ruby >=
|
64
|
-
* Sequel >=
|
64
|
+
* Ruby >= 2.3
|
65
|
+
* Sequel >= 5.0
|
65
66
|
|
66
67
|
|
67
68
|
== Authors
|
@@ -71,7 +72,7 @@ me a note if you're interested in working on this.
|
|
71
72
|
|
72
73
|
== License
|
73
74
|
|
74
|
-
Copyright (c) 2002-
|
75
|
+
Copyright (c) 2002-2017, Michael Granger
|
75
76
|
All rights reserved.
|
76
77
|
|
77
78
|
Redistribution and use in source and binary forms, with or without
|
data/Rakefile
CHANGED
@@ -29,12 +29,12 @@ hoespec = Hoe.spec( 'wordnet' ) do
|
|
29
29
|
|
30
30
|
self.developer 'Michael Granger', 'ged@FaerieMUD.org'
|
31
31
|
|
32
|
-
self.dependency 'sequel',
|
33
|
-
self.dependency 'loggability',
|
32
|
+
self.dependency 'sequel', '~> 5.0'
|
33
|
+
self.dependency 'loggability', '~> 0.11'
|
34
34
|
|
35
|
-
self.dependency 'sqlite3',
|
36
|
-
self.dependency 'rspec',
|
37
|
-
self.dependency 'simplecov',
|
35
|
+
self.dependency 'sqlite3', '~> 1.3', :developer
|
36
|
+
self.dependency 'rspec', '~> 3.5', :developer
|
37
|
+
self.dependency 'simplecov', '~> 0.12', :developer
|
38
38
|
|
39
39
|
self.spec_extras[:post_install_message] = %{
|
40
40
|
If you don't already have a WordNet database installed somewhere,
|
data/certs/ged.pem
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
2
|
+
MIIEbDCCAtSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQwwCgYDVQQDDANnZWQx
|
3
3
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
4
|
-
|
4
|
+
HhcNMTcwOTI3MDAzMDQ0WhcNMTgwOTI3MDAzMDQ0WjA+MQwwCgYDVQQDDANnZWQx
|
5
5
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
6
6
|
ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC/JWGRHO+USzR97vXjkFgt
|
7
7
|
83qeNf2KHkcvrRTSnR64i6um/ziin0I0oX23H7VYrDJC9A/uoUa5nGRJS5Zw/+wW
|
@@ -14,13 +14,13 @@ soo/6za/bWajOKUmDhpqvaiRv9EDpVLzuj53uDoukMMwxCMfgb04+ckQ0t2G7wqc
|
|
14
14
|
/D+K9JW9DDs3Yjgv9k4h7YMhW5gftosd+NkNC/+Y2CkCAwEAAaN1MHMwCQYDVR0T
|
15
15
|
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFHKN/nkRusdqCJEuq3lgB3fJvyTg
|
16
16
|
MBwGA1UdEQQVMBOBEWdlZEBGYWVyaWVNVUQub3JnMBwGA1UdEgQVMBOBEWdlZEBG
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
YWVyaWVNVUQub3JnMA0GCSqGSIb3DQEBBQUAA4IBgQB/qyi5pCjK8ceoKalfVAjS
|
18
|
+
vG64FEnLnD1bm39T5UaFIRmo+abZtfpg2QhwKvPbPjOicau2+m+MDQ2Cc3tgyaC3
|
19
|
+
dZxcP6w8APFg4AId09uWAZKf0xajvBMS2aOz8Bbmag6fwqRRkTMqsNYnmqcF7aRT
|
20
|
+
DuEzbEMfaOUYjU9RuB48vr4q8yRft0ww+3jq5iwNkrX1buL2pwBbyvgms6D/BV41
|
21
|
+
MaTVMjsHqJUwU2xVfhGtxGAWAer5S1HGYHkbio6mGVtiie0uWjmnzi7ppIlMr48a
|
22
|
+
7BNTsoZ+/JRk3iQWmmNsyFT7xfqBKye7cH11BX8V8P4MeGB5YWlMI+Myj5DZY3fQ
|
23
|
+
st2AGD4rb1l0ia7PfubcBThSIdz61eCb8gRi/RiZZwb3/7+eyEncLJzt2Ob9fGSF
|
24
|
+
X0qdrKi+2aZZ0NGuFj9AItBsVmAvkBGIpX4TEKQp5haEbPpmaqO5nIIhV26PXmyT
|
25
|
+
OMKv6pWsoS81vw5KAGBmfX8nht/Py90DQrbRvakATGI=
|
26
26
|
-----END CERTIFICATE-----
|
data/lib/wordnet.rb
CHANGED
@@ -4,9 +4,9 @@
|
|
4
4
|
require 'loggability'
|
5
5
|
require 'sequel'
|
6
6
|
|
7
|
-
# This is a Ruby interface to the WordNet® lexical database. It uses the
|
8
|
-
# project's databases instead of reading from the canonical flatfiles for speed
|
9
|
-
# easy modification.
|
7
|
+
# This is a Ruby interface to the WordNet® lexical database. It uses the SqlUNet
|
8
|
+
# project's databases instead of reading from the canonical flatfiles for speed,
|
9
|
+
# easy modification, and correlation with other linguistic lexicons.
|
10
10
|
module WordNet
|
11
11
|
extend Loggability
|
12
12
|
|
@@ -15,15 +15,11 @@ module WordNet
|
|
15
15
|
|
16
16
|
|
17
17
|
# Release version
|
18
|
-
VERSION = '1.0
|
18
|
+
VERSION = '1.1.0'
|
19
19
|
|
20
20
|
# VCS revision
|
21
21
|
REVISION = %q$Revision: $
|
22
22
|
|
23
|
-
# Abort if not >=2.2.0
|
24
|
-
abort "This version of WordNet requires Ruby 2.2.0 or greater." unless
|
25
|
-
RUBY_VERSION >= '2.2.0'
|
26
|
-
|
27
23
|
|
28
24
|
### Lexicon exception - something has gone wrong in the internals of the
|
29
25
|
### lexicon.
|
@@ -38,7 +34,6 @@ module WordNet
|
|
38
34
|
include WordNet::Constants
|
39
35
|
|
40
36
|
### Get the WordNet version.
|
41
|
-
### @return [String] the library's version
|
42
37
|
def self::version_string( include_buildnum=false )
|
43
38
|
vstring = "%s %s" % [ self.name, VERSION ]
|
44
39
|
vstring << " (build %s)" % [ REVISION[/: ([[:xdigit:]]+)/, 1] || '0' ] if include_buildnum
|
@@ -47,15 +42,15 @@ module WordNet
|
|
47
42
|
|
48
43
|
|
49
44
|
require 'wordnet/lexicon'
|
50
|
-
|
51
45
|
require 'wordnet/model'
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
46
|
+
|
47
|
+
WordNet::Model.register_model( 'wordnet/sense' )
|
48
|
+
WordNet::Model.register_model( 'wordnet/synset' )
|
49
|
+
WordNet::Model.register_model( 'wordnet/semanticlink' )
|
50
|
+
WordNet::Model.register_model( 'wordnet/lexicallink' )
|
51
|
+
WordNet::Model.register_model( 'wordnet/word' )
|
52
|
+
WordNet::Model.register_model( 'wordnet/morph' )
|
53
|
+
WordNet::Model.register_model( 'wordnet/sumoterm' )
|
59
54
|
|
60
55
|
#
|
61
56
|
# Backward-compatibility stuff
|
@@ -79,6 +74,5 @@ module WordNet
|
|
79
74
|
Other = :s
|
80
75
|
|
81
76
|
|
82
|
-
|
83
77
|
end # module WordNet
|
84
78
|
|
data/lib/wordnet/constants.rb
CHANGED
@@ -14,11 +14,11 @@ module WordNet::Constants
|
|
14
14
|
|
15
15
|
# Synset syntactic-category names -> indicators
|
16
16
|
SYNTACTIC_CATEGORIES = {
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
17
|
+
noun: "n",
|
18
|
+
verb: "v",
|
19
|
+
adjective: "a",
|
20
|
+
adverb: "r",
|
21
|
+
other: "s",
|
22
22
|
}
|
23
23
|
# Syntactic-category indicators -> names
|
24
24
|
SYNTACTIC_SYMBOLS = SYNTACTIC_CATEGORIES.invert
|
@@ -34,29 +34,29 @@ module WordNet::Constants
|
|
34
34
|
|
35
35
|
# Synset pointer typenames -> indicators
|
36
36
|
POINTER_TYPES = {
|
37
|
-
:
|
38
|
-
:
|
39
|
-
:
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
50
|
-
:
|
51
|
-
:
|
52
|
-
:
|
53
|
-
:
|
37
|
+
antonym: '!',
|
38
|
+
hypernym: '@',
|
39
|
+
entailment: '*',
|
40
|
+
hyponym: '~',
|
41
|
+
meronym: '%',
|
42
|
+
holonym: '#',
|
43
|
+
cause: '>',
|
44
|
+
verb_group: '$',
|
45
|
+
similar_to: '&',
|
46
|
+
participle: '<',
|
47
|
+
pertainym: '\\',
|
48
|
+
attribute: '=',
|
49
|
+
derived_from: '\\',
|
50
|
+
see_also: '^',
|
51
|
+
derivation: '+',
|
52
|
+
domain: ';',
|
53
|
+
member: '-',
|
54
54
|
}
|
55
55
|
|
56
56
|
# Synset pointer indicator -> typename
|
57
57
|
POINTER_SYMBOLS = POINTER_TYPES.invert
|
58
58
|
|
59
|
-
# Map the pointer types into their own symbols (eg., :
|
59
|
+
# Map the pointer types into their own symbols (eg., verb_group: VerbGroup)
|
60
60
|
POINTER_TYPES.each do |sym,val|
|
61
61
|
cname = sym.to_s.gsub( /(?:^|_)(.)/ ) { $1.upcase }
|
62
62
|
const_set( cname, val )
|
@@ -65,7 +65,7 @@ module WordNet::Constants
|
|
65
65
|
# Hypernym synset pointer types
|
66
66
|
HYPERNYM_TYPES = {
|
67
67
|
nil => '@', # Install non-subtype methods, too
|
68
|
-
:
|
68
|
+
instance: '@i',
|
69
69
|
}
|
70
70
|
|
71
71
|
# Hypernym indicator -> type map
|
@@ -74,7 +74,7 @@ module WordNet::Constants
|
|
74
74
|
# Hyponym synset pointer types
|
75
75
|
HYPONYM_TYPES = {
|
76
76
|
nil => '~', # Install non-subtype methods, too
|
77
|
-
:
|
77
|
+
instance: '~i',
|
78
78
|
}
|
79
79
|
|
80
80
|
# Hyponym indicator -> type map
|
@@ -82,13 +82,13 @@ module WordNet::Constants
|
|
82
82
|
|
83
83
|
# Meronym synset pointer types
|
84
84
|
MERONYM_TYPES = {
|
85
|
-
:
|
86
|
-
:
|
87
|
-
:
|
88
|
-
:
|
89
|
-
:
|
90
|
-
:
|
91
|
-
:
|
85
|
+
member: '%m',
|
86
|
+
stuff: '%s',
|
87
|
+
portion: '%o',
|
88
|
+
component: '%p',
|
89
|
+
feature: '%f',
|
90
|
+
phase: '%a',
|
91
|
+
place: '%l',
|
92
92
|
}
|
93
93
|
|
94
94
|
# Meronym indicator -> type map
|
@@ -102,13 +102,13 @@ module WordNet::Constants
|
|
102
102
|
|
103
103
|
# Holonym synset pointer types
|
104
104
|
HOLONYM_TYPES = {
|
105
|
-
:
|
106
|
-
:
|
107
|
-
:
|
108
|
-
:
|
109
|
-
:
|
110
|
-
:
|
111
|
-
:
|
105
|
+
member: '#m',
|
106
|
+
stuff: '#s',
|
107
|
+
portion: '#o',
|
108
|
+
component: '#p',
|
109
|
+
feature: '#f',
|
110
|
+
phase: '#a',
|
111
|
+
place: '#l',
|
112
112
|
}
|
113
113
|
|
114
114
|
# Holonym indicator -> type map
|
@@ -122,9 +122,9 @@ module WordNet::Constants
|
|
122
122
|
|
123
123
|
# Domain synset pointer types
|
124
124
|
DOMAIN_TYPES = {
|
125
|
-
:
|
126
|
-
:
|
127
|
-
:
|
125
|
+
category: ';c',
|
126
|
+
region: ';r',
|
127
|
+
usage: ';u',
|
128
128
|
}
|
129
129
|
|
130
130
|
# Domain indicator -> type map
|
@@ -138,9 +138,9 @@ module WordNet::Constants
|
|
138
138
|
|
139
139
|
# Member synset pointer types
|
140
140
|
MEMBER_TYPES = {
|
141
|
-
:
|
142
|
-
:
|
143
|
-
:
|
141
|
+
category: '-c',
|
142
|
+
region: '-r',
|
143
|
+
usage: '-u',
|
144
144
|
}
|
145
145
|
|
146
146
|
# Member indicator -> type map
|
@@ -154,12 +154,12 @@ module WordNet::Constants
|
|
154
154
|
|
155
155
|
# Map of primary types to maps of their subtypes
|
156
156
|
POINTER_SUBTYPES = {
|
157
|
-
:
|
158
|
-
:
|
159
|
-
:
|
160
|
-
:
|
161
|
-
:
|
162
|
-
:
|
157
|
+
hyponym: HYPONYM_TYPES,
|
158
|
+
hypernym: HYPERNYM_TYPES,
|
159
|
+
meronym: MERONYM_TYPES,
|
160
|
+
holonym: HOLONYM_TYPES,
|
161
|
+
member: MEMBER_TYPES,
|
162
|
+
domain: DOMAIN_TYPES,
|
163
163
|
}
|
164
164
|
|
165
165
|
|
data/lib/wordnet/lexicallink.rb
CHANGED
@@ -14,16 +14,16 @@ class WordNet::LexicalLink < WordNet::Model( :lexlinks )
|
|
14
14
|
##
|
15
15
|
# The WordNet::Sense the link is pointing *from*.
|
16
16
|
many_to_one :origin,
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
17
|
+
class: 'WordNet::Sense',
|
18
|
+
key: :synset1id,
|
19
|
+
primary_key: :synsetid
|
20
20
|
|
21
21
|
##
|
22
22
|
# The WordNet::Synset the link is pointing *to*.
|
23
23
|
one_to_many :target,
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:
|
24
|
+
class: 'WordNet::Synset',
|
25
|
+
key: :synsetid,
|
26
|
+
primary_key: :synset2id
|
27
27
|
|
28
28
|
|
29
29
|
######
|
data/lib/wordnet/lexicon.rb
CHANGED
@@ -7,8 +7,14 @@ require 'rubygems'
|
|
7
7
|
|
8
8
|
require 'wordnet' unless defined?( WordNet )
|
9
9
|
require 'wordnet/constants'
|
10
|
-
require 'wordnet/
|
11
|
-
|
10
|
+
require 'wordnet/model'
|
11
|
+
|
12
|
+
# Try to load the default database gem, ignoring it if it's not installed.
|
13
|
+
begin
|
14
|
+
require 'wordnet-defaultdb'
|
15
|
+
rescue LoadError
|
16
|
+
# No-op
|
17
|
+
end
|
12
18
|
|
13
19
|
|
14
20
|
# WordNet lexicon class - provides access to the WordNet lexical
|
@@ -18,13 +24,13 @@ require 'wordnet/word'
|
|
18
24
|
# == Creating a Lexicon
|
19
25
|
#
|
20
26
|
# To create a Lexicon, point it at a database using {Sequel database connection
|
21
|
-
# criteria}[http://sequel.
|
27
|
+
# criteria}[http://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html]:
|
22
28
|
#
|
23
|
-
# lex = WordNet::Lexicon.new( 'postgres://localhost/
|
24
|
-
# # => #<WordNet::Lexicon:0x7fd192a76668 postgres://localhost/
|
29
|
+
# lex = WordNet::Lexicon.new( 'postgres://localhost/wordnet31' )
|
30
|
+
# # => #<WordNet::Lexicon:0x7fd192a76668 postgres://localhost/wordnet31>
|
25
31
|
#
|
26
32
|
# # Another way of doing the same thing:
|
27
|
-
# lex = WordNet::Lexicon.new( adapter: 'postgres', database: '
|
33
|
+
# lex = WordNet::Lexicon.new( adapter: 'postgres', database: 'wordnet31', host: 'localhost' )
|
28
34
|
# # => #<WordNet::Lexicon:0x7fd192d374b0 postgres>
|
29
35
|
#
|
30
36
|
# Alternatively, if you have the 'wordnet-defaultdb' gem (which includes an
|
@@ -33,7 +39,7 @@ require 'wordnet/word'
|
|
33
39
|
#
|
34
40
|
# lex = WordNet::Lexicon.new
|
35
41
|
# # => #<WordNet::Lexicon:0x7fdbfac1a358 sqlite:[...]/gems/wordnet-defaultdb-1.0.1
|
36
|
-
# # /data/wordnet-defaultdb/
|
42
|
+
# # /data/wordnet-defaultdb/wordnet31.sqlite>
|
37
43
|
#
|
38
44
|
# == Looking Up Synsets
|
39
45
|
#
|
@@ -128,36 +134,10 @@ class WordNet::Lexicon
|
|
128
134
|
log_to :wordnet
|
129
135
|
|
130
136
|
|
131
|
-
# Add the logger device to the default options after it's been loaded
|
132
|
-
WordNet::DEFAULT_DB_OPTIONS.merge!( :logger => [Loggability[WordNet]] )
|
133
|
-
|
134
|
-
|
135
137
|
### Get the Sequel URI of the default database, if it's installed.
|
136
138
|
def self::default_db_uri
|
137
|
-
|
138
|
-
|
139
|
-
# Try to load the default database gem, ignoring it if it's not installed.
|
140
|
-
begin
|
141
|
-
gem 'wordnet-defaultdb'
|
142
|
-
rescue Gem::LoadError
|
143
|
-
end
|
144
|
-
|
145
|
-
# Now try the gem datadir first, and fall back to a local installation of the
|
146
|
-
# default db
|
147
|
-
datadir = nil
|
148
|
-
if Gem.datadir( 'wordnet-defaultdb' )
|
149
|
-
datadir = Pathname( Gem.datadir('wordnet-defaultdb') )
|
150
|
-
else
|
151
|
-
self.log.warn " no defaultdb gem; looking for the development database"
|
152
|
-
datadir = Pathname( __FILE__ ).dirname.parent.parent +
|
153
|
-
'wordnet-defaultdb/data/wordnet-defaultdb'
|
154
|
-
end
|
155
|
-
|
156
|
-
dbfile = datadir + 'wordnet30.sqlite'
|
157
|
-
self.log.debug " dbfile is: %s" % [ dbfile ]
|
158
|
-
|
159
|
-
if dbfile.exist?
|
160
|
-
return "sqlite:#{dbfile}"
|
139
|
+
if defined?( WordNet::DefaultDB )
|
140
|
+
return WordNet::DefaultDB.uri
|
161
141
|
else
|
162
142
|
return nil
|
163
143
|
end
|
@@ -181,6 +161,13 @@ class WordNet::Lexicon
|
|
181
161
|
|
182
162
|
@db.sql_log_level = :debug
|
183
163
|
WordNet::Model.db = @db
|
164
|
+
WordNet::Model.descendents.each do |subclass|
|
165
|
+
self.log.debug "Switching DB for %p to %p" % [ subclass, @db ]
|
166
|
+
subclass.dataset = @db[ subclass.table_name ]
|
167
|
+
end
|
168
|
+
|
169
|
+
# Add the logger device after it's been loaded
|
170
|
+
@db.logger = Loggability[ self.class ]
|
184
171
|
end
|
185
172
|
|
186
173
|
|
@@ -189,7 +176,7 @@ class WordNet::Lexicon
|
|
189
176
|
uri = WordNet::Lexicon.default_db_uri or raise WordNet::LexiconError,
|
190
177
|
"No default WordNetSQL database! You can install it via the " +
|
191
178
|
"wordnet-defaultdb gem, or download a version yourself from " +
|
192
|
-
"http://sourceforge.net/
|
179
|
+
"http://sqlunet.sourceforge.net/"
|
193
180
|
@db = self.connect( uri, options )
|
194
181
|
end
|
195
182
|
|
@@ -277,7 +264,7 @@ class WordNet::Lexicon
|
|
277
264
|
### definition using a LIKE query.
|
278
265
|
###
|
279
266
|
def lookup_synsets( word, *args )
|
280
|
-
dataset = WordNet::Synset.filter( :
|
267
|
+
dataset = WordNet::Synset.filter( words: WordNet::Word.filter(lemma: word.to_s) )
|
281
268
|
self.log.debug "Looking up synsets for %p" % [ word.to_s ]
|
282
269
|
|
283
270
|
# Add filters to the dataset for each argument
|
@@ -287,11 +274,11 @@ class WordNet::Lexicon
|
|
287
274
|
|
288
275
|
when Integer
|
289
276
|
self.log.debug " limiting to sense %d" % [ arg ]
|
290
|
-
dataset = dataset.limit( 1, arg-1 )
|
277
|
+
dataset = dataset.order( :synsetid ).limit( 1, arg-1 )
|
291
278
|
|
292
279
|
when Range
|
293
280
|
self.log.debug " limiting to range of senses: %p" % [ arg ]
|
294
|
-
dataset = dataset.limit( arg.entries.length, arg.begin - 1 )
|
281
|
+
dataset = dataset.order( :synsetid ).limit( arg.entries.length, arg.begin - 1 )
|
295
282
|
|
296
283
|
when Regexp
|
297
284
|
self.log.debug " filter: definition =~ %p" % [ arg ]
|