Plugin pour SPIP qui permet de découvrir des entités nommées dans un corpus. On essaie notamment de trouver les personnalités évoquées par période de temps.
On peut trouver des noms de personnalités dans un texte en recherchant le masque suivant : Xxx Xxx xx xx Xxx
Ce masque est cependant perturbé par les mots courants de la langue francaise en début de phrases, et les pays, les villes et les institutions qui font également usage des capitales.
On essaie donc d'isoler ces entités nommées connues avant de rechercher le masque sur le reliquat du texte.
On s'appuie pour cela sur des listes issues du site typo.mondediplo.net, ou monde-diplomatique.fr
-
Lieux -- Pays -- Capitales -- Villes
-
Institutions -- Entreprises -- ONG -- Institutions publiques -- Partis politiques
On cherche ensuite en Regexp le masque Xxx Xxx xx xx Xxx sur le reliquat du texte, en ignorant les mots de la langue française les plus fréquents constatés. fichier stop word mots_courants.php
.
On obtient : -> Des Personnalités -> D'autres entités pour gonfler les listes prédéfinies.
spip entites ; spip entites -m oui
Lancer la commande spip-cli spip entites
puis spip entites -m oui
. La commande spip entites
traite 1 000 articles. On peut la relancer plusieurs fois si il faut traiter plus que 1 000 articles, voire carrément envoyer for i in {1..50} ; do spip entites ; done
.
Après une une indexation passer les traitements d'optimisations des données à posteriori avec spip entites -m oui
On peut ensuite voir les entités nommées sur la page /?page=explorer
.
spip entites // pour indexer 1 000 articles.
spip entites -m oui // pour optimiser après une indexation
spip entites -s "gilets jaunes" // réindexer les articles dont le texte contient "gilets jaunes"
spip entites -r oui // pour recommencer à zéro l'indexation
Voir les entites trouvées pour un article en particulier (debug)
?page=extraire_entites&id_article=59646
Calculer les entités dans un fichier.txt
en ligne de commandes
spip entites fichier.txt
Installer un spip avec une base de données d'articles + le plugin spip-cli
(https://contrib.spip.net/SPIP-Cli) , puis
cd plugins/
git clone https://github.com/BoOz/entites_nommees.git
chmod -R g+rwX entites_nommees
chmod +x entites_nommees/spip-cli/sync_data.sh
Copier les fichiers du répertoire /squelettes
dans votre propre répertoire /squelettes
ou /squelettes/contenu
.
Activer ensuite le plugin entites_nommees
dans l'admin de SPIP.
Définir dans config/mes_options.php
le secteur dans lequel prendre les articles pour trouver des entités. Par défaut 1
.
define('_SECTEUR_ENTITES',1);
define('_SECTEUR_ENTITES',"919, 1379,1723,901"); // pour plusieurs secteurs
Note : en SPIP 2, installer aussi le plugin iterateurs
: https://contrib.spip.net/Iterateurs
RewriteRule ^references$ spip.php?page=entites [QSA,L]
RewriteRule ^references/([a-zA-Z0-9._%\ -]+)/?$ spip.php?page=entite&entite=$1 [QSA,L]
spip entites -m oui // pour optimiser après une indexation
Le fichier recaler.txt
permet de réformater des entités mal indexées.
format :
// entite actuelle entite dans l'extrait type_entite entite
Sont reindexées aussi les entités indéterminées ultérieurement ajoutées dans les fichiers *_ajouts
dans chaque sous répertoires de listes lexicales (mise à jour du type d'entités).
https://github.com/BoOz/entites_nommees/tree/master/listes_lexicales
Enfin on efface les mots de mots_courants.php
qui ont été enregistrés par erreur.
https://github.com/BoOz/entites_nommees/blob/master/mots_courants.php
https://www.textrazor.com/demo https://github.com/ICIJ/datashare https://permid.org/