-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell interface to the WordNet database -- -- A pure-Haskell interface to the WordNet lexical database of English. -- Depends on the WordNet database, but not on the WordNet source code. @package WordNet @version 0.1.2 -- | This is the top level module to the Haskell WordNet interface. -- -- This module is maintained at: -- http://www.isi.edu/~hdaume/HWordNet/. -- -- This is the only module in the WordNet package you need to import. The -- others provide utility functions and primitives that this module is -- based on. -- -- More information about WordNet is available at: -- http://http://www.cogsci.princeton.edu/~wn/. module NLP.WordNet -- | In actuality this type is: -- --
-- type WN a = (?wne :: WordNetEnv) => a ---- -- but Haddock cannot parse this at this time. type WN a = a type WN a = (?wne :: WordNetEnv) => a -- | A Word is just a String. type Word = String -- | The basic part of speech type, either a Noun, Verb, -- Adjective or Adverb. data POS Noun :: POS Verb :: POS Adj :: POS Adv :: POS -- | The Overview type is the return type which gives you an -- overview of a word, for all sense and for all parts of speech. data Overview -- | Given an Overview, this will tell you how many noun senses the -- searched-for word has. numNounSenses :: Overview -> Int -- | Given an Overview, this will tell you how many verb senses the -- searched-for word has. numVerbSenses :: Overview -> Int -- | Given an Overview, this will tell you how many adjective senses -- the searched-for word has. numAdjSenses :: Overview -> Int -- | Given an Overview, this will tell you how many adverb senses -- the searched-for word has. numAdvSenses :: Overview -> Int -- | Given an Overview, this will tell you how many times this word -- was tagged as a noun. taggedCountNounSenses :: Overview -> Int -- | Given an Overview, this will tell you how many times this word -- was tagged as a verb. taggedCountVerbSenses :: Overview -> Int -- | Given an Overview, this will tell you how many times this word -- was tagged as an adjective. taggedCountAdjSenses :: Overview -> Int -- | Given an Overview, this will tell you how many times this word -- was tagged as an adverb. taggedCountAdvSenses :: Overview -> Int data WordNetEnv -- | This will give you the current release of the WordNet databases we are -- using (if we know). getReleaseVersion :: WN (Maybe String) -- | This will give you the directory from which the databases are being -- read. getDataDirectory :: WN FilePath -- | A SenseType is a way of controlling search. Either you specify -- a certain sense (using SenseNumber n, or, since -- SenseType is an instance of Num, you can juse use -- n) or by searching using all senses, through -- AllSenses. The Num instance performs standard arithmetic -- on SenseNumbers, and fromInteger yields a -- SenseNumber (always), but any arithmetic involving -- AllSenses returns AllSenses. data SenseType AllSenses :: SenseType SenseNumber :: Int -> SenseType -- | The basic type which holds search results. Its Show instance -- simply shows the string corresponding to the associated WordNet -- synset. data SearchResult -- | This provides (maybe) the associated overview for a SearchResult. The -- Overview is only available if this SearchResult was -- derived from a real search, rather than lookupKey. srOverview :: SearchResult -> Maybe Overview -- | This provides (maybe) the associated sense number for a SearchResult. -- The SenseType is only available if this SearchResult was -- derived from a real search, rather than lookupKey. srSenseNum :: SearchResult -> Maybe SenseType -- | This gives the part of speech of a SearchResult srPOS :: SearchResult -> POS -- | This gives the definition of the sense of a word in a -- SearchResult. srDefinition :: SearchResult -> String -- | This gives a list of senses the word has. srSenses :: SearchResult -> [SenseType] -- | This gives the actual words used to describe the Synset of a search -- result. srWords :: SearchResult -> SenseType -> [Word] -- | This gives all the Forms a word has (i.e., what sort of -- relations hold between it and other words. srForms :: SearchResult -> [Form] -- | This provides a Key (which can be searched for using -- lookupKey) for a SearchResult under a given form. For -- instance, it can be used to get all Hypernyms of a given word. srFormKeys :: SearchResult -> Form -> [Key] -- | This converts a SearchResult into a Key. srToKey :: SearchResult -> Key -- | The different types of relations which can hold between WordNet -- Synsets. data Form Antonym :: Form Hypernym :: Form Hyponym :: Form Entailment :: Form Similar :: Form IsMember :: Form IsStuff :: Form IsPart :: Form HasMember :: Form HasStuff :: Form HasPart :: Form Meronym :: Form Holonym :: Form CauseTo :: Form PPL :: Form SeeAlso :: Form Attribute :: Form VerbGroup :: Form Derivation :: Form Classification :: Form Class :: Form Nominalization :: Form Syns :: Form Freq :: Form Frames :: Form Coords :: Form Relatives :: Form HMeronym :: Form HHolonym :: Form WNGrep :: Form OverviewForm :: Form Unknown :: Form -- | A Key is a simple pointer into the database, which can be -- followed using lookupKey. data Key -- | Takes a WordNet command, initializes the environment and returns the -- results in the IO monad. WordNet warnings are printed to -- stderr. runWordNet :: WN a -> IO a -- | Takes a WordNet command, initializes the environment and returns the -- results in the IO monad. WordNet warnings are ignored. runWordNetQuiet :: WN a -> IO a -- | Takes a FilePath to the directory holding WordNet and a function to do -- with warnings and a WordNet command, initializes the environment and -- returns the results in the IO monad. runWordNetWithOptions :: Maybe FilePath -> Maybe (String -> Exception -> IO ()) -> WN a -> IO a -- | Gives you a WordNetEnv which can be passed to runs or -- used as the implicit parameter to the other WordNet functions. initializeWordNet :: IO WordNetEnv -- | Takes a FilePath to the directory holding WordNet and a function to do -- with warnings, initializes the environment and returns a -- WordNetEnv as in initializeWordNet. initializeWordNetWithOptions :: Maybe FilePath -> Maybe (String -> Exception -> IO ()) -> IO WordNetEnv -- | Closes all the handles associated with the WordNetEnv. Since -- the functions provided in the NLP.WordNet.WordNet module are -- lazy, you shouldn't do this until you're really done. Or -- perhaps not at all (GC will eventually kick in). closeWordNet :: WordNetEnv -> IO () -- | This simply takes a WordNetEnv and provides it as the implicit -- parameter to the WordNet command. runs :: WordNetEnv -> WN a -> a -- | This takes a word and returns an Overview of all its senses for -- all parts of speech. getOverview :: WN (Word -> Overview) -- | This takes an Overview (see getOverview), a POS -- and a SenseType and returns a list of search results. If -- SenseType is AllSenses, there will be one -- SearchResult in the results for each valid sense. If -- SenseType is a single sense number, there will be at most one -- element in the result list. searchByOverview :: WN (Overview -> POS -> SenseType -> [SearchResult]) -- | This takes a Word, a POS and a SenseType and -- returns the equivalent of first running getOverview and then -- searchByOverview. search :: WN (Word -> POS -> SenseType -> [SearchResult]) -- | This takes a Key (see srToKey and srFormKeys) and -- looks it up in the databse. lookupKey :: WN (Key -> SearchResult) -- | This takes a Form and a SearchResult and returns all -- SearchResult related to the given one by the given Form. -- -- For example: -- --
-- relatedBy Antonym (head (search "happy" Adj 1)) -- [<unhappy>] -- -- relatedBy Hypernym (head (search "dog" Noun 1)) -- [<canine canid>] --relatedBy :: WN (Form -> SearchResult -> [SearchResult]) -- | This is a utility function to build lazy trees from a function and a -- root. closure :: (a -> [a]) -> a -> Tree a -- | This enables Form-based trees to be built. -- -- For example: -- --
-- take 5 $ flatten $ closureOn Antonym (head (search "happy" Adj AllSenses))) -- [<happy>,<unhappy>,<happy>,<unhappy>,<happy>] ---- --
-- closureOn Hypernym (head (search "dog" Noun 1))) -- - <dog domestic_dog Canis_familiaris> --- <canine canid> --- <carnivore>\-- > --- <placental placental_mammal eutherian eutherian_mammal> --- <mammal>\-- > --- <vertebrate craniate> --- <chordate> --- <animal animate_being beast\-- > brute creature fauna> --- <organism being> --- <living_thing animate_thing>\-- > --- <object physical_object> --- <entity> --closureOn :: WN (Form -> SearchResult -> Tree SearchResult) -- | This function takes an empty bag (in particular, this is to specify -- what type of search to perform), and the results of two search. It -- returns (maybe) the lowest point at which the two terms meet in the -- WordNet hierarchy. -- -- For example: -- --
-- meet emptyQueue (head $ search "cat" Noun 1) (head $ search "dog" Noun 1) -- Just <carnivore> ---- --
-- meet emptyQueue (head $ search "run" Verb 1) (head $ search "walk" Verb 1) -- Just <travel go move locomote> --meet :: (Bag b (Tree SearchResult)) => WN (b (Tree SearchResult) -> SearchResult -> SearchResult -> Maybe SearchResult) -- | This function takes an empty bag (see meet), and the results of -- two searches. It returns (maybe) the lowest point at which the two -- terms meet in the WordNet hierarchy, as well as the paths leading from -- each term to this common term. -- -- For example: -- --
-- meetPaths emptyQueue (head $ search "cat" Noun 1) (head $ search "dog" Noun 1) -- Just ([<cat true_cat>,<feline felid>],<carnivore>,[<canine canid>,<dog domestic_dog Canis_familiaris>]) ---- --
-- meetPaths emptyQueue (head $ search "run" Verb 1) (head $ search "walk" Verb 1) -- Just ([<run>,<travel_rapidly speed hurry zip>],<travel go move locomote>,[<walk>]) ---- -- This is marginally less efficient than just using meet, since -- it uses linear-time lookup for the visited sets, whereas meet -- uses log-time lookup. meetPaths :: (Bag b (Tree SearchResult)) => WN (b (Tree SearchResult) -> SearchResult -> SearchResult -> Maybe ([SearchResult], SearchResult, [SearchResult])) meetSearchPaths :: (Bag b (Tree SearchResult)) => b (Tree SearchResult) -> Tree SearchResult -> Tree SearchResult -> Maybe ([SearchResult], SearchResult, [SearchResult]) -- | A simple bag class for our meet implementation. class Bag b a emptyBag :: (Bag b a) => b a addToBag :: (Bag b a) => b a -> a -> b a addListToBag :: (Bag b a) => b a -> [a] -> b a isEmptyBag :: (Bag b a) => b a -> Bool splitBag :: (Bag b a) => b a -> (a, b a) -- | An empty queue. emptyQueue :: Queue a -- | An empty stack. emptyStack :: [a] instance (Show a) => Show (Queue a) instance Bag Queue a instance Bag [] a