Portability | portable |
---|---|
Stability | experimental |
Maintainer | eric.kow@gmail.com |
Safe Haskell | None |
Simple default rules for English morphology
- commas :: Text -> [Text] -> Text
- cardinal :: Int -> Text
- ordinal :: Int -> Text
- defaultNounPlural :: Text -> Text
- defaultVerbStuff :: Text -> (Text, Text)
- indefiniteDet :: Text -> Text
- wantsAn :: Text -> Bool
- acronymWantsAn :: Text -> Bool
- looksLikeAcronym :: Text -> Bool
- startsWithAcronym :: Text -> Bool
- hasSibilantSuffix :: Text -> Bool
- hasSemivowelPrefix :: Text -> Bool
- hasCySuffix :: Text -> Bool
- isVowel :: Char -> Bool
- isLetterWithInitialVowelSound :: Char -> Bool
- isConsonant :: Char -> Bool
Punctuation
commas :: Text -> [Text] -> TextSource
No Oxford commas, alas.
commas "and" "foo bar" == "foo and bar" commas "and" "foo, bar, baz" == "foo, bar and baz"
Numbers
cardinal 1 == "one" cardinal 2 == "two" cardinal 3 == "three" cardinal 11 == "11"
ordinal 1 == "first" ordinal 2 == "second" ordinal 3 == "third" ordinal 11 == "11th" ordinal 42 == "42nd"
Nouns and verbs
defaultNounPlural :: Text -> TextSource
Heuristics for English plural for an unknown noun
defaultNounPlural "egg" == "eggs" defaultNounPlural "patch" == "patches" defaultNounPlural "boy" == "boys" defaultNounPlural "spy" == "spies" defaultNounPlural "thesis" == "theses"
http:www.paulnoll.comBooksClear-English/English-plurals-1.html
defaultVerbStuff :: Text -> (Text, Text)Source
Heuristics for 3rd person singular and past participle for an unknown regular verb
defaultVerbStuff "walk" == ("walks", "walked") defaultVerbStuff "push" == ("pushes", "pushed") defaultVerbStuff "play" == ("plays", "played") defaultVerbStuff "cry" == ("cries", "cried")
Determiners
indefiniteDet :: Text -> TextSource
indefiniteDet "dog" == "a" indefiniteDet "egg" == "an" indefiniteDet "ewe" == "a" indefiniteDet "ewok" == "an" indefiniteDet "8th" == "an"
True if the indefinite determiner for a word would normally be
an
as opposed to a
acronymWantsAn :: Text -> BoolSource
Acronyms
looksLikeAcronym :: Text -> BoolSource
True if all upper case from second letter and up
looksLikeAcronym "DNA" == True looksLikeAcronym "tRNA" == True looksLikeAcronym "DnA" == False
startsWithAcronym :: Text -> BoolSource
True if the first word (separating on either - or space) looks like an acronym
Sounds
hasSibilantSuffix :: Text -> BoolSource
Ends with a sh sound
hasSemivowelPrefix :: Text -> BoolSource
Starts with a semivowel
hasCySuffix :: Text -> BoolSource
Last two letters are a consonant and y
isConsonant :: Char -> BoolSource
Is a consonant