haskell-conll 0.1.0.1 → 0.1.0.2
raw patch · 9 files changed
+272/−267 lines, 9 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.ConllToken: [$sel:_tnFeats:ConllToken] :: ConllToken cpos fpos ger feats lemma -> feats
- Data.ConllToken: [$sel:_tnHead:ConllToken] :: ConllToken cpos fpos ger feats lemma -> Int
- Data.ConllToken: [$sel:_tnHeadProj:ConllToken] :: ConllToken cpos fpos ger feats lemma -> Text
- Data.ConllToken: [$sel:_tnId:ConllToken] :: ConllToken cpos fpos ger feats lemma -> Int
- Data.ConllToken: [$sel:_tnLemma:ConllToken] :: ConllToken cpos fpos ger feats lemma -> lemma
- Data.ConllToken: [$sel:_tnPosCG:ConllToken] :: ConllToken cpos fpos ger feats lemma -> cpos
- Data.ConllToken: [$sel:_tnPosFG:ConllToken] :: ConllToken cpos fpos ger feats lemma -> fpos
- Data.ConllToken: [$sel:_tnRel:ConllToken] :: ConllToken cpos fpos ger feats lemma -> ger
- Data.ConllToken: [$sel:_tnRelProj:ConllToken] :: ConllToken cpos fpos ger feats lemma -> Text
- Data.ConllToken: [$sel:_tnWord:ConllToken] :: ConllToken cpos fpos ger feats lemma -> Text
- Data.ConllToken: instance (GHC.Classes.Eq ger, GHC.Classes.Eq feats, GHC.Classes.Eq fpos, GHC.Classes.Eq cpos, GHC.Classes.Eq lemma) => GHC.Classes.Eq (Data.ConllToken.ConllToken cpos fpos ger feats lemma)
- Data.ConllToken: instance (GHC.Classes.Ord ger, GHC.Classes.Ord feats, GHC.Classes.Ord fpos, GHC.Classes.Ord cpos, GHC.Classes.Ord lemma) => GHC.Classes.Ord (Data.ConllToken.ConllToken cpos fpos ger feats lemma)
- Data.ConllToken: instance (GHC.Read.Read ger, GHC.Read.Read feats, GHC.Read.Read fpos, GHC.Read.Read cpos, GHC.Read.Read lemma) => GHC.Read.Read (Data.ConllToken.ConllToken cpos fpos ger feats lemma)
- Data.ConllToken: instance (GHC.Show.Show ger, GHC.Show.Show feats, GHC.Show.Show fpos, GHC.Show.Show cpos, GHC.Show.Show lemma) => GHC.Show.Show (Data.ConllToken.ConllToken cpos fpos ger feats lemma)
- Data.ParsedSentence: [$sel:_headToNode:ParsedSentence] :: ParsedSentence cpos fpos ger feats lemma -> Map Int [SyntaxtTree cpos fpos ger feats lemma]
- Data.ParsedSentence: [$sel:_indexToNode:ParsedSentence] :: ParsedSentence cpos fpos ger feats lemma -> Map Int (SyntaxtTree cpos fpos ger feats lemma)
- Data.ParsedSentence: [$sel:_rootNode:ParsedSentence] :: ParsedSentence cpos fpos ger feats lemma -> SyntaxtTree cpos fpos ger feats lemma
+ Data.ConllToken: [_tnFeats] :: ConllToken cpos fpos ger feats lemma -> feats
+ Data.ConllToken: [_tnHeadProj] :: ConllToken cpos fpos ger feats lemma -> Text
+ Data.ConllToken: [_tnHead] :: ConllToken cpos fpos ger feats lemma -> Int
+ Data.ConllToken: [_tnId] :: ConllToken cpos fpos ger feats lemma -> Int
+ Data.ConllToken: [_tnLemma] :: ConllToken cpos fpos ger feats lemma -> lemma
+ Data.ConllToken: [_tnPosCG] :: ConllToken cpos fpos ger feats lemma -> cpos
+ Data.ConllToken: [_tnPosFG] :: ConllToken cpos fpos ger feats lemma -> fpos
+ Data.ConllToken: [_tnRelProj] :: ConllToken cpos fpos ger feats lemma -> Text
+ Data.ConllToken: [_tnRel] :: ConllToken cpos fpos ger feats lemma -> ger
+ Data.ConllToken: [_tnWord] :: ConllToken cpos fpos ger feats lemma -> Text
+ Data.ConllToken: instance (GHC.Classes.Eq lemma, GHC.Classes.Eq cpos, GHC.Classes.Eq fpos, GHC.Classes.Eq feats, GHC.Classes.Eq ger) => GHC.Classes.Eq (Data.ConllToken.ConllToken cpos fpos ger feats lemma)
+ Data.ConllToken: instance (GHC.Classes.Ord lemma, GHC.Classes.Ord cpos, GHC.Classes.Ord fpos, GHC.Classes.Ord feats, GHC.Classes.Ord ger) => GHC.Classes.Ord (Data.ConllToken.ConllToken cpos fpos ger feats lemma)
+ Data.ConllToken: instance (GHC.Read.Read lemma, GHC.Read.Read cpos, GHC.Read.Read fpos, GHC.Read.Read feats, GHC.Read.Read ger) => GHC.Read.Read (Data.ConllToken.ConllToken cpos fpos ger feats lemma)
+ Data.ConllToken: instance (GHC.Show.Show lemma, GHC.Show.Show cpos, GHC.Show.Show fpos, GHC.Show.Show feats, GHC.Show.Show ger) => GHC.Show.Show (Data.ConllToken.ConllToken cpos fpos ger feats lemma)
+ Data.ParsedSentence: [_headToNode] :: ParsedSentence cpos fpos ger feats lemma -> Map Int [SyntaxtTree cpos fpos ger feats lemma]
+ Data.ParsedSentence: [_indexToNode] :: ParsedSentence cpos fpos ger feats lemma -> Map Int (SyntaxtTree cpos fpos ger feats lemma)
+ Data.ParsedSentence: [_rootNode] :: ParsedSentence cpos fpos ger feats lemma -> SyntaxtTree cpos fpos ger feats lemma
+ Data.TagLabel: -- | Generic representation type
+ Data.TagLabel: L1 :: f p -> (:+:)
+ Data.TagLabel: R1 :: g p -> (:+:)
+ Data.TagLabel: class Generic a where {
+ Data.TagLabel: data (:+:) (f :: k -> Type) (g :: k -> Type) (p :: k) :: forall k. () => k -> Type -> k -> Type -> k -> Type
+ Data.TagLabel: from :: Generic a => a -> Rep a x
+ Data.TagLabel: infixr 5 :+:
+ Data.TagLabel: to :: Generic a => Rep a x -> a
+ Data.TagLabel: type family Rep a :: Type -> Type;
+ Data.TagLabel: }
- Data.ConllToken: tnFeats :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n feats_ayNQ. Lens (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) (ConllToken cpos_av3j fpos_av3k ger_av3l feats_ayNQ lemma_av3n) feats_av3m feats_ayNQ
+ Data.ConllToken: tnFeats :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915 feats_ak18. Lens (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) (ConllToken cpos_a911 fpos_a912 ger_a913 feats_ak18 lemma_a915) feats_a914 feats_ak18
- Data.ConllToken: tnHead :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n. Lens' (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) Int
+ Data.ConllToken: tnHead :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915. Lens' (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) Int
- Data.ConllToken: tnHeadProj :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n. Lens' (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) Text
+ Data.ConllToken: tnHeadProj :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915. Lens' (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) Text
- Data.ConllToken: tnId :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n. Lens' (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) Int
+ Data.ConllToken: tnId :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915. Lens' (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) Int
- Data.ConllToken: tnLemma :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n lemma_ayNR. Lens (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_ayNR) lemma_av3n lemma_ayNR
+ Data.ConllToken: tnLemma :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915 lemma_ak19. Lens (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_ak19) lemma_a915 lemma_ak19
- Data.ConllToken: tnPosCG :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n cpos_ayNS. Lens (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) (ConllToken cpos_ayNS fpos_av3k ger_av3l feats_av3m lemma_av3n) cpos_av3j cpos_ayNS
+ Data.ConllToken: tnPosCG :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915 cpos_ak1a. Lens (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) (ConllToken cpos_ak1a fpos_a912 ger_a913 feats_a914 lemma_a915) cpos_a911 cpos_ak1a
- Data.ConllToken: tnPosFG :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n fpos_ayNT. Lens (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) (ConllToken cpos_av3j fpos_ayNT ger_av3l feats_av3m lemma_av3n) fpos_av3k fpos_ayNT
+ Data.ConllToken: tnPosFG :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915 fpos_ak1b. Lens (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) (ConllToken cpos_a911 fpos_ak1b ger_a913 feats_a914 lemma_a915) fpos_a912 fpos_ak1b
- Data.ConllToken: tnRel :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n ger_ayNU. Lens (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) (ConllToken cpos_av3j fpos_av3k ger_ayNU feats_av3m lemma_av3n) ger_av3l ger_ayNU
+ Data.ConllToken: tnRel :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915 ger_ak1c. Lens (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) (ConllToken cpos_a911 fpos_a912 ger_ak1c feats_a914 lemma_a915) ger_a913 ger_ak1c
- Data.ConllToken: tnRelProj :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n. Lens' (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) Text
+ Data.ConllToken: tnRelProj :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915. Lens' (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) Text
- Data.ConllToken: tnWord :: forall cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n. Lens' (ConllToken cpos_av3j fpos_av3k ger_av3l feats_av3m lemma_av3n) Text
+ Data.ConllToken: tnWord :: forall cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915. Lens' (ConllToken cpos_a911 fpos_a912 ger_a913 feats_a914 lemma_a915) Text
- Data.TagLabel: class (Ord label) => TagLabel label where labelMap = fmap to . fromList $ gLabelMap (Proxy :: Proxy (Rep label)) reverseLabelMap = fromList [(b, a) | (a, b) <- assocs labelMap]
+ Data.TagLabel: class (Ord label) => TagLabel label
- Data.TagLabel: fromLabelText :: (TagLabel label) => Text -> Maybe label
+ Data.TagLabel: fromLabelText :: TagLabel label => Text -> Maybe label
- Data.TagLabel: toLabelText :: (TagLabel label) => label -> Text
+ Data.TagLabel: toLabelText :: TagLabel label => label -> Text
- Model.PennTreebank: ClosePar :: (SpelledAs ")") -> POS
+ Model.PennTreebank: ClosePar :: SpelledAs ")" -> POS
- Model.PennTreebank: Colon :: (SpelledAs ":") -> POS
+ Model.PennTreebank: Colon :: SpelledAs ":" -> POS
- Model.PennTreebank: Coma :: (SpelledAs ",") -> POS
+ Model.PennTreebank: Coma :: SpelledAs "," -> POS
- Model.PennTreebank: Dash :: (SpelledAs "--") -> POS
+ Model.PennTreebank: Dash :: SpelledAs "--" -> POS
- Model.PennTreebank: Dollar :: (SpelledAs "$") -> POS
+ Model.PennTreebank: Dollar :: SpelledAs "$" -> POS
- Model.PennTreebank: LRB_ :: (SpelledAs "-LRB-") -> POS
+ Model.PennTreebank: LRB_ :: SpelledAs "-LRB-" -> POS
- Model.PennTreebank: OpenPar :: (SpelledAs "(") -> POS
+ Model.PennTreebank: OpenPar :: SpelledAs "(" -> POS
- Model.PennTreebank: PRP_Dollar :: (SpelledAs "PRP$") -> POS
+ Model.PennTreebank: PRP_Dollar :: SpelledAs "PRP$" -> POS
- Model.PennTreebank: Quotes :: (SpelledAs "''") -> POS
+ Model.PennTreebank: Quotes :: SpelledAs "''" -> POS
- Model.PennTreebank: Quotes2 :: (SpelledAs "``") -> POS
+ Model.PennTreebank: Quotes2 :: SpelledAs "``" -> POS
- Model.PennTreebank: RRB_ :: (SpelledAs "-RRB-") -> POS
+ Model.PennTreebank: RRB_ :: SpelledAs "-RRB-" -> POS
- Model.PennTreebank: Terminator :: (SpelledAs ".") -> POS
+ Model.PennTreebank: Terminator :: SpelledAs "." -> POS
- Model.PennTreebank: WP_Dollar :: (SpelledAs "WP$") -> POS
+ Model.PennTreebank: WP_Dollar :: SpelledAs "WP$" -> POS
- Model.UniversalTreebank: Acl_Relcl :: (SpelledAs "acl:relcl") -> REL
+ Model.UniversalTreebank: Acl_Relcl :: SpelledAs "acl:relcl" -> REL
- Model.UniversalTreebank: Cc_Preconj :: (SpelledAs "cc:preconj") -> REL
+ Model.UniversalTreebank: Cc_Preconj :: SpelledAs "cc:preconj" -> REL
- Model.UniversalTreebank: Compound_Pr :: (SpelledAs "compound:prt") -> REL
+ Model.UniversalTreebank: Compound_Pr :: SpelledAs "compound:prt" -> REL
- Model.UniversalTreebank: Det_Predet :: (SpelledAs "det:predet") -> REL
+ Model.UniversalTreebank: Det_Predet :: SpelledAs "det:predet" -> REL
- Model.UniversalTreebank: Fixed :: (SpelledAs "mwe") -> REL
+ Model.UniversalTreebank: Fixed :: SpelledAs "mwe" -> REL
- Model.UniversalTreebank: Nmod_npmod :: (SpelledAs "nmod:npmod") -> REL
+ Model.UniversalTreebank: Nmod_npmod :: SpelledAs "nmod:npmod" -> REL
- Model.UniversalTreebank: Nmod_poss :: (SpelledAs "nmod:poss") -> REL
+ Model.UniversalTreebank: Nmod_poss :: SpelledAs "nmod:poss" -> REL
- Model.UniversalTreebank: Nmod_tmod :: (SpelledAs "nmod:tmod") -> REL
+ Model.UniversalTreebank: Nmod_tmod :: SpelledAs "nmod:tmod" -> REL
Files
- README.md +19/−12
- haskell-conll.cabal +45/−64
- src/Data/ConllToken.hs +24/−19
- src/Data/ParsedSentence.hs +9/−7
- src/Data/SyntaxTree.hs +15/−15
- src/Data/TagLabel.hs +27/−17
- src/Model/NerCoreNlp.hs +23/−23
- src/Model/PennTreebank.hs +55/−57
- src/Model/UniversalTreebank.hs +55/−53
README.md view
@@ -1,31 +1,38 @@ # haskell-conll [](https://travis-ci.com/mgajda/haskell-conll)+ -Set of Basic Types and Primitives that are used for NLP software such as -- CoreNLP-- SyntaxNet+This library package provides set of foundational types and primitives that can be used in NLP software.+Such as: -and can be extended for usage with other software. +- [CoreNLP](https://github.com/mgajda/syntaxnet-haskell)+- [SyntaxNet](https://ai.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html) +and can be extended for usage with other software.+ If you're working on custom solutions you can use it also. -# TreeBanks+# Treebank -Library supports+Library provides support for -- [Penn Treebank Tag-set](http://www.comp.leeds.ac.uk/amalgam/tagsets/upenn.html)-- [Universal Dependencies](http://universaldependencies.org/en/dep/)+- English / [Penn Treebank Tag-set](http://www.comp.leeds.ac.uk/amalgam/tagsets/upenn.html)+- English / [Universal Dependencies](http://universaldependencies.org/en/dep/) # Used -This library is used in +This library is used in - [SyntaxNet Haskell bindings](https://github.com/mgajda/syntaxnet-haskell/)-- [CoreNLP Haskell bindings](https://github.com/mgajda/corenlp-haskell/) +- [CoreNLP Haskell bindings](https://github.com/mgajda/corenlp-haskell/) +# Maintainer++[Sergey Bushnyak](https://github.com/sigrlami)+ # Acknowledgements -- [Michał J. Gajda](https://github.com/mgajda)+- [Michał J. Gajda](https://github.com/mgajda) - initial idea+- [Sergey Bushnyak](https://github.com/sigrlami) - core maintainer - [Alejandro Duran Pallares](https://github.com/vwwv)-- [Sergey Bushnyak](https://github.com/sigrlami)
haskell-conll.cabal view
@@ -1,74 +1,55 @@+cabal-version: 1.12++-- This file has been generated from package.yaml by hpack version 0.31.2.+--+-- see: https://github.com/sol/hpack+--+-- hash: b21428dd633a54dcad8df997e5dd388761faf2c2fb045e8f4e85db3fec48f6ca+ name: haskell-conll-version: 0.1.0.1+version: 0.1.0.2 synopsis: Core Types for NLP description: Provides core types to work with CoreNLP, SyntaxNet. Handling CoNLL format and Syntax Trees.-homepage: https://github.com/mgajda/haskell-conll#readme-license: BSD3+homepage: https://github.com/sigrlami/haskell-conll#readme+bug-reports: https://github.com/sigrlami/haskell-conll/issues+license: MIT license-file: LICENSE-author: Sergey Bushnyak, Alejandro Duran-Pallares, Michal Gajda+author: Michal Gajda,+ Sergey Bushnyak,+ Alejandro Duran-Pallares maintainer: sergey.bushnyak@sigrlami.eu-copyright: Copyright: (c) 2017 Sergey Bushnyak, Michal Gajda, Alejandro Duran-Pallares+copyright: Copyright: (c) 2017-2019 Michal Gajda,+ Sergey Bushnyak,+ Alejandro Duran-Pallares category: Text build-type: Simple-extra-source-files: README.md-cabal-version: >=1.10--library- hs-source-dirs: src- exposed-modules: Data.ConllToken- , Data.ParsedSentence- , Data.SyntaxTree- , Data.TagLabel- , Model.NerCoreNlp- , Model.PennTreebank- , Model.UniversalTreebank-- build-depends: base >= 4.7 && < 5- , containers- , lens- , pretty-show- , protolude- , split- , text-- default-language: Haskell2010-- default-extensions: NoImplicitPrelude- , BangPatterns- , BinaryLiterals- , ConstraintKinds- , DataKinds- , DefaultSignatures- , DeriveFunctor- , DeriveGeneric- , DisambiguateRecordFields- , DuplicateRecordFields- , EmptyDataDecls- , FlexibleContexts- , FlexibleInstances- , FunctionalDependencies- , GADTs- , GeneralizedNewtypeDeriving- , LambdaCase- , MonadComprehensions- , MultiParamTypeClasses- , MultiWayIf- , OverloadedStrings- , PartialTypeSignatures- , PatternSynonyms- , RankNTypes- , RecordWildCards- , RecursiveDo- , ScopedTypeVariables- , StandaloneDeriving- , TemplateHaskell- , TupleSections- , TypeFamilies- , TypeInType- , TypeOperators- , TypeSynonymInstances-+extra-source-files:+ README.md source-repository head- type: git+ type: git location: https://github.com/sigrlami/haskell-conll++library+ hs-source-dirs:+ src+ exposed-modules:+ Data.ConllToken+ Data.ParsedSentence+ Data.SyntaxTree+ Data.TagLabel+ Model.NerCoreNlp+ Model.PennTreebank+ Model.UniversalTreebank+ other-modules:+ Paths_haskell_conll+ build-depends:+ base >=4.7 && <5+ , containers+ , lens+ , pretty-show+ , protolude+ , split+ , text+ default-language: Haskell2010+ default-extensions: NoImplicitPrelude DefaultSignatures OverloadedStrings TemplateHaskell TypeOperators
src/Data/ConllToken.hs view
@@ -1,3 +1,6 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveFunctor #-}+ module Data.ConllToken where import Protolude@@ -6,31 +9,33 @@ -------------------------------------------------------------------------------- -- | Basic data type to work witn CoNLL data format--- +-- data ConllToken cpos fpos ger feats lemma = ConllToken- { _tnId :: Int -- ^ Index number- , _tnWord :: Text -- ^ Parsed word or punctuation symbol- , _tnLemma :: lemma -- ^ Lemma or stem- , _tnPosCG :: cpos -- ^ Part-of-Speech (POS) coarse-grained (PRON, VERB, DET, NOUN, etc) - , _tnPosFG :: fpos -- ^ Part-of-Speech (POS) fine-grained (PRP, VBD, DT, NN etc.) - , _tnFeats :: feats -- ^ Unordered set of syntactic and/or morphological features.- , _tnHead :: Int -- ^ Head of the current token, which is either a value of ID or '0'.- , _tnRel :: ger -- ^ grammatical relationships between different words in the sentence, alined with Head- , _tnHeadProj :: Text -- ^ Projective head of current token.- , _tnRelProj :: Text -- ^ Dependency relation to the PHEAD. + { _tnId :: Int -- ^ Index number+ , _tnWord :: Text -- ^ Parsed word or punctuation symbol+ , _tnLemma :: lemma -- ^ Lemma or stem+ , _tnPosCG :: cpos -- ^ Part-of-Speech (POS) coarse-grained (PRON, VERB, DET, NOUN, etc)+ , _tnPosFG :: fpos -- ^ Part-of-Speech (POS) fine-grained (PRP, VBD, DT, NN etc.)+ , _tnFeats :: feats -- ^ Unordered set of syntactic and/or morphological features.+ , _tnHead :: Int -- ^ Head of the current token, which is either a value of ID or '0'.+ , _tnRel :: ger -- ^ grammatical relationships between different words in the sentence, alined with Head+ , _tnHeadProj :: Text -- ^ Projective head of current token.+ , _tnRelProj :: Text -- ^ Dependency relation to the PHEAD. } deriving (Show, Read, Eq, Ord, Generic, Functor) -- | Describes typical errors when parsing CoNLL from text data -- Contains next filelds: Reason, LineNumber, Culprit-data SyntaxErrorCoNLL = UnkonwnPosTag Int Text - | UnkwownRelTag Int Text - | CoulNotParseInteger Int Text - | InvalidNumberOfElementsOnLine Int Text - | TheresNoRoot- deriving(Show,Read,Eq,Ord)+data SyntaxErrorCoNLL =+ UnkonwnPosTag Int Text+ | UnkwownRelTag Int Text+ | CoulNotParseInteger Int Text+ | InvalidNumberOfElementsOnLine Int Text+ | TheresNoRoot+ deriving(Show, Read, Eq, Ord) -$(makeLenses ''ConllToken )-$(makePrisms ''SyntaxErrorCoNLL)+-- There are multiple conll formats CoNLL, CoNLL-X, CoNLL-U, CoNLL-ST +$(makeLenses ''ConllToken )+$(makePrisms ''SyntaxErrorCoNLL)
src/Data/ParsedSentence.hs view
@@ -1,22 +1,24 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE RecordWildCards #-}+ module Data.ParsedSentence ( module Data.ParsedSentence , module Data.SyntaxTree ) where -import Protolude-import Data.SyntaxTree import Data.Map+import Data.SyntaxTree+import Protolude -------------------------------------------------------------------------------- --- | +-- | All relations having as "head" the given index data ParsedSentence cpos fpos ger feats lemma = ParsedSentence { _rootNode :: SyntaxtTree cpos fpos ger feats lemma , _indexToNode :: Map Int (SyntaxtTree cpos fpos ger feats lemma)- , _headToNode :: Map Int [SyntaxtTree cpos fpos ger feats lemma] - -- ^ All relations having as "head" the given index - } deriving(Show,Read,Eq,Generic)+ , _headToNode :: Map Int [SyntaxtTree cpos fpos ger feats lemma]+ } deriving(Show, Read, Eq, Generic) -- | sentenceFromRootNode :: SyntaxtTree cpos fpos ger feats lemma@@ -24,7 +26,7 @@ sentenceFromRootNode _rootNode = ParsedSentence{..} where- _indexToNode = fromList [ (_tnId $ rootLabel node, node ) | node <- everyNode] + _indexToNode = fromList [ (_tnId $ rootLabel node, node ) | node <- everyNode] _headToNode = fromListWith (++) [ (_tnHead $ rootLabel node,[node]) | node <- everyNode] everyNode = everyNodeFrom _rootNode everyNodeFrom node@(Node _ children) = node:( everyNodeFrom =<< children)
src/Data/SyntaxTree.hs view
@@ -11,27 +11,27 @@ -------------------------------------------------------------------------------- --- |+-- | Wrapper for the tree to describe syntax tree+-- as a structure of connected ConllTokens type SyntaxtTree cpos fpos ger feats lemma = Tree (ConllToken cpos fpos ger feats lemma) -- |-createSyntaxTree :: [ConllToken cpos fpos ger feats lemma] +createSyntaxTree :: [ConllToken cpos fpos ger feats lemma] -> Either SyntaxErrorCoNLL (SyntaxtTree cpos fpos ger feats lemma) createSyntaxTree conllLines = note TheresNoRoot $ listToMaybe (treeFrom 0) where-- indexToNode = fromList [ (_tnId l,l) | l <- conllLines]-- headToNode = fromListWith (++) [ (_tnHead node,[node]) - | node <- conllLines- ]-- treeFrom n = let relations = fromMaybe [] $ lookup n headToNode - in [ Node{ rootLabel = node- , subForest = treeFrom (_tnId node)- }- | node <- relations- ]+ indexToNode = fromList [ (_tnId l,l)+ | l <- conllLines+ ]+ headToNode = fromListWith (++) [ (_tnHead node,[node])+ | node <- conllLines+ ] + treeFrom n = let relations = fromMaybe [] $ lookup n headToNode+ in [ Node { rootLabel = node+ , subForest = treeFrom (_tnId node)+ }+ | node <- relations+ ]
src/Data/TagLabel.hs view
@@ -1,15 +1,25 @@-module Data.TagLabel ( module GHC.Generics- , TagLabel(..)- , SpelledAs(..)- , fromLabelText- , toLabelText- ) where+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE TypeSynonymInstances #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE ScopedTypeVariables #-} +module Data.TagLabel+ ( module GHC.Generics+ , TagLabel(..)+ , SpelledAs(..)+ , fromLabelText+ , toLabelText+ ) where+ import Data.Char import Data.Map import GHC.Generics (Generic,Rep(..),(:+:)(..)) import GHC.TypeLits-import Protolude hiding(fromLabel)+import Protolude hiding (fromLabel)+import Protolude.Error import qualified Data.Text as T import qualified GHC.Generics as G @@ -29,10 +39,10 @@ fromLabelText :: (TagLabel label) => Text -> Maybe label fromLabelText t = lookup t labelMap --- | +-- | toLabelText :: (TagLabel label) => label -> Text toLabelText l =- fromMaybe (error "imposible branch on Data.Label") + fromMaybe (error "imposible branch on Data.Label") $ lookup l reverseLabelMap --------------------------------------------------------------------------------@@ -46,31 +56,31 @@ gLabelMap _ = second M1 <$> gLabelMap (Proxy :: Proxy f) --- | The labels of sum types are the labels of its parts +-- | The labels of sum types are the labels of its parts instance (GLabel f, GLabel g) => GLabel ( f :+: g) where gLabelMap _ = ( second L1 <$> gLabelMap (Proxy :: Proxy f)) ++ ( second R1 <$> gLabelMap (Proxy :: Proxy g)) -- | The label of a constructor without arguments is the constructor's name itself instance (KnownSymbol constructor) => GLabel (C1 ('MetaCons constructor a b) U1) where- gLabelMap _ = [( convert . toSL $ symbolVal (Proxy :: Proxy constructor) , M1 U1)] + gLabelMap _ = [( convert . toSL $ symbolVal (Proxy :: Proxy constructor) , M1 U1)] where convert s = if T.any isLower s then T.toLower s else s--- | The labels with a constructor with a single argument, are the labels of its argument +-- | The labels with a constructor with a single argument, are the labels of its argument instance (TagLabel labelType) => GLabel (C1 meta1 (S1 meta2 (K1 meta3 labelType))) where gLabelMap _ = assocs $ (M1 . M1 . K1) <$> labelMap --------------------------------------------------------------------------------------- -- Standard labels --- | The labels of a sum type, is the cartesian sum of its labels -instance (TagLabel l1, TagLabel l2) => TagLabel (Either l1 l2) +-- | The labels of a sum type, is the cartesian sum of its labels+instance (TagLabel l1, TagLabel l2) => TagLabel (Either l1 l2) -- | The label of a `SpelledAs x` is x, where x is a type level literal string (a "Symbol"). instance (KnownSymbol symbol) => TagLabel (SpelledAs symbol) where labelMap = fromList [(toSL $ symbolVal (Proxy :: Proxy symbol), SymbolProxy)] -data SpelledAs (s :: Symbol) = SymbolProxy deriving(Show,Read,Eq,Ord,Generic)--+data SpelledAs (s :: Symbol) =+ SymbolProxy+ deriving(Show, Read, Eq, Ord, Generic)
src/Model/NerCoreNlp.hs view
@@ -1,10 +1,12 @@ {-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveGeneric #-} -module Model.NerCoreNlp where +module Model.NerCoreNlp where -import Protolude import Data.TagLabel+import Protolude +-------------------------------------------------------------------------------- {- | Named Entity Recognition (NER) tag set used by `CoreNLP`. @@ -14,24 +16,22 @@ -- | CoreNLP's NER tag set: -data NER = O- | CARDINAL - | DATE- | DURATION- | FACILITY - | GPE- | LOCATION - | MEASURE- | MISC- | MONEY- | NUMBER- | ORDINAL- | ORGANIZATION - | PERCENT - | PERSON - | SET- | TIME- deriving(Show,Eq,Read,Ord,Generic,TagLabel)---+data NER =+ O+ | CARDINAL+ | DATE+ | DURATION+ | FACILITY+ | GPE+ | LOCATION+ | MEASURE+ | MISC+ | MONEY+ | NUMBER+ | ORDINAL+ | ORGANIZATION+ | PERCENT+ | PERSON+ | SET+ | TIME+ deriving(Show, Eq, Read, Ord, Generic, TagLabel)
src/Model/PennTreebank.hs view
@@ -1,65 +1,63 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveGeneric #-} -module Model.PennTreebank where +module Model.PennTreebank where -import Protolude import Data.TagLabel+import Protolude -------------------------------------------------------------------------------- --- | (Penn) Treebank Tag-set +-- | (Penn) Treebank Tag-set -- For documentation see http://www.comp.leeds.ac.uk/amalgam/tagsets/upenn.html-data POS = CC- | CD- | ClosePar (SpelledAs ")" )- | Colon (SpelledAs ":" )- | Coma (SpelledAs ",")- | Dash (SpelledAs "--" ) - | Dollar (SpelledAs "$" )- | DT- | EX- | FW- | IN- | JJ- | JJR- | JJS- | LRB_ (SpelledAs "-LRB-")- | LS- | MD- | NN- | NNP- | NNPS- | NNS- | OpenPar (SpelledAs "(" ) - | PDT- | POS- | PRP- | PRP_Dollar (SpelledAs "PRP$")- | Quotes (SpelledAs "''")- | Quotes2 (SpelledAs "``")- | RB- | RBR- | RBS- | RP- | RRB_ (SpelledAs "-RRB-")- | SYM- | Terminator (SpelledAs "." )- | TO- | UH- | VB- | VBD- | VBG- | VBN- | VBP- | VBZ- | WDT- | WP- | WP_Dollar (SpelledAs "WP$")- | WRB- | UNKNOWN -- when some unknown string used- deriving(Show,Read,Eq,Ord,Generic,TagLabel)-----+data POS =+ CC+ | CD+ | ClosePar (SpelledAs ")" )+ | Colon (SpelledAs ":" )+ | Coma (SpelledAs ",")+ | Dash (SpelledAs "--" )+ | Dollar (SpelledAs "$" )+ | DT+ | EX+ | FW+ | IN+ | JJ+ | JJR+ | JJS+ | LRB_ (SpelledAs "-LRB-")+ | LS+ | MD+ | NN+ | NNP+ | NNPS+ | NNS+ | OpenPar (SpelledAs "(" )+ | PDT+ | POS+ | PRP+ | PRP_Dollar (SpelledAs "PRP$")+ | Quotes (SpelledAs "''")+ | Quotes2 (SpelledAs "``")+ | RB+ | RBR+ | RBS+ | RP+ | RRB_ (SpelledAs "-RRB-")+ | SYM+ | Terminator (SpelledAs "." )+ | TO+ | UH+ | VB+ | VBD+ | VBG+ | VBN+ | VBP+ | VBZ+ | WDT+ | WP+ | WP_Dollar (SpelledAs "WP$")+ | WRB+ | UNKNOWN -- when some unknown string used+ deriving(Show,Read,Eq,Ord,Generic,TagLabel)
src/Model/UniversalTreebank.hs view
@@ -1,62 +1,64 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveGeneric #-} -module Model.UniversalTreebank where +module Model.UniversalTreebank where -import Protolude import Data.TagLabel+import Protolude -------------------------------------------------------------------------------- -- | Tags from Universal Dependencies project -- see `http://universaldependencies.org/en/dep/`-data REL = Acl -- ^ clausal modifier of noun- | Acl_Relcl (SpelledAs "acl:relcl" ) -- ^ relative clause modifier- | Advcl -- ^ adverbial clause modifier- | Advmod -- ^ adverbial modifier- | Amod -- ^ adjectival modifier- | Appos -- ^ appositional modifier- | Aux -- ^ auxiliary- | Auxpass -- ^ passive auxiliary- | Case -- ^ case marking- | Cc -- ^ coordination- | Cc_Preconj (SpelledAs "cc:preconj" ) -- ^ preconjunct- | Ccomp -- ^ clausal complement- | Compound -- ^ compound- | Compound_Pr(SpelledAs "compound:prt") -- ^ phrasal verb particle- | Conj -- ^ conjunct- | Cop -- ^ copula- | Csubj -- ^ clausal subject- | Csubjpass -- ^ clausal passive subject- | Dep -- ^ dependent- | Det -- ^ determiner- | Det_Predet (SpelledAs "det:predet" ) -- ^ predeterminer- | Discourse -- ^ discourse element- | Dislocated -- ^ dislocated elements- | Dobj -- ^ direct object- | Expl -- ^ expletive- | Fixed (SpelledAs "mwe") -- ^ multi-word expression- | Flat -- ^ name- | Foreign -- ^ foreign words- | Goeswith -- ^ goes with- | Iobj -- ^ indirect object- | List -- ^ list- | Mark -- ^ marker- | Neg -- ^ negation modifier- | Nmod -- ^ nominal modifier- | Nmod_npmod (SpelledAs "nmod:npmod" ) -- ^ noun phrase as adverbial modifier- | Nmod_poss (SpelledAs "nmod:poss" ) -- ^ possessive nominal modifier- | Nmod_tmod (SpelledAs "nmod:tmod" ) -- ^ temporal modifier- | Nsubj -- ^ nominal subject- | Nsubjpass -- ^ passive nominal subject- | Nummod -- ^ numeric modifier- | Orphan -- ^ remnant in ellipsis- | Parataxis -- ^ parataxis- | Punct -- ^ punctuation- | Reparandum -- ^ overridden disfluency- | ROOT -- ^ root- | Root -- ^ root (not main)- | Vocative -- ^ vocative- | Xcomp -- ^ open clausal complement- | Unknown -- ^ unknown- deriving(Show,Read,Eq,Ord,Generic,TagLabel)-+data REL =+ Acl -- ^ clausal modifier of noun+ | Acl_Relcl (SpelledAs "acl:relcl" ) -- ^ relative clause modifier+ | Advcl -- ^ adverbial clause modifier+ | Advmod -- ^ adverbial modifier+ | Amod -- ^ adjectival modifier+ | Appos -- ^ appositional modifier+ | Aux -- ^ auxiliary+ | Auxpass -- ^ passive auxiliary+ | Case -- ^ case marking+ | Cc -- ^ coordination+ | Cc_Preconj (SpelledAs "cc:preconj" ) -- ^ preconjunct+ | Ccomp -- ^ clausal complement+ | Compound -- ^ compound+ | Compound_Pr(SpelledAs "compound:prt") -- ^ phrasal verb particle+ | Conj -- ^ conjunct+ | Cop -- ^ copula+ | Csubj -- ^ clausal subject+ | Csubjpass -- ^ clausal passive subject+ | Dep -- ^ dependent+ | Det -- ^ determiner+ | Det_Predet (SpelledAs "det:predet" ) -- ^ predeterminer+ | Discourse -- ^ discourse element+ | Dislocated -- ^ dislocated elements+ | Dobj -- ^ direct object+ | Expl -- ^ expletive+ | Fixed (SpelledAs "mwe") -- ^ multi-word expression+ | Flat -- ^ name+ | Foreign -- ^ foreign words+ | Goeswith -- ^ goes with+ | Iobj -- ^ indirect object+ | List -- ^ list+ | Mark -- ^ marker+ | Neg -- ^ negation modifier+ | Nmod -- ^ nominal modifier+ | Nmod_npmod (SpelledAs "nmod:npmod" ) -- ^ noun phrase as adverbial modifier+ | Nmod_poss (SpelledAs "nmod:poss" ) -- ^ possessive nominal modifier+ | Nmod_tmod (SpelledAs "nmod:tmod" ) -- ^ temporal modifier+ | Nsubj -- ^ nominal subject+ | Nsubjpass -- ^ passive nominal subject+ | Nummod -- ^ numeric modifier+ | Orphan -- ^ remnant in ellipsis+ | Parataxis -- ^ parataxis+ | Punct -- ^ punctuation+ | Reparandum -- ^ overridden disfluency+ | ROOT -- ^ root+ | Root -- ^ root (not main)+ | Vocative -- ^ vocative+ | Xcomp -- ^ open clausal complement+ | Unknown -- ^ unknown+ deriving(Show, Read, Eq, Ord, Generic, TagLabel)