wordnet 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 ]
|