From: Michael Granger Date: 2003-09-15T08:00:08+09:00 Subject: [ANN] Linguistics 0.02 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 # => # # Fetch the synset for the first verb sense of "balance" "balance".en.synset( :verb ) # => # # Fetch the second noun sense "balance".en.synset( 2, :noun ) # => # # Fetch the second noun sense's hypernyms (more-general words, like a superclass) "balance".en.synset( 2, :noun ).hypernyms # => [#] # A simpler way of doing the same thing: "balance".en.hypernyms( 2, :noun ) # => [#] # Fetch the first hypernym's hypernyms "balance".en.synset( 2, :noun ).hypernyms.first.hypernyms # => [#] # 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) # => # # 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 # => #, @lword=#], @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: You can also download the module directly from: Thanks for your time. -- Michael Granger Rubymage, Believer, Architect The FaerieMUD Consortium