[ANN] Linguistics 0.02

M

Michael Granger

Hi fellow Rubyists,

I'd like to announce the second release of the Linguistics module, a
generic, language-neutral framework for extending Ruby objects with
linguistic methods.

This release fixes some of the bugs that were discovered since the last
version, and adds a few new features:

== Infinitives

New in version 0.02:

"leaving".en.infinitive
# => "leave"

"left".en.infinitive
# => "leave"

"leaving".en.infinitive.suffix
# => "ing"


== WordNetÆ Integration

Also new in version 0.02, if you have the Ruby-WordNet module
installed, you can
look up WordNet synsets using the Linguistics interface:

# Test to be sure the WordNet module loaded okay.
Linguistics::EN.has_wordnet?
# => true

# Fetch the default synset for the word "balance"
"balance".synset
# => #<WordNet::Synset:0x40376844 balance (noun): "a state of
equilibrium"
(derivations: 3, antonyms: 1, hypernyms: 1, hyponyms: 3)>

# Fetch the synset for the first verb sense of "balance"
"balance".en.synset( :verb )
# => #<WordNet::Synset:0x4033f448 balance, equilibrate, equilibrize,
equilibrise
(verb): "bring into balance or equilibrium; "She has to balance work
and her
domestic duties"; "balance the two weights"" (derivations: 7,
antonyms: 1,
verbGroups: 2, hypernyms: 1, hyponyms: 5)>

# Fetch the second noun sense
"balance".en.synset( 2, :noun )
# => #<WordNet::Synset:0x404ebb24 balance (noun): "a scale for
weighing; depends
on pull of gravity" (hypernyms: 1, hyponyms: 5)>

# Fetch the second noun sense's hypernyms (more-general words, like a
superclass)
"balance".en.synset( 2, :noun ).hypernyms
# => [#<WordNet::Synset:0x404e5620 scale, weighing machine (noun): "a
measuring
instrument for weighing; shows amount of mass" (derivations: 2,
hypernyms: 1,
hyponyms: 2)>]

# A simpler way of doing the same thing:
"balance".en.hypernyms( 2, :noun )
# => [#<WordNet::Synset:0x404e5620 scale, weighing machine (noun): "a
measuring
instrument for weighing; shows amount of mass" (derivations: 2,
hypernyms: 1,
hyponyms: 2)>]

# Fetch the first hypernym's hypernyms
"balance".en.synset( 2, :noun ).hypernyms.first.hypernyms
# => [#<WordNet::Synset:0x404c60b8 measuring instrument, measuring
system,
measuring device (noun): "instrument that shows the extent or amount
or quantity
or degree of something" (hypernyms: 1, hyponyms: 83)>]

# Find the synset to which both the second noun sense of "balance"
and the
# default sense of "shovel" belong.
("balance".en.synset( 2, :noun ) | "shovel".en.synset)
# => #<WordNet::Synset:0x40473da4 instrumentality, instrumentation
(noun): "an
artifact (or system of artifacts) that is instrumental in
accomplishing some
end" (derivations: 1, hypernyms: 1, hyponyms: 13)>

# Fetch just the words for the other kinds of "instruments"
"instrument".en.hyponyms.collect {|synset| synset.words}.flatten
# => ["analyzer", "analyser", "cautery", "cauterant", "drafting
instrument",
"extractor", "instrument of execution", "instrument of punishment",
"measuring
instrument", "measuring system", "measuring device", "medical
instrument",
"navigational instrument", "optical instrument", "plotter",
"scientific
instrument", "sonograph", "surveying instrument", "surveyor's
instrument",
"tracer", "weapon", "arm", "weapon system", "whip"]

There are many more WordNet methods supported – too many to list here.
See the
documentation for the complete list.


== LinkParser Integration

Another new feature in version 0.02 is integration with the Ruby
version of the
CMU Link Grammar Parser by Martin Chase. If you have the LinkParser
module
installed, you can create linkages from English sentences that let you
query for
parts of speech:

# Test to see whether or not the link parser is loaded.
Linguistics::EN.has_link_parser?
# => true

# Diagram the first linkage for a test sentence
puts "he is a big dog".sentence.linkages.first.to_s
+---O*---+
| +--Ds--+
+Ss+ | +-A-+
| | | | |
he is a big dog

# Find the verb in the sentence
"he is a big dog".en.sentence.verb.to_s
# => "is"

# Combined infinitive + LinkParser: Find the infinitive form of the
verb of the
given sentence.
"he is a big dog".en.sentence.verb.infinitive
# => "be"

# Find the direct object of the sentence
"he is a big dog".en.sentence.object.to_s
# => "dog"

# Look at the raw LinkParser::Word for the direct object of the
sentence.
"he is a big dog".en.sentence.object
# => #<LinkParser::Word:0x403da0a0 @definition=[[{@A-}, Ds-, {@M+},
J-], [{@A-},
Ds-, {@M+}, Os-], [{@A-}, Ds-, {@M+}, Ss+, {@CO-}, {C-}], [{@A-},
Ds-, {@M+},
Ss+, R-], [{@A-}, Ds-, {@M+}, SIs-], [{@A-}, Ds-, {R+}, {Bs+}, J-],
[{@A-}, Ds-,
{R+}, {Bs+}, Os-], [{@A-}, Ds-, {R+}, {Bs+}, Ss+, {@CO-}, {C-}],
[{@A-}, Ds-,
{R+}, {Bs+}, Ss+, R-], [{@A-}, Ds-, {R+}, {Bs+}, SIs-]], @right=[],
@suffix="",
@left=[#<LinkParser::Connection:0x403da028
@rword=#<LinkParser::Word:0x403da0a0
...>, @lword=#<LinkParser::Word:0x403da0b4 @definition=[[Ss-, O+,
{@MV+}], [Ss-,
B-, {@MV+}], [Ss-, P+], [Ss-, AF-], [RS-, Bs-, O+, {@MV+}], [RS-,
Bs-, B-,
{@MV+}], [RS-, Bs-, P+], [RS-, Bs-, AF-], [{Q-}, SIs+, O+, {@MV+}],
[{Q-}, SIs+,
B-, {@MV+}], [{Q-}, SIs+, P+], [{Q-}, SIs+, AF-]],
@right=[#<LinkParser::Connection:0x403da028 ...>], @suffix="",
@left=[],
@name="is", @position=1>, @subName="*", @name="O", @length=3>],
@name="dog",
@position=4>

# Combine WordNet + LinkParser to find the definition of the direct
object of
# the sentence
"he is a big dog".en.sentence.object.gloss
# => "a member of the genus Canis (probably descended from the common
wolf) that
has been domesticated by man since prehistoric times; occurs in many
breeds;
\"the dog barked all night\""


To find out more, visit the project's home page:

<http://www.devEiate.org/code/linguistics.html>

You can also download the module directly from:

<http://www.devEiate.org/code/Linguistics-0.02.tar.gz>

Thanks for your time.
 
M

Michael Garriss

Michael said:
Hi fellow Rubyists,

I'd like to announce the second release of the Linguistics module, a
generic, language-neutral framework for extending Ruby objects with
linguistic methods.

This release fixes some of the bugs that were discovered since the
last version, and adds a few new features:

<snip>

To find out more, visit the project's home page:

<http://www.devEiate.org/code/linguistics.html>

You can also download the module directly from:

<http://www.devEiate.org/code/Linguistics-0.02.tar.gz>

Thanks for your time.


This is really incredible. My hat is off to you.

Regards,
Michael
 
H

Harry Ohlsen

self congratulation?

Almost, but not quite. The author is Michael Granger, the person who was impressed was Michael Garriss ... unless, of course, MichaelGarriss = MichaelGranger.dup :).
 
M

maillist

Almost, but not quite. The author is Michael Granger, the person who was impressed was Michael Garriss ... unless, of course, MichaelGarriss = MichaelGranger.dup :).

lol, didnt see that.
 
M

Michael Garriss

Harry said:
Almost, but not quite. The author is Michael Granger, the person who
was impressed was Michael Garriss ... unless, of course,
MichaelGarriss = MichaelGranger.dup :).

Never yell Michael in a crowded room. ;)

Michael
 
J

Josef 'Jupp' Schugt

Saluton!

* Michael Garriss; 2003-09-15, 16:27 UTC:
Never yell Michael in a crowded room. ;)

Would the effect be similar to yelling 'Mr. Kim!' in a crowded room
in Korea?

Gis,

Josef 'Jupp' Schugt
 
H

Harry Ohlsen

Michael said:
Never yell Michael in a crowded room. ;)

Slightly OT, but that reminded me of my youth ... quite some time ago ... when we shared a 1 MIPS minicomputer between just under 100 students. More than once, when the system was very loaded and I needed my compile to get done *today* rather than tomorrow, I typed the command, walked into the middle of the terminal room, and yelled an expletive.

Everyone would stop typing to see what was going on. Worked like a charm :).
 
M

Michael Granger

What url location should be used to obtain the required "readline.rb"
module?

The module itself doesn't require readline, so I'm guessing you're
asking about the install.rb script. It doesn't actually require
readline to be installed; that's detritus that I neglected to delete
after converting an installer from another project. You can delete the
whole BEGIN block at the top of install.rb, which should fix the
problem.

Readline comes with Ruby, by the way. Your install must not have
included it for some reason.
 
U

U.Nakamura

Hello,

In message "ruby 1.8 mswin question"
| The problem I'm having is I installed soap4r. The samples work fine except
| that whenever I start the scripts with ruby.exe I get a message box that
| says the application failed to start because iconv.dll is missing. But then
| the programs seem to work fine when I click the message box.
|
| What is this dll for? Can I disable this message or am I missing something I
| must install? Could somebody direct me to where I can track down a win32
| binary version of the program I need?

iconv is codeset conversion library.
You can get binary from here:
http://www.meadowy.org/meadow/dists/snapshot/iconv-1.8.win32.zip

Regards,
 
E

Ed Baker

Hmmmm. I downloaded the module, but when I run rdoc on it, I don't
seem to get the same results. Especially, the nice way the source
blocks are displayed.

Is there a guide to using rdoc somewhere?
 
M

Michael Granger

Hmmmm. I downloaded the module, but when I run rdoc on it, I don't
seem to get the same results. Especially, the nice way the source
blocks are displayed.

Is there a guide to using rdoc somewhere?

I don't know of a guide, but I use an alternate wrapper around the RDoc
library that reads a CATALOG file and auto-generates the command line
for me, as well as things like automatically uploading it to my
webserver, etc. The script is in the CVS version of the module in the
"docs" directory, but the command line equivalent is:

rdoc --all --inline-source --fmt html --include docs --template css2 \
--title "Ruby Linguistics Module" --tab-width 4 --main README \
--webcvs http://cvs.FaerieMUD.org/cgi/viewcvs.cgi/Linguistics/ \
lib/linguistics.rb lib/linguistics/en.rb \
lib/linguistics/en/linkparser.rb lib/linguistics/en/infinitive.rb \
lib/linguistics/en/wordnet.rb README README.english TODO ChangeLog


Hope this helps.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top