Commit f0f1bafd authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski Committed by Alexandre Delanoë

[nlp] export languages (graphql) based on ini file

parent 75d1ec04
...@@ -46,6 +46,7 @@ import qualified Gargantext.API.GraphQL.TreeFirstLevel as GQLTree ...@@ -46,6 +46,7 @@ import qualified Gargantext.API.GraphQL.TreeFirstLevel as GQLTree
import qualified Gargantext.API.GraphQL.Team as GQLTeam import qualified Gargantext.API.GraphQL.Team as GQLTeam
import Gargantext.API.Prelude (GargM, GargError) import Gargantext.API.Prelude (GargM, GargError)
import Gargantext.API.Types import Gargantext.API.Types
import Gargantext.Core.NLP (HasNLPServer)
import Gargantext.Database.Prelude (CmdCommon) import Gargantext.Database.Prelude (CmdCommon)
import Gargantext.Prelude import Gargantext.Prelude
import GHC.Generics (Generic) import GHC.Generics (Generic)
...@@ -71,7 +72,7 @@ data Query m ...@@ -71,7 +72,7 @@ data Query m
, contexts_for_ngrams :: GQLCTX.ContextsForNgramsArgs -> m [GQLCTX.ContextGQL] , contexts_for_ngrams :: GQLCTX.ContextsForNgramsArgs -> m [GQLCTX.ContextGQL]
, imt_schools :: GQLIMT.SchoolsArgs -> m [GQLIMT.School] , imt_schools :: GQLIMT.SchoolsArgs -> m [GQLIMT.School]
, job_logs :: GQLAT.JobLogArgs -> m (Map Int JobLog) , job_logs :: GQLAT.JobLogArgs -> m (Map Int JobLog)
, languages :: GQLNLP.LanguagesArgs -> m [GQLNLP.Lang] , languages :: GQLNLP.LanguagesArgs -> m GQLNLP.LanguagesMap
, nodes :: GQLNode.NodeArgs -> m [GQLNode.Node] , nodes :: GQLNode.NodeArgs -> m [GQLNode.Node]
, node_parent :: GQLNode.NodeParentArgs -> m [GQLNode.Node] , node_parent :: GQLNode.NodeParentArgs -> m [GQLNode.Node]
, user_infos :: GQLUserInfo.UserInfoArgs -> m [GQLUserInfo.UserInfo] , user_infos :: GQLUserInfo.UserInfoArgs -> m [GQLUserInfo.UserInfo]
...@@ -105,7 +106,7 @@ data Contet m ...@@ -105,7 +106,7 @@ data Contet m
-- | The main GraphQL resolver: how queries, mutations and -- | The main GraphQL resolver: how queries, mutations and
-- subscriptions are handled. -- subscriptions are handled.
rootResolver rootResolver
:: (CmdCommon env, HasJobEnv' env, HasSettings env) :: (CmdCommon env, HasNLPServer env, HasJobEnv' env, HasSettings env)
=> RootResolver (GargM env GargError) e Query Mutation Undefined => RootResolver (GargM env GargError) e Query Mutation Undefined
rootResolver = rootResolver =
RootResolver RootResolver
...@@ -128,7 +129,7 @@ rootResolver = ...@@ -128,7 +129,7 @@ rootResolver =
-- | Main GraphQL "app". -- | Main GraphQL "app".
app app
:: (Typeable env, CmdCommon env, HasJobEnv' env, HasSettings env) :: (Typeable env, CmdCommon env, HasJobEnv' env, HasNLPServer env, HasSettings env)
=> App (EVENT (GargM env GargError)) (GargM env GargError) => App (EVENT (GargM env GargError)) (GargM env GargError)
app = deriveApp rootResolver app = deriveApp rootResolver
......
...@@ -4,19 +4,23 @@ ...@@ -4,19 +4,23 @@
module Gargantext.API.GraphQL.NLP module Gargantext.API.GraphQL.NLP
( Lang(..) ( Lang(..)
, LanguagesArgs(..) , LanguagesArgs(..)
, LanguagesMap
, resolveLanguages , resolveLanguages
) )
where where
import Control.Lens (view)
import qualified Data.Map.Strict as Map
import Data.Morpheus.Types import Data.Morpheus.Types
( GQLType ( GQLType
, Resolver , Resolver
, QUERY , QUERY
) )
import Gargantext.API.Prelude (GargM, GargError) import Gargantext.API.Prelude (GargM, GargError)
import Gargantext.Core (Lang(..), allLangs) import Gargantext.Core (Lang(..), NLPServerConfig(..), PosTagAlgo) -- , allLangs)
import Gargantext.Core.NLP (HasNLPServer(..))
import Gargantext.Prelude import Gargantext.Prelude
import GHC.Generics (Generic) import Protolude
data LanguagesArgs data LanguagesArgs
= LanguagesArgs = LanguagesArgs
...@@ -24,6 +28,21 @@ data LanguagesArgs ...@@ -24,6 +28,21 @@ data LanguagesArgs
type GqlM e env = Resolver QUERY e (GargM env GargError) type GqlM e env = Resolver QUERY e (GargM env GargError)
type LanguagesMap = Map.Map Lang NLPServer
data NLPServer = NLPServer
{
server :: !PosTagAlgo
, url :: !Text
}
deriving (Show, Eq, Generic, GQLType)
resolveLanguages resolveLanguages
:: LanguagesArgs -> GqlM e env [Lang] :: HasNLPServer env => LanguagesArgs -> GqlM e env LanguagesMap
resolveLanguages LanguagesArgs { } = pure $ allLangs resolveLanguages LanguagesArgs { } = do
-- pure $ allLangs
lift $ do
ns <- view nlpServer
printDebug "[resolveLanguages] nlpServer" ns
pure $ Map.map (\(NLPServerConfig { .. }) -> NLPServer { server
, url = Protolude.show url }) ns
...@@ -97,13 +97,13 @@ instance HasDBid Lang where ...@@ -97,13 +97,13 @@ instance HasDBid Lang where
data NLPServerConfig = NLPServerConfig data NLPServerConfig = NLPServerConfig
{ server :: !PosTagAlgo { server :: !PosTagAlgo
, url :: !URI } , url :: !URI }
deriving (Show, Eq) deriving (Show, Eq, Generic)
------------------------------------------------------------------------ ------------------------------------------------------------------------
type Form = Text type Form = Text
type Lem = Text type Lem = Text
------------------------------------------------------------------------ ------------------------------------------------------------------------
data PosTagAlgo = CoreNLP | JohnSnowServer | Spacy data PosTagAlgo = CoreNLP | JohnSnowServer | Spacy
deriving (Show, Read, Eq, Ord, Generic) deriving (Show, Read, Eq, Ord, Generic, GQLType)
instance Hashable PosTagAlgo instance Hashable PosTagAlgo
......
...@@ -92,15 +92,15 @@ corenlp' uri lang txt = do ...@@ -92,15 +92,15 @@ corenlp' uri lang txt = do
EN -> [ ("annotators", "tokenize,ssplit,pos,ner" ) ] EN -> [ ("annotators", "tokenize,ssplit,pos,ner" ) ]
FR -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner") FR -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner")
-- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz") -- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz")
, ("pos.model", "edu/stanford/nlp/models/pos-tagger/french/french.tagger") , ("pos.model", "edu/stanford/nlp/models/pos-tagger/models/french.tagger")
, ("tokenize.language", "fr") ] , ("tokenize.language", "fr") ]
DE -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner") DE -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner")
-- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz") -- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz")
, ("pos.model", "edu/stanford/nlp/models/pos-tagger/french/german-hgc.tagger") , ("pos.model", "edu/stanford/nlp/models/pos-tagger/models/german-hgc.tagger")
, ("tokenize.language", "de") ] , ("tokenize.language", "de") ]
ES -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner") ES -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner")
-- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz") -- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz")
, ("pos.model", "edu/stanford/nlp/models/pos-tagger/french/spanish.tagger") , ("pos.model", "edu/stanford/nlp/models/pos-tagger/models/spanish.tagger")
, ("tokenize.language", "es") ] , ("tokenize.language", "es") ]
IT -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner") IT -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner")
-- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz") -- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz")
...@@ -110,9 +110,9 @@ corenlp' uri lang txt = do ...@@ -110,9 +110,9 @@ corenlp' uri lang txt = do
-- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz") -- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz")
-- , ("pos.model", "edu/stanford/nlp/models/pos-tagger/french/french.tagger") -- , ("pos.model", "edu/stanford/nlp/models/pos-tagger/french/french.tagger")
, ("tokenize.language", "pl") ] , ("tokenize.language", "pl") ]
CN -> [ ("annotators", "tokenize,ssplit,pos,lemma,ner") CN -> [ ("annotators", "tokenize,pos,lemma,ner")
-- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz") -- , ("parse.model", "edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz")
, ("pos.model", "edu/stanford/nlp/models/pos-tagger/french/chinese-distsim.tagger") , ("pos.model", "edu/stanford/nlp/models/pos-tagger/models/chinese-distsim.tagger")
, ("tokenize.language", "zh") ] , ("tokenize.language", "zh") ]
l -> panic $ pack $ "corenlp for language " <> show l <> " is not implemented yet" l -> panic $ pack $ "corenlp for language " <> show l <> " is not implemented yet"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment