Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Przemyslaw Kaminski
haskell-gargantext
Commits
ccd5a835
Commit
ccd5a835
authored
Oct 27, 2020
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ADMIN] Adding linear Algebra utils for Accelerate
parent
01f6f79c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
64 additions
and
14 deletions
+64
-14
package.yaml
package.yaml
+1
-0
Distributional.hs
...ntext/Core/Methods/Distances/Accelerate/Distributional.hs
+49
-12
Utils.hs
src/Gargantext/Core/Methods/Matrix/Accelerate/Utils.hs
+1
-1
stack.yaml
stack.yaml
+13
-1
No files found.
package.yaml
View file @
ccd5a835
...
@@ -108,6 +108,7 @@ library:
...
@@ -108,6 +108,7 @@ library:
-
SHA
-
SHA
-
Unique
-
Unique
-
accelerate
-
accelerate
-
accelerate-arithmetic
-
aeson
-
aeson
-
aeson-lens
-
aeson-lens
-
aeson-pretty
-
aeson-pretty
...
...
src/Gargantext/Core/Methods/Distances/Accelerate/Distributional.hs
View file @
ccd5a835
{-|
{-|
Module : Gargantext.Core.Methods.Distances.Accelerate.Distributional
Module : Gargantext.Core.Methods.Distances.Accelerate.Distributional
Description :
Description :
Copyright : (c) CNRS, 2017-Present
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Maintainer : team@gargantext.org
Stability : experimental
Stability : experimental
Portability : POSIX
Portability : POSIX
This module aims at implementig distances of terms context by context is
the same referential of corpus.
Implementation use Accelerate library which enables GPU and CPU computation
* Distributional Distance metric
See Gargantext.Core.Methods.Graph.Accelerate)
__Definition :__ Distributional metric is a relative metric which depends on the
selected list, it represents structural equivalence of mutual information.
__Objective :__ We want to compute with matrices processing the similarity between term $i$ and term $j$ :
distr(i,j)=$\frac{\Sigma_{k \neq i,j} min(\frac{n_{ik}^2}{n_{ii}n_{kk}},\frac{n_{jk}^2}{n_{jj}n_{kk}})}{\Sigma_{k \neq i}\frac{n_{ik}^2}{ n_{ii}n_{kk}}}$
where $n_{ij}$ is the cooccurrence between term $i$ and term $j$
* For a vector V=[$x_1$ ... $x_n$], we note $|V|_1=\Sigma_ix_i$
* operator : .* and ./ cell by cell multiplication and division of the matrix
* operator * is the matrix multiplication
* Matrice M=[$n_{ij}$]$_{i,j}$
* opérateur : Diag(M)=[$n_{ii}$]$_i$ (vecteur)
* Id= identity matrix
* O=[1]$_{i,j}$ (matrice one)
* D(M)=Id .* M
* O * D(M) =[$n_{jj}$]$_{i,j}$
* D(M) * O =[$n_{ii}$]$_{i,j}$
* $V_i=[0~0~0~1~0~0~0]'$ en i
* MI=(M ./ O * D(M)) .* (M / D(M) * O )
* distr(i,j)=$\frac{|min(V'_i * (MI-D(MI)),V'_j * (MI-D(MI)))|_1}{|V'_i.(MI-D(MI))|_1}$
[Specifications written by David Chavalarias on Garg v4 shared NodeWrite, team Pyremiel 2020]
-}
-}
...
@@ -30,15 +50,31 @@ import Data.Array.Accelerate.Interpreter (run)
...
@@ -30,15 +50,31 @@ import Data.Array.Accelerate.Interpreter (run)
import
Gargantext.Core.Methods.Matrix.Accelerate.Utils
import
Gargantext.Core.Methods.Matrix.Accelerate.Utils
import
qualified
Gargantext.Prelude
as
P
import
qualified
Gargantext.Prelude
as
P
-- * Metrics of proximity
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-- ** Distributional Distance
-- * Distributional Distance
distributional'
::
Elt
a
=>
Matrix
a
->
Matrix
a
distributional'
_m'
=
undefined
{-
where
m = use m'
n = dim m'
-}
-- | Distributional Distance metric
--
-- Distributional metric is a relative metric which depends on the
-- selected list, it represents structural equivalence of mutual information.
--
--
-- The distributional metric P(c) of @i@ and @j@ terms is: \[
-- The distributional metric P(c) of @i@ and @j@ terms is: \[
-- S_{MI} = \frac {\sum_{k \neq i,j ; MI_{ik} >0}^{} \min(MI_{ik},
-- S_{MI} = \frac {\sum_{k \neq i,j ; MI_{ik} >0}^{} \min(MI_{ik},
...
@@ -59,6 +95,7 @@ import qualified Gargantext.Prelude as P
...
@@ -59,6 +95,7 @@ import qualified Gargantext.Prelude as P
-- Total cooccurrences of terms given a map list of size @m@
-- Total cooccurrences of terms given a map list of size @m@
-- \[N_{m} = \sum_{i,i \neq i}^{m} \sum_{j, j \neq j}^{m} S_{ij}\]
-- \[N_{m} = \sum_{i,i \neq i}^{m} \sum_{j, j \neq j}^{m} S_{ij}\]
--
--
distributional
::
Matrix
Int
->
Matrix
Double
distributional
::
Matrix
Int
->
Matrix
Double
distributional
m
=
-- run {- $ matMiniMax -}
distributional
m
=
-- run {- $ matMiniMax -}
run
$
diagNull
n
run
$
diagNull
n
...
...
src/Gargantext/Core/Methods/Matrix/Accelerate/Utils.hs
View file @
ccd5a835
...
@@ -296,7 +296,7 @@ cross' :: Matrix Double -> Matrix Double
...
@@ -296,7 +296,7 @@ cross' :: Matrix Double -> Matrix Double
cross'
mat
=
run
$
cross
n
mat'
cross'
mat
=
run
$
cross
n
mat'
where
where
mat'
=
use
mat
mat'
=
use
mat
n
=
dim
mat
n
=
dim
mat
{-
{-
...
...
stack.yaml
View file @
ccd5a835
...
@@ -7,6 +7,8 @@ packages:
...
@@ -7,6 +7,8 @@ packages:
#- 'deps/patches-map'
#- 'deps/patches-map'
#- 'deps/servant-job'
#- 'deps/servant-job'
#- 'deps/clustering-louvain'
#- 'deps/clustering-louvain'
#- 'deps/accelerate'
#- 'deps/accelerate-utility'
docker
:
docker
:
enable
:
false
enable
:
false
...
@@ -20,6 +22,7 @@ nix:
...
@@ -20,6 +22,7 @@ nix:
shell-file
:
build-shell.nix
shell-file
:
build-shell.nix
allow-newer
:
true
allow-newer
:
true
extra-deps
:
extra-deps
:
-
git
:
https://github.com/delanoe/data-time-segment.git
-
git
:
https://github.com/delanoe/data-time-segment.git
commit
:
10a416b9f6c443866b36479c3441ebb3bcdeb7ef
commit
:
10a416b9f6c443866b36479c3441ebb3bcdeb7ef
...
@@ -62,9 +65,18 @@ extra-deps:
...
@@ -62,9 +65,18 @@ extra-deps:
-
git
:
https://github.com/kaizhang/haskell-igraph.git
-
git
:
https://github.com/kaizhang/haskell-igraph.git
commit
:
34553acc4ebdcae7065311dcefb426e0fd58c5a0
commit
:
34553acc4ebdcae7065311dcefb426e0fd58c5a0
# Accelerate Linear Algebra and specific instances
# (UndecidableInstances for newer GHC version)
-
git
:
https://gitlab.iscpif.fr/anoe/accelerate.git
commit
:
f5c0e0071ec7b6532f9a9cd3eb33d14f340fbcc9
-
git
:
https://gitlab.iscpif.fr/anoe/accelerate-utility.git
commit
:
83ada76e78ac10d9559af8ed6bd4064ec81308e4
-
accelerate-arithmetic-1.0.0.1@sha256:555639232aa5cad411e89247b27871d09352b987a754230a288c690b6de6d888,2096
-
KMP-0.2.0.0@sha256:6dfbac03ef00ebd9347234732cb86a40f62ab5a80c0cc6bedb8eb51766f7df28,2562
-
KMP-0.2.0.0@sha256:6dfbac03ef00ebd9347234732cb86a40f62ab5a80c0cc6bedb8eb51766f7df28,2562
-
Unique-0.4.7.7@sha256:2269d3528271e25d34542e7c24a4e541e27ec33460e1ea00845da95b82eec6fa,2777
-
Unique-0.4.7.7@sha256:2269d3528271e25d34542e7c24a4e541e27ec33460e1ea00845da95b82eec6fa,2777
-
accelerate-1.2.0.1@sha256:bb1928efe602545df4043692916ed427c959110cbd678d03c3f9c3be25d1ae88,20112
-
duckling-0.1.6.1@sha256:dab60953f405b45fe93e1e745f8cc83e5166e1788b1f4999cc06382e131153d8,47147
-
duckling-0.1.6.1@sha256:dab60953f405b45fe93e1e745f8cc83e5166e1788b1f4999cc06382e131153d8,47147
-
fclabels-2.0.4@sha256:efcc20c6c903d0a59e36eb1cb547a7bbbbba93b6e20b84b06e919c350891beb2,4492
-
fclabels-2.0.4@sha256:efcc20c6c903d0a59e36eb1cb547a7bbbbba93b6e20b84b06e919c350891beb2,4492
-
full-text-search-0.2.1.4@sha256:81f6df3327e5b604f99b15e78635e5d6ca996e504c21d268a6d751d7d131aa36,6032
-
full-text-search-0.2.1.4@sha256:81f6df3327e5b604f99b15e78635e5d6ca996e504c21d268a6d751d7d131aa36,6032
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment