Instruction for launching detailed
[gargantext.git] / bin / gargantext-cli / CleanCsvCorpus.hs
index f8fe9cbdd0e7558b2091728fb3167082f1fea7ae..15b21a3b79cf00d84438e68a170719bfc1993081 100644 (file)
@@ -11,11 +11,11 @@ Given a Gargantext CSV File and its Query This script cleans and
 compress the contexts around the main terms of the query.
 -}
 
-{-# LANGUAGE NoImplicitPrelude #-}
 
 module CleanCsvCorpus  where
 
 --import GHC.IO (FilePath)
+import Data.Either (Either(..))
 import Data.SearchEngine as S
 import qualified Data.Set as S
 import Data.Text (pack)
@@ -23,15 +23,14 @@ import Data.Vector (Vector)
 import qualified Data.Vector as V
 
 import Gargantext.Prelude
-import Gargantext.Text.Search
-import Gargantext.Text.Parsers.CSV
-
+import Gargantext.Core.Text.Search
+import qualified Gargantext.Core.Text.Corpus.Parsers.CSV as CSV
 ------------------------------------------------------------------------
 
 type Query = [S.Term]
 
-filterDocs :: [DocId] -> Vector Doc -> Vector Doc
-filterDocs docIds = V.filter (\doc -> S.member (d_docId doc) $ S.fromList docIds )
+filterDocs :: [DocId] -> Vector CSV.CsvGargV3 -> Vector CSV.CsvGargV3
+filterDocs docIds = V.filter (\doc -> S.member (CSV.d_docId doc) $ S.fromList docIds )
 
 
 main :: IO ()
@@ -41,17 +40,19 @@ main = do
   --let q = ["water", "scarcity", "morocco", "shortage","flood"]
   let q = ["gratuit", "gratuité", "culture", "culturel"]
 
-  (h,csvDocs) <- readCsv rPath
-
-  putStrLn $ "Number of documents before:" <> show (V.length csvDocs)
-  putStrLn $ "Mean size of docs:" <> show ( docsSize csvDocs)
+  eDocs <- CSV.readCSVFile rPath
+  case eDocs of
+    Right (h, csvDocs) -> do
+      putStrLn $ "Number of documents before:" <> show (V.length csvDocs)
+      putStrLn $ "Mean size of docs:" <> show ( CSV.docsSize csvDocs)
 
-  let docs   = toDocs csvDocs
-  let engine = insertDocs docs initialDocSearchEngine
-  let docIds = S.query engine (map pack q)
-  let docs'  = fromDocs $ filterDocs docIds (V.fromList docs)
+      let docs   = CSV.toDocs csvDocs
+      let engine = insertDocs docs initialDocSearchEngine
+      let docIds = S.query engine (map pack q)
+      let docs'  = CSV.fromDocs $ filterDocs docIds (V.fromList docs)
 
-  putStrLn $ "Number of documents after:" <> show (V.length docs')
-  putStrLn $ "Mean size of docs:" <> show (docsSize docs')
+      putStrLn $ "Number of documents after:" <> show (V.length docs')
+      putStrLn $ "Mean size of docs:" <> show (CSV.docsSize docs')
 
-  writeCsv wPath (h, docs')
+      CSV.writeFile wPath (h, docs')
+    Left e -> panic $ "Error: " <> (pack e)