Commit abb0e653 authored by Quentin's avatar Quentin
Browse files

Some small fixes and changes in comments

parent 2b09c780
......@@ -81,6 +81,7 @@ exports.corpus_file_upload = function (req, res) {
if (fs.existsSync(filePath)) {
console.log(`File named ${files.name} already exists, replacing it`);
}
// TRY TO WRITE THE BUFFER HERE ?
files.mv(filePath);
resData.push({ name: files.name, mimetype: files.mimetype, size: files.size, path: filePath });
}
......
......@@ -17,7 +17,8 @@ function nameToRoute(moduleName) {
"tree-tagger": "http://localhost:3000",
"Exporter": "http://localhost:3001",
"Modulix": "http://localhost:3002",
"SDMC": "http://localhost:3003"
"SDMC": "http://localhost:3003",
"Néoveille": "http://localhost:3004"
}
return routeDict[moduleName];
}
......
......@@ -33,7 +33,7 @@ exports.module_add = async function(req, res) {
});
try {
await newModule.save();
successHandler(res, { module }, 201);
successHandler(res, { newModule }, 201);
}
catch (error) {
errorHandler(res, error);
......
......@@ -11,6 +11,17 @@ const failHandler = responseHelper.failHandler; // For eg. "User not found" is a
const pipelineHelper = require('./lib/pipelineHelper');
// DEBUG: fetch all pipelines
exports.debug_pipelines_list = async function(req, res) {
try {
const pipelines = await PipelineModel.find({});
successHandler(res, { pipelines });
}
catch (error) {
errorHandler(res, "debug_pipelines_list: " + error);
}
}
// Add a new pipeline and start it
exports.pipeline_create = function(req,res) {
const newPipeline = PipelineModel({
......
{
"name": "Néoveille",
"description": "Détection de Néologismes",
"parameters":
[
{
"name": "nodigit",
"label": "Exclusion des chiffres",
"description": "Exclu les candidats qui contiennent des chiffres",
"type": "Bool",
"items": null,
"default": true
},
{
"name": "lowercaseonly",
"label": "Uniquement des mots en minuscule",
"description": "Exclu les candidats qui ont des caractères en minuscule, cela évite le bruit dû aux noms propres",
"type": "Bool",
"items": null,
"default": true
},
{
"name": "pattern",
"label": "Pattern de vérification",
"description": "Expression régulière qui sera utilisée pour filtrer la liste des candidats, si vide, sera équivalent à '.*'",
"type": "String",
"items": null,
"default": "\\w{3,}(?:-\\w{3,}){0,3}"
},
{
"name": "exclusiondict",
"label": "Dictionnaire d'exclusion",
"description": "Exclu tous les candidats présents de ce dictionnaire",
"type": "Bool",
"items": null,
"default": true
},
{
"name": "spellchecker",
"label": "Heuristique orthographique",
"description": "Exclu les candidats selon une heuristique basée sur Hunspell, permettant notamment d'éviter le bruit dû aux coquilles orthographiques.",
"type": "Bool",
"items": null,
"default": true
}
]
}
\ No newline at end of file
{
"name": "SDMC",
"description": "Outil de fouille de motifs",
"parameters":
[
{
"name": "motif_type",
"label": "Type de motifs calculés",
"description": null,
"type": "List-Mono",
"items": ["Forme du mot seul", "Lemme du mot seul", "Catégorie syntaxique du mot seul",
"Catégorie syntaxique et lemme du mot"],
"default": "Lemme du mot seul"
},
{
"name": "motif_representation",
"label": "Représentation condensée des motifs",
"description": "Trois types d'extraction vous sont proposées :\n\t\t- Fréquents : retourne tout les motifs qui apparaissent plus que le support minimal.\n\t\t-Fermés : ne retourne pas les sous motifs de même ou plus petite fréquence\n\t\tco- Maximaux : ne retourne aucun sous motifs",
"type": "List-Mono",
"items": ["Fréquents (tous les motifs)", "Fermés (sans sous-motifs de même fréquence)",
"Maximaux (en ôtant les sous-motifs)"],
"default": "Fréquents (tous les motifs)"
},
{
"name": "minimal_gap",
"label": "Gap minimal",
"description": "Nombre d'items minimal que l'extracteur peut ignorer entre deux items d'un motif extrait.",
"type": "Int",
"items": null,
"default": "0"
},
{
"name": "maximal_gap",
"label": "Gap maximal",
"description": "Nombre d'items maximal que l'extracteur peut ignorer entre deux items d'un motif extrait.",
"type": "Int",
"items": null,
"default": "10"
},
{
"name": "minimal_absolute_support",
"label": "Support minimal absolu",
"description": "Nombre minimal d'occurrence d'un motif dans le corpus pour être extrait",
"type": "Int",
"items": null,
"default": "100"
},
{
"name": "minimal_size",
"label": "Taille minimale",
"description": "Nombre minimal de tokens d'un motif extrait",
"type": "Int",
"items": null,
"default": "0"
},
{
"name": "maximal_size",
"label": "Taille maximale",
"description": "Nombre maximal de tokens d'un motif extrait",
"type": "Int",
"items": null,
"default": "5"
},
{
"name": "categories",
"label": "Appartenance d'une ou plusieurs catégories",
"description": "Les patterns contenant des catégories déselectionnés seront exclus",
"type": "List-Poly",
"items": ["Nom", "Verbe", "Adjectif", "Adverbe"],
"default": ["Nom", "Verbe", "Adjectif", "Adverbe"]
}
]
}
\ No newline at end of file
......@@ -33,6 +33,7 @@ const DocumentSchema = new Schema({
tokens: { type: ConlluColumnSchema },
POStags: { type: ConlluColumnSchema },
lemmas: { type: ConlluColumnSchema },
lemmas_no_unknown: { type: ConlluColumnSchema },
tokensIdx: { type: ConlluColumnSchema}
})
......
......@@ -14,10 +14,11 @@ const ParameterSchema = new Schema({
description: String,
type: {
type: String,
enum: ['List-Mono', 'List-Poly', 'Int']
enum: ['List-Mono', 'List-Poly', 'Int', 'Bool', 'String']
},
items: [String],
default: String // If int-2 -> 2 elements, else -> 1 elements,maybe better to split int-2 into 2x int
default: Schema.Types.Mixed
//default: String // If int-2 -> 2 elements, else -> 1 elements,maybe better to split int-2 into 2x int
})
const ModuleSchema = new Schema({
......
......@@ -401,6 +401,14 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"basic-auth": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
"integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
"requires": {
"safe-buffer": "5.1.2"
}
},
"bcryptjs": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
......@@ -2210,6 +2218,38 @@
"resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
"integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
},
"morgan": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
"integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
"requires": {
"basic-auth": "~2.0.1",
"debug": "2.6.9",
"depd": "~2.0.0",
"on-finished": "~2.3.0",
"on-headers": "~1.0.2"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"mpath": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz",
......@@ -2478,6 +2518,11 @@
"ee-first": "1.1.1"
}
},
"on-headers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
......
......@@ -25,6 +25,7 @@
"express-fileupload": "^1.2.0",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.10.5",
"morgan": "^1.10.0",
"passport-jwt": "^4.0.0",
"passport-ldapauth": "^2.1.4",
"swagger-jsdoc": "^4.2.0",
......
......@@ -8,7 +8,7 @@ var moduleController = require('../controllers/moduleController.js');
router.get('/', moduleController.module_list)
// Add a new module
router.post('/', moduleController.module_add)
// GET /modules/:moduleName
// Fetch a module
router.get('/:moduleName', moduleController.module_get)
// Modify a module
router.put('/:moduleName', moduleController.module_modify)
......
......@@ -3,6 +3,8 @@ var router = express.Router();
var pipelineController = require('../controllers/pipelineController.js');
// GET /pipelines
router.get('/', pipelineController.debug_pipelines_list)
// POST /pipelines
router.post('/', pipelineController.pipeline_create)
// GET /pipelines/:pipelineId
......
......@@ -3,6 +3,7 @@ const passport = require('passport');
const cors = require('cors');
const fileUpload = require('express-fileupload');
const auth = require('./routes/auth.js');
const morgan = require('morgan');
const corporaRoutes = require('./routes/corpora.js');
const pipelinesRoutes = require('./routes/pipelines.js');
......@@ -39,7 +40,8 @@ db.once('open', function() {
const app = express();
// Middlewares
app.use(express.json());
app.use(express.json({ limit: "50mb"}));
app.use(morgan('dev'));
app.use(cors());
app.use(fileUpload()); // option: createPArentPath ?
app.use(passport.initialize());
......
{faire} sup=2
{ces} sup=2
{projet} sup=2
{de}{Sarkozy}{et} sup=2
{Manuel}{Valls} sup=2
{jeudi} sup=2
{Les} sup=2
{y} sup=2
{Et} sup=2
{que} sup=2
{deux} sup=2
{avec} sup=2
{À}{16}{h}{30}{la}{compagnie}{Racines}{Carrées}{viendra}{présenter} sup=2
{encore} sup=2
{mois} sup=2
{dans} sup=3
{qui} sup=3
{a} sup=3
{pour} sup=3
{en} sup=3
{sur} sup=3
{Sarkozy} sup=3
{ce} sup=4
{du} sup=4
{pas} sup=4
{de} sup=15
{de}{la} sup=5
{à} sup=5
{des} sup=5
{le} sup=5
{les} sup=6
{et} sup=7
{la} sup=8
Boston, 1926. Suite au décès, dans des circonstances étranges, de son grand-oncle, Francis Thurston découvre dans les documents dont il hérite l’existence d’une secte vouant un culte à une créature innommable, endormie depuis des millions d’années.
Sacrifices indicibles pratiqués dans les bayous de Louisiane, meurtres mystérieux perpétrés dans divers endroits du globe, artistes sombrant dans la démence après des visions nocturnes terrifiantes, renaissance de cultes ancestraux et surtout, une cité cyclopéenne surgissant de l’océan lors d’une tempête… Thurston va comprendre peu à peu que les recherches de son grand-oncle concernant le culte de Cthulhu étaient bien trop proches de la vérité et que, dans l’ombre, des adeptes œuvrent au réveil de leur dieu païen, prêts à faire déferler la folie et la destruction sur le monde.
Les astres sont alignés. La fin est-elle proche ?
Avec cette nouvelle, Lovecraft écrit dans les années vingt l’une des plus fameuses histoires de la littérature fantastique américaine. Cthulhu, le grand ancien qui rêve et attend au fond des noirs abysses océaniques, deviendra à lui seul le symbole de tout l’univers créé par l’auteur de Providence.
Il n'y a pas, dans tout l'Empire, de planète plus inhospitalière que Dune. Partout des sables à perte de vue. Une seule richesse: l'épice de longue vie, née du désert, et que tout l'univers achète à n'importe quel prix. Richesse très convoitée : quand Leto Atréides reçoit Dune en fief, il flaire le piège. Il aura besoin des guerriers Fremen qui, réfugiés au fond du désert, se sont adaptés à une vie très dure en préservant leur liberté, leurs coutumes et leur foi mystique. Ils rêvent du prophète qui proclamera la guerre sainte et qui, à la tête des commandos de la mort, changera le cours de l'histoire.
Cependant les Révérendes Mères du Bene Gesserit poursuivent leur programme millénaire de sélection génétique ; elles veulent créer un homme qui concrétisera tous les dons latents de l'espèce. Tout est fécond dans ce programme, y compris ses défaillances.
Le Messie des Fremen est-il déjà né dans l'Empire?
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment