From ed6d2b30217c822f32a6dc58f82e074c892a5968 Mon Sep 17 00:00:00 2001 From: Mahdi Dibaiee Date: Mon, 17 Oct 2016 01:54:35 +0330 Subject: [PATCH] feat(Numeric): move all modules to Numeric --- examples/424encoder.hs | 2 +- examples/naivebayes-doc-classifier.hs | 5 ++- examples/notmnist.hs | 2 +- examples/recurrent-doc-classifier.hs | 0 examples/word2vec.hs | 6 ++-- examples/xor.hs | 2 +- sibe.cabal | 4 +-- src/Lib.hi | Bin 4350 -> 0 bytes src/Lib.o | Bin 46864 -> 0 bytes src/{ => Numeric}/Sibe.hs | 2 +- src/{ => Numeric}/Sibe/NLP.hs | 4 +-- src/{ => Numeric}/Sibe/NaiveBayes.hs | 6 ++-- src/{ => Numeric}/Sibe/Utils.hs | 2 +- src/{ => Numeric}/Sibe/Word2Vec.hs | 6 ++-- src/Sibe/LogisticRegression.hs | 0 src/Sibe/Word2Vec.hs.backup | 44 -------------------------- 16 files changed, 20 insertions(+), 65 deletions(-) delete mode 100644 examples/recurrent-doc-classifier.hs delete mode 100644 src/Lib.hi delete mode 100644 src/Lib.o rename src/{ => Numeric}/Sibe.hs (99%) rename src/{ => Numeric}/Sibe/NLP.hs (98%) rename src/{ => Numeric}/Sibe/NaiveBayes.hs (98%) rename src/{ => Numeric}/Sibe/Utils.hs (97%) rename src/{ => Numeric}/Sibe/Word2Vec.hs (98%) delete mode 100644 src/Sibe/LogisticRegression.hs delete mode 100644 src/Sibe/Word2Vec.hs.backup diff --git a/examples/424encoder.hs b/examples/424encoder.hs index 4b93941..1a756f5 100644 --- a/examples/424encoder.hs +++ b/examples/424encoder.hs @@ -1,5 +1,5 @@ module Main where - import Sibe + import Numeric.Sibe import Numeric.LinearAlgebra import Data.List import Debug.Trace diff --git a/examples/naivebayes-doc-classifier.hs b/examples/naivebayes-doc-classifier.hs index 0e7581e..7b27e5b 100644 --- a/examples/naivebayes-doc-classifier.hs +++ b/examples/naivebayes-doc-classifier.hs @@ -1,8 +1,7 @@ module Main where - -- import Sibe - import Sibe.NLP - import Sibe.NaiveBayes + import Numeric.Sibe.NLP + import Numeric.Sibe.NaiveBayes import Text.Printf import Data.List import Data.Maybe diff --git a/examples/notmnist.hs b/examples/notmnist.hs index 865ed55..c823b46 100644 --- a/examples/notmnist.hs +++ b/examples/notmnist.hs @@ -3,7 +3,7 @@ {-# LANGUAGE ScopedTypeVariables #-} module Main where - import Sibe + import Numeric.Sibe import Numeric.LinearAlgebra import Data.List import Debug.Trace diff --git a/examples/recurrent-doc-classifier.hs b/examples/recurrent-doc-classifier.hs deleted file mode 100644 index e69de29..0000000 diff --git a/examples/word2vec.hs b/examples/word2vec.hs index 457d7b8..81d7caa 100644 --- a/examples/word2vec.hs +++ b/examples/word2vec.hs @@ -3,9 +3,9 @@ {-# LANGUAGE ScopedTypeVariables #-} module Main where - import Sibe - import Sibe.Word2Vec - import Sibe.Utils + import Numeric.Sibe + import Numeric.Sibe.Word2Vec + import Numeric.Sibe.Utils import Data.Default.Class import qualified Data.Vector.Storable as V import Data.List (sortBy) diff --git a/examples/xor.hs b/examples/xor.hs index 454e9b7..56c726f 100644 --- a/examples/xor.hs +++ b/examples/xor.hs @@ -1,5 +1,5 @@ module Main where - import Sibe + import Numeric.Sibe import Numeric.LinearAlgebra import Data.List import Debug.Trace diff --git a/sibe.cabal b/sibe.cabal index 3205f68..38b949f 100644 --- a/sibe.cabal +++ b/sibe.cabal @@ -1,5 +1,5 @@ name: sibe -version: 0.1.0.1 +version: 0.2.0.0 synopsis: Machine Learning algorithms description: Haskell Machine Learning homepage: https://github.com/mdibaiee/sibe @@ -15,7 +15,7 @@ cabal-version: >=1.10 library hs-source-dirs: src - exposed-modules: Sibe, Sibe.NaiveBayes, Sibe.NLP, Sibe.Word2Vec, Sibe.Utils + exposed-modules: Numeric.Sibe, Numeric.Sibe.NaiveBayes, Numeric.Sibe.NLP, Numeric.Sibe.Word2Vec, Numeric.Sibe.Utils build-depends: base >= 4.7 && < 5 , hmatrix , random diff --git a/src/Lib.hi b/src/Lib.hi deleted file mode 100644 index 80253d335e3e506af8f54c44f47420f173214833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4350 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 diff --git a/src/Sibe.hs b/src/Numeric/Sibe.hs similarity index 99% rename from src/Sibe.hs rename to src/Numeric/Sibe.hs index f4ccede..5a43b20 100644 --- a/src/Sibe.hs +++ b/src/Numeric/Sibe.hs @@ -3,7 +3,7 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} -module Sibe +module Numeric.Sibe (Network(..), Layer(..), Input, diff --git a/src/Sibe/NLP.hs b/src/Numeric/Sibe/NLP.hs similarity index 98% rename from src/Sibe/NLP.hs rename to src/Numeric/Sibe/NLP.hs index 3369a7c..69e9495 100644 --- a/src/Sibe/NLP.hs +++ b/src/Numeric/Sibe/NLP.hs @@ -1,4 +1,4 @@ -module Sibe.NLP +module Numeric.Sibe.NLP (Class, Document(..), accuracy, @@ -13,7 +13,7 @@ module Sibe.NLP ngramText, ) where - import Sibe.Utils + import Numeric.Sibe.Utils import Data.List import Debug.Trace import Data.List.Split diff --git a/src/Sibe/NaiveBayes.hs b/src/Numeric/Sibe/NaiveBayes.hs similarity index 98% rename from src/Sibe/NaiveBayes.hs rename to src/Numeric/Sibe/NaiveBayes.hs index c9b24d1..1dadbb3 100644 --- a/src/Sibe/NaiveBayes.hs +++ b/src/Numeric/Sibe/NaiveBayes.hs @@ -1,4 +1,4 @@ -module Sibe.NaiveBayes +module Numeric.Sibe.NaiveBayes (Document(..), NB(..), initialize, @@ -18,8 +18,8 @@ module Sibe.NaiveBayes removeStopwords, ) where - import Sibe.Utils - import Sibe.NLP + import Numeric.Sibe.Utils + import Numeric.Sibe.NLP import Data.List import Debug.Trace import qualified Data.Set as Set diff --git a/src/Sibe/Utils.hs b/src/Numeric/Sibe/Utils.hs similarity index 97% rename from src/Sibe/Utils.hs rename to src/Numeric/Sibe/Utils.hs index d90cc0b..df0e419 100644 --- a/src/Sibe/Utils.hs +++ b/src/Numeric/Sibe/Utils.hs @@ -1,4 +1,4 @@ -module Sibe.Utils +module Numeric.Sibe.Utils ( similarity , ordNub , onehot diff --git a/src/Sibe/Word2Vec.hs b/src/Numeric/Sibe/Word2Vec.hs similarity index 98% rename from src/Sibe/Word2Vec.hs rename to src/Numeric/Sibe/Word2Vec.hs index 5b7586a..c852a99 100644 --- a/src/Sibe/Word2Vec.hs +++ b/src/Numeric/Sibe/Word2Vec.hs @@ -1,12 +1,12 @@ {-# LANGUAGE ScopedTypeVariables #-} -module Sibe.Word2Vec +module Numeric.Sibe.Word2Vec ( word2vec , Word2Vec (..) , W2VMethod (..) ) where - import Sibe - import Sibe.Utils + import Numeric.Sibe + import Numeric.Sibe.Utils import Debug.Trace import Data.Char import Data.Maybe diff --git a/src/Sibe/LogisticRegression.hs b/src/Sibe/LogisticRegression.hs deleted file mode 100644 index e69de29..0000000 diff --git a/src/Sibe/Word2Vec.hs.backup b/src/Sibe/Word2Vec.hs.backup deleted file mode 100644 index fa7a3d2..0000000 --- a/src/Sibe/Word2Vec.hs.backup +++ /dev/null @@ -1,44 +0,0 @@ -module Sibe.Word2Vec - (word2vec, - mapTuple - ) where - import Sibe - import Sibe.NLP - import Debug.Trace - import Data.Char - import Data.Maybe - import Data.List - import Numeric.LinearAlgebra hiding (find) - import qualified Data.Vector.Storable as V - - word2vec docs session = do - let cooccurence = concat $ map co docs - a = (sigmoid, sigmoid') - o = (softmax, crossEntropy') - window = 2 - s = session { training = cooccurence - , test = cooccurence - , network = buildNetwork 0 (-1, 1) n [(n, 300, (id, id))] (300, n, (softmax, crossEntropy')) - } - print $ network s - newses <- run gd s - return (newses, cooccurence, vocabulary, vocvec) - where - n = length vocabulary - vocabulary = ordNub . words . map toLower . concatMap (++ " ") $ docs - vocvec = zip vocabulary $ map tovec [0..n] - tovec i = replicate i 0 ++ [1] ++ replicate (n - i - 1) 0 - co d = - let p = pairs d - in map (\(a, [b, c]) -> (f a, V.concat [f b, f c])) p - where - f w = vector . snd . fromJust $ find ((== w) . fst) vocvec - pairs d = concatMap iter [0..length ws] - where - ws = words $ map toLower d - iter i - | i > 0 && i < length ws - 1 = [(ws !! i, [ws !! (i - 1), ws !! (i + 1)])] - | otherwise = [] - - mapTuple :: (a -> b) -> (a, a) -> (b, b) - mapTuple f (a, b) = (f a, f b)