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
- ordinalNotSpelled :: Int -> Text
- ordinal :: Int -> Text
- defaultNounPlural :: Text -> Text
- defaultVerbStuff :: Text -> (Text, Text)
- defaultPossesive :: Text -> Text
- anNumerals :: [Text]
- indefiniteDet :: Text -> Text
- wantsAn :: Text -> Bool
- acronymWantsAn :: Text -> Bool
- looksLikeAcronym :: Text -> Bool
- startsWithAcronym :: Text -> Bool
- hasSibilantSuffix :: Text -> Bool
- hasSemivowelPrefix :: Text -> Bool
- hasVowel_U_Prefix :: Text -> Bool
- hasCySuffix :: Text -> Bool
- hasCoSuffix :: 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"
ordinalNotSpelled :: Int -> TextSource
ordinalNotSpelled 1 == "1st" ordinalNotSpelled 2 == "2nd" ordinalNotSpelled 11 == "11th"
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 http:en.wikipedia.orgwikiEnglish_plural
defaultVerbStuff :: Text -> (Text, Text)Source
Heuristics for 3rd person singular and past participle for an unknown regular verb. Doubling of final consonants can be handled via a table of (partially) irrefular verbs.
defaultVerbStuff "walk" == ("walks", "walked") defaultVerbStuff "push" == ("pushes", "pushed") defaultVerbStuff "play" == ("plays", "played") defaultVerbStuff "cry" == ("cries", "cried")
defaultPossesive :: Text -> TextSource
Heuristics for a possesive form for an unknown noun.
defaultPossesive "pass" == "pass'" defaultPossesive "SOS" == "SOS'" defaultPossesive "Mr Blinkin'" == "Mr Blinkin's" defaultPossesive "cry" == "cry's"
Determiners
anNumerals :: [Text]Source
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 "x" == False 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.
hasVowel_U_Prefix :: Text -> BoolSource
Starts with a vowel-y U sound
hasCySuffix :: Text -> BoolSource
Last two letters are a consonant and y
.
hasCoSuffix :: Text -> BoolSource
Last two letters are a consonant and o
.
isConsonant :: Char -> BoolSource
Is a consonant.