]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Text/Terms.hs
[Scores] Inclusion/Exclusion and Specificity/Genericity ok with my tests.
[gargantext.git] / src / Gargantext / Text / Terms.hs
1 {-|
2 Module : Gargantext.Text.Ngrams
3 Description : Ngrams definition and tools
4 Copyright : (c) CNRS, 2017 - present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
8 Portability : POSIX
9
10 An @n-gram@ is a contiguous sequence of n items from a given sample of
11 text. In Gargantext application the items are words, n is a non negative
12 integer.
13
14 Using Latin numerical prefixes, an n-gram of size 1 is referred to as a
15 "unigram"; size 2 is a "bigram" (or, less commonly, a "digram"); size
16 3 is a "trigram". English cardinal numbers are sometimes used, e.g.,
17 "four-gram", "five-gram", and so on.
18
19 Source: https://en.wikipedia.org/wiki/Ngrams
20
21 TODO
22 group Ngrams -> Tree
23 compute occ by node of Tree
24 group occs according groups
25
26 compute cooccurrences
27 compute graph
28
29 -}
30
31 {-# LANGUAGE NoImplicitPrelude #-}
32
33 module Gargantext.Text.Terms
34 where
35
36 import Data.Text (Text)
37 import Data.Traversable
38
39 import Gargantext.Prelude
40 import Gargantext.Core
41 import Gargantext.Core.Types
42 import Gargantext.Text.Terms.Multi (multiterms)
43 import Gargantext.Text.Terms.Mono (monoterms')
44
45 data TermType = Mono | Multi | MonoMulti
46
47 -- remove Stop Words
48 -- map (filter (\t -> not . elem t)) $
49 ------------------------------------------------------------------------
50 -- | Sugar to extract terms from text (hiddeng mapM from end user).
51 extractTerms :: Traversable t => TermType -> Lang -> t Text -> IO (t [Terms])
52 extractTerms termType lang = mapM (terms termType lang)
53 ------------------------------------------------------------------------
54 -- | Terms from Text
55 -- Mono : mono terms
56 -- Multi : multi terms
57 -- MonoMulti : mono and multi
58 -- TODO : multi terms should exclude mono (intersection is not empty yet)
59 terms :: TermType -> Lang -> Text -> IO [Terms]
60 terms Mono lang txt = pure $ monoterms' lang txt
61 terms Multi lang txt = multiterms lang txt
62 terms MonoMulti lang txt = terms Multi lang txt
63 ------------------------------------------------------------------------
64