# Terms extraction

Ce serveur propose des services d'extraction de termes dans des textes.

> Le code source de ces services est désormais hébergé [sur
> GitHub](https://github.com/Inist-CNRS/web-services/tree/main/services/terms-extraction).

## Teeft

Le service Teeft renvoie les termes les plus spécificiques d'un texte, en
français ou en anglais.

### Bibliographie

Cuxac P., Kieffer N., Lamirel J.C. : SKEEFT: indexing method taking into account the structure of the document. 20th Collnet meeting, 5-8 Nov 2019, Dalian, China.

### Configuration

Paquets npm nécessaires:

- `@ezs/core` (au moins version 3)
- `@ezs/teeft`,
- `@ezs/basics`,
- `@ezs/strings`

### Utilisation

- [v1/teeft/fr](#v1/teeft/fr)
- [v1/teeft/en](#v1/teeft/en)

#### v1/teeft/fr

Prend en entrée un JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec un tableau de 5 termes (par défaut) dans le champ `value`.

Ne fonctionne correctement que sur un texte en français de plusieurs
paragraphes.  
Peut être perturbé par la présence de formules mathématiques, chimiques, *etc.*,
ou de tableaux.

##### Paramètres de v1/teeft/fr

| nom    | description                                                                   |
| :----- | :---------------------------------------------------------------------------- |
| nb     | nombre de termes à récupérer au maximum (de `1` à `Infinity`, `5` par défaut) |
| indent | `true` ou `false`, indente le JSON résultat ou non (`false` par défaut)       |

##### Exemple de teeft/fr

En entrée:

```json
[
    {
        "value": "Mars 2020 est une mission spatiale d'exploration de la planète Mars développée par le JPL, établissement de l'agence spatiale américaine (NASA). La mission consiste à déployer l'astromobile (rover) Perseverance sur le sol martien pour étudier sa surface. Mars 2020 constitue la première d'une série de trois missions dont l'objectif final est de ramener des échantillons du sol martien sur Terre pour permettre leur analyse. Ce projet, considéré comme prioritaire par la communauté scientifique depuis plusieurs décennies, n'avait jamais été mis en œuvre du fait de son coût, de ses difficultés techniques et du risque d'échec élevé. Pour remplir les objectifs de sa mission, l 'astromobile doit prélever une quarantaine de carottes de sol et de roches sur des sites sélectionnés à l'aide des instruments embarqués.Le résultat de ces prélèvements doit être déposé par l 'astromobile sur des emplacements soigneusement repérés en attendant d'être ramenés sur Terre par une future mission étudiée conjointement par la NASA et l 'Agence spatiale européenne. Selon le planning élaboré par les deux agences, le retour sur Terre est prévu pour 2031 sous réserve de son financement. Le but final est de pouvoir effectuer sur Terre une analyse fine des échantillons du sol martien, notamment d'identifier d 'éventuelles formes de vie anciennes, en utilisant toutes les capacités des instruments terrestres qui, contrairement à ceux embarqués sur les engins spatiaux, ne sont pas limitées par les contraintes de masse.La sonde spatiale Mars 2020 et l 'astromobile Perseverance reprennent l'architecture de Mars Science Laboratory et son rover Curiosity qui explore depuis 2012 la surface de Mars.Perseverance est un engin de plus d 'une tonne qui dispose d'une palette d 'instruments scientifiques (caméras, spectromètres de différents types) qui sont utilisés pour identifier les sites les plus intéressants, fournir le contexte du prélèvement effectué (caractéristiques géologiques, conditions climatiques à la formation) et effectuer une première analyse chimique : ce sont le spectromètre de fluorescence des rayons X PIXL, le spectromètre Raman SHERLOC, le spectromètre imageur SuperCam et la caméra Mastcam-Z. L'astromobile emporte également une station météorologique(MEDA), un radar destiné à sonder les couches superficielles du sol(RIMFAX).Deux expériences doivent tester sur le terrain des technologies avant leur mise en œuvre de manière opérationnelle dans de prochaines missions: MOXIE produit de l 'oxygène à partir de l'atmosphère martienne(ISRU) et MHS(Ingenuity), un petit hélicoptère de moins de deux kilogrammes, va tester les capacités d 'un engin aérien dans l'atmosphère très ténue de Mars.Mars 2020 décolle le 30 juillet 2020 en profitant de la fenêtre de lancement vers Mars qui s 'ouvre tous les 24 à 28 mois. L'astromobile atterrit le 18 février 2021 dans le cratère Jezero.Ce site, emplacement d 'un ancien lac permanent qui conserve les traces de plusieurs deltas de rivière, a été retenu parce qu'il a pu constituer un lieu favorable à l 'apparition de la vie et parce qu'il présente une grande diversité géologique.Le coût de la mission Mars 2020 est estimé à 2, 5 milliards de dollars en incluant le lancement et la conduie des opérations durant la mission primaire, qui doit durer trois années terrestres.",
        "id": "https://fr.wikipedia.org/wiki/Mars_2020_(mission_spatiale)"
    },
    {
        "id": "https://fr.wikipedia.org/wiki/Mars_Exploration_Rover",
        "value": "Mars Exploration Rover (MER) est une mission double de la NASA lancée en 2003 et composée de deux robots mobiles ayant pour objectif d'étudier la géologie de la planète Mars et en particulier le rôle joué par l'eau dans l'histoire de la planète. Les deux robots ont été lancés au début de l'été 2003 et se sont posés en janvier 2004 sur deux sites martiens susceptibles d'avoir conservé des traces de l'action de l'eau dans leur sol. Chaque rover ou astromobile, piloté par un opérateur depuis la Terre, a alors entamé un périple en utilisant une batterie d'instruments embarqués pour analyser les roches les plus intéressantes :MER-A, rebaptisé Spirit, a atterri le 3 janvier 2004 dans le cratère Gusev, une dépression de 170 kilomètres de diamètre qui a peut-être accueilli un lac ;MER-B, renommé Opportunity, s'est posé le 24 janvier 2004 sur Meridiani Planum.Chaque rover pèse environ 185 kg et se déplace sur six roues mues par l'énergie électrique fournie par des panneaux solaires. Il est équipé de trois paires de caméras utilisées pour la navigation et de plusieurs instruments scientifiques : une caméra panoramique située sur un mât à 1,5 mètre de hauteur, un outil pour abraser la surface des roches porté par un bras articulé sur lequel se trouvent également un spectromètre à rayons X, un spectromètre Mössbauer et une caméra microscope. Enfin, un spectromètre infrarouge est utilisé pour l'analyse des roches et de l'atmosphère.La mission MER fait partie du programme d'exploration de Mars de la NASA et prend la suite de deux missions américaines sur le sol martien aux capacités scientifiques beaucoup plus limitées : le programme Viking de 1976 et Mars Pathfinder de 1997. Les objectifs scientifiques du programme ont été remplis avec la découverte par les deux robots de plusieurs formations rocheuses qui résultent probablement de l'action de l'eau dans le passé : billes d'hématite grise et silicates. Les robots ont également permis d'étudier les phénomènes météorologiques, d'observer des nuages et de caractériser les propriétés des couches de l'atmosphère martienne. Les deux véhicules MER conçus et gérés par le Jet Propulsion Laboratory ont largement dépassé les objectifs qui leur étaient fixés : parcourir 600 mètres et rester opérationnel durant 90 jours martiens. Spirit, désormais bloqué par le sable, a pu parcourir 7,7 kilomètres et a transmis ses dernières données scientifiques le 22 mars 2010. Opportunity, après une tempête de sable qui a recouvert ses panneaux solaires, est devenu injoignable et sa mission s'est officiellement terminée le 13 février 2019."
    }
]
```

En sortie:

```json
[{
    "id": "https://fr.wikipedia.org/wiki/Mars_2020_(mission_spatiale)",
    "value": [
        "astromobile",
        "sol martien",
        "mission spatiale",
        "planète mars",
        "jpl établissement"
    ]
},
{
    "id": "https://fr.wikipedia.org/wiki/Mars_Exploration_Rover",
    "value": [
        "deux robots",
        "panneaux solaires",
        "mars exploration rover mer",
        "mission double",
        "deux robots mobiles"
    ]
}]
```

#### v1/teeft/en

Prend en entrée un JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec un tableau de 5 termes (au plus) dans le champ `value`.

Ne fonctionne correctement que sur un texte en anglais de plusieurs paragraphes.

Peut être perturbé par la présence de formules mathématiques, chimiques, *etc.*,
ou de tableaux.

##### Paramètres de v1/teeft/en

| nom    | description                                                                   |
| :----- | :---------------------------------------------------------------------------- |
| nb     | nombre de termes à récupérer au maximum (de `1` à `Infinity`, `5` par défaut) |
| indent | `true` ou `false`, indente le JSON résultat ou non (`false` par défaut)       |

##### Exemple de teeft/en

En entrée:

```json
[
    {
        "value": "Perseverance, nicknamed Percy, is a car-sized Mars rover designed to explore the crater Jezero on Mars as part of NASA's Mars 2020 mission. It was manufactured by the Jet Propulsion Laboratory and launched on 30 July 2020, at 11:50 UTC. Confirmation that the rover successfully landed on Mars was received on 18 February 2021, at 20:55 UTC. As of 16 December 2021, Perseverance has been active on Mars for 293 sols (301 Earth days) since its landing. Following the rover's arrival, NASA named the landing site Octavia E. Butler Landing. Perseverance has a similar design to its predecessor rover, Curiosity, from which it was moderately upgraded. It carries seven primary payload instruments, nineteen cameras, and two microphones. The rover also carried the mini-helicopter Ingenuity to Mars, an experimental aircraft and technology showcase that made the first powered flight on another planet on 19 April 2021. Since its first flight, Ingenuity has made 14 more flights for a total of 15 powered flights on another planet. The rover's goals include identifying ancient Martian environments capable of supporting life, seeking out evidence of former microbial life existing in those environments, collecting rock and soil samples to store on the Martian surface, and testing oxygen production from the Martian atmosphere to prepare for future crewed missions. The Perseverance rover has four main science objectives[20] that support the Mars Exploration Program's science goals: Looking for habitability: identify past environments that were capable of supporting microbial life. Seeking biosignatures: seek signs of possible past microbial life in those habitable environments, particularly in specific rock types known to preserve signs over time. Caching samples: collect core rock and regolith (\"soil\") samples and store them on the Martian surface. Preparing for humans: test oxygen production from the Martian atmosphere. In the first science campaign Perseverance performs an arching drive southward from its landing site to the Séítah unit to perform a \"toe dip\" into the unit to collect remote-sensing measurements of geologic targets. After that it will return to the Crater Floor Fractured Rough to collect the first core sample there. Passing by the Octavia B. Butler landing site concludes the first science campaign. The second campaign will include several months of travel towards the \"Three Forks\" where Perseverance can access geologic locations at the base of the ancient delta of Neretva river, as well as ascend the delta by driving up a valley wall to the northwest.",
        "id": "https://en.wikipedia.org/wiki/Perseverance_(rover)"
    },
    {
        "value": "Text mining, also referred to as text data mining, similar to text analytics, is the process of deriving high-quality information from text. It involves \"the discovery by computer of new, previously unknown information, by automatically extracting information from different written resources.\" Written resources may include websites, books, emails, reviews, and articles. High-quality information is typically obtained by devising patterns and trends by means such as statistical pattern learning. According to Hotho et al. (2005) we can differ three different perspectives of text mining: information extraction, data mining, and a KDD (Knowledge Discovery in Databases) process. Text mining usually involves the process of structuring the input text (usually parsing, along with the addition of some derived linguistic features and the removal of others, and subsequent insertion into a database), deriving patterns within the structured data, and finally evaluation and interpretation of the output. 'High quality' in text mining usually refers to some combination of relevance, novelty, and interest. Typical text mining tasks include text categorization, text clustering, concept/entity extraction, production of granular taxonomies, sentiment analysis, document summarization, and entity relation modeling (i.e., learning relations between named entities). Text analysis involves information retrieval, lexical analysis to study word frequency distributions, pattern recognition, tagging/annotation, information extraction, data mining techniques including link and association analysis, visualization, and predictive analytics. The overarching goal is, essentially, to turn text into data for analysis, via application of natural language processing (NLP), different types of algorithms and analytical methods. An important phase of this process is the interpretation of the gathered information. A typical application is to scan a set of documents written in a natural language and either model the document set for predictive classification purposes or populate a database or search index with the information extracted. The document is the basic element while starting with text mining. Here, we define a document as a unit of textual data, which normally exists in many types of collections. The term text analytics describes a set of linguistic, statistical, and machine learning techniques that model and structure the information content of textual sources for business intelligence, exploratory data analysis, research, or investigation. The term is roughly synonymous with text mining; indeed, Ronen Feldman modified a 2000 description of \"text mining\" in 2004 to describe \"text analytics\". The latter term is now used more frequently in business settings while \"text mining\" is used in some of the earliest application areas, dating to the 1980s, notably life-sciences research and government intelligence.",
        "id": "https://en.wikipedia.org/wiki/Text_mining"
    }
]
```

En sortie:

```json
[
  {
    "id": "https://en.wikipedia.org/wiki/Perseverance_(rover)",
    "value": [
      "perseverance",
      "martian surface",
      "martian atmosphere",
      "crater jezero",
      "jet propulsion laboratory"
    ]
  },
  {
    "id": "https://en.wikipedia.org/wiki/Text_mining",
    "value": [
      "analytics",
      "text analytics",
      "high-quality information",
      "natural language",
      "text data"
    ]
  }
]
```

#### v1/teeft/with-numbers/fr

Prend en entrée un JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec un tableau de 5 termes (par défaut) dans le champ `value`.

Ne fonctionne correctement que sur un texte en français de plusieurs
paragraphes.  
La différence par rapport à [v1/teeft/fr](#v1teeftfr) est que les chiffres sont
encodés avant traitement (et décodés après), ce qui peut produire des termes
incluant des nombres.  

##### Paramètres

| nom    | description                                                                   |
| :----- | :---------------------------------------------------------------------------- |
| nb     | nombre de termes à récupérer au maximum (de `1` à `Infinity`, `5` par défaut) |
| indent | `true` ou `false`, indente le JSON résultat ou non (`false` par défaut)       |

#### v1/teeft/with-numbers/en

Prend en entrée un JSON avec deux champs: `id` et `value`, et renvoie un JSON
avec un tableau de 5 termes (au plus) dans le champ `value`.

Ne fonctionne correctement que sur un texte en anglais de plusieurs paragraphes.

Cette version `with-numbers` de [v1/teeft/en](#v1/teeft/en) encode les chiffres
avant de traiter le texte, et les décode ensuite, évitant ainsi certains
mécanismes d'élimination des nombres.  

##### Paramètres

| nom    | description                                                                   |
| :----- | :---------------------------------------------------------------------------- |
| nb     | nombre de termes à récupérer au maximum (de `1` à `Infinity`, `5` par défaut) |
| indent | `true` ou `false`, indente le JSON résultat ou non (`false` par défaut)       |

##### Exemple

En entrée:

```json
[
  {
    "id": "MPES-ERM_ER2023_000737",
    "value": "Flow control based 5 MW wind turbine enhanced energy production for hydrogen generation cost reduction"
  },
  {
    "id": "MPES-ERM_ER2023_001916",
    "value": "Study on the Motion Characteristics of 10 MW Superconducting Floating Offshore Wind Turbine Considering 2nd Order Wave Effect"
  }
]
```

En sortie:

```json
[
  {
    "id": "MPES-ERM_ER2023_000737",
    "value":
    [
      "flow control",
      "5 mw wind turbine",
      "energy production",
      "hydrogen generation cost"
    ]
  },
  {
    "id": "MPES-ERM_ER2023_001916",
    "value":
    [
      "motion characteristics",
      "10 mw",
      "offshore wind turbine",
      "2nd order wave"
    ]
  }
]
```
