2 Module : Gargantext.Viz.Phylo.Tools
3 Description : Phylomemy Tools to build/manage it
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
13 {-# LANGUAGE NoImplicitPrelude #-}
14 {-# LANGUAGE FlexibleContexts #-}
15 {-# LANGUAGE OverloadedStrings #-}
17 module Gargantext.Viz.Phylo.Aggregates.Fis
20 import Data.List (head)
22 import Data.Text (words)
23 import Data.Tuple (fst, snd)
24 import Gargantext.Prelude hiding (head)
25 import Gargantext.Text.Metrics.FrequentItemSet (fisWithSizePolyMap, Size(..))
26 import Gargantext.Viz.Phylo
27 import Gargantext.Viz.Phylo.Tools
28 import qualified Data.Map as Map
31 -- | To Filter Fis by support
32 filterFisBySupport :: Bool -> Int -> Map (Date, Date) [Fis] -> Map (Date, Date) [Fis]
33 filterFisBySupport empty min' m = case empty of
34 True -> Map.map (\l -> filterMinorFis min' l) m
35 False -> Map.map (\l -> keepFilled (filterMinorFis) min' l) m
38 -- | To filter Fis with small Support, to preserve nonempty periods please use : filterFisBySupport False
39 filterMinorFis :: Int -> [Fis] -> [Fis]
40 filterMinorFis min' l = filter (\fis -> snd fis > min') l
43 -- | To filter nested Fis
44 filterFisByNested :: Map (Date, Date) [Fis] -> Map (Date, Date) [Fis]
45 filterFisByNested = map (\l -> let cliqueMax = filterNestedSets (head $ map fst l) (map fst l) []
46 in filter (\fis -> elem (fst fis) cliqueMax) l)
49 -- | To transform a list of Documents into a Frequent Items Set
50 docsToFis :: Map (Date, Date) [Document] -> Map (Date, Date) [Fis]
51 docsToFis docs = map (\d -> Map.toList
52 $ fisWithSizePolyMap (Segment 1 20) 1 (map (words . text) d)) docs