Extraction de mots-clés facile avec TermExtract pour Python

TermExtract semble être un module permettant d'extraire des termes techniques à partir de données textuelles.

Terme technique (mot-clé) système d'extraction automatique

Jusqu'à présent, il n'était fourni qu'en tant que module Perl, mais il semble qu'une version bêta soit sortie pour Python à la fin de l'année dernière. J'ai pensé qu'il pouvait être utilisé comme contre-mesure contre des mots inconnus lors de l'analyse de texte, alors j'ai essayé de l'utiliser.

Installation

Téléchargez simplement le fichier zip depuis Officiel, décompressez-le dans un emplacement approprié et exécutez ce qui suit.

python setup.py install

Malheureusement, il ne semble pas être installé depuis pip ou conda.

Extraction de mots-clés à l'aide du résultat de sortie de l'analyseur morphologique

Officiellement

Reçoit le résultat de l'analyse morphologique de Wafubu, un logiciel d'analyse morphologique japonais, et renvoie une liste de mots composés (nomenclature simple séparée par des blancs) ou un dictionnaire (le mot composite est la clé et le nombre d'occurrences du mot composé est la valeur).

Il y a.

Le résultat de l'analyse morphologique à passer semble être passé dans le format suivant (l'exemple de texte officiel ci-dessous).

sample.txt


Nomenclature du traitement du langage naturel,Général,*,*,*,*,mannequin,mannequin,mannequin
(Symbole,Ouvrir les parenthèses,*,*,*,*,(,(,(
Ri verbe auxiliaire,*,*,*,Langue littéraire,Forme basique,Ri,Li,Li
, Symbole,Point de lecture,*,*,*,*,、,、,、
Nomenclature anglaise,Général,*,*,*,*,mannequin,mannequin,mannequin
Nomenclature des mots,Général,*,*,*,*,mannequin,mannequin,mannequin
:nom,Changer de connexion,*,*,*,*,*
substantif naturel,Général,*,*,*,*,*
langue substantif,Général,*,*,*,*,*
traitement substantif,Général,*,*,*,*,*
・
・
・

Le résultat de l'analyse morphologique dans Mecab est divisé en lignes. Chargez-le avec le script Python suivant.

import termextract.mecab
import termextract.core
import collections

#Lisez le dossier
tagged_text = open("sample.txt", "r", encoding="utf-8").read()

#Extraire des mots composés et calculer leur importance
frequency = termextract.mecab.cmp_noun_dict(tagged_text)
LR = termextract.core.score_lr(frequency,
         ignore_words=termextract.mecab.IGNORE_WORDS,
         lr_mode=1, average_rate=1
     )
term_imp = termextract.core.term_importance(frequency, LR)

#Tri et sortie par ordre décroissant d'importance
data_collection = collections.Counter(term_imp)
for cmp_noun, value in data_collection.most_common():
    print(termextract.core.modify_agglutinative_lang(cmp_noun), value, sep="\t")

La sortie ressemble à ceci:

Traitement du langage naturel 31.843366656181313
they  11.618950038622252
Signification 10.392304845413264
Anglais 10.059467437463484
Technologie de base 9.361389277282864
Traitement statistique du langage naturel 9.085602964160698
Analyse 8.485281374238571
・
・
・

Le résultat est juste, et je peux extraire les mots composés tels quels (bien qu'il existe de nombreux cas où c'est évidemment étrange ...).

Cependant, il est subtilement difficile à utiliser ** l'entrée est le résultat de l'analyse morphologique de Mecab **. J'ai senti que ce serait plus facile à utiliser si je pouvais passer du texte brut ou du texte séparé.

Extraction de mots-clés de la méthode des mots vides japonais

Il semble qu'une autre méthode d'extraction soit également fournie. L'une d'elles, ** extraction des termes techniques de la méthode des mots vides japonais **, est officiellement expliquée comme suit.

Reçoit un texte brut japonais et renvoie une liste de mots composés (nomenclature simple séparée par des blancs) ou un dictionnaire (les mots composites sont la clé et le nombre d'occurrences des mots composés est la valeur). Le mot composé est coupé en divisant la phrase par "Hiragana" et "Symbole".

Je pense que cela signifie tokeniser avec hiragana et symboles comme délimiteurs (désolé, je ne l'ai pas lu correctement ...)

Cela ne charge que du texte brut.

import collections
import termextract.japanese_plaintext
import termextract.core

#Lisez le dossier
text = open("sample.txt", "r", encoding="utf-8").read()

#Extraire des mots composés et calculer leur importance
frequency = termextract.japanese_plaintext.cmp_noun_dict(text)
LR = termextract.core.score_lr(frequency,
         ignore_words=termextract.japanese_plaintext.IGNORE_WORDS,
         lr_mode=1, average_rate=1
     )
term_imp = termextract.core.term_importance(frequency, LR)

#Tri et sortie par ordre décroissant d'importance
data_collection = collections.Counter(term_imp)
for cmp_noun, value in data_collection.most_common():
    print(termextract.core.modify_agglutinative_lang(cmp_noun), value, sep="\t")

La sortie ressemble à ceci:

Intelligence artificielle 1226.4288753047445
Humain 277.1173032591193
Intelligence 185.75930965317852
Développement 88.6373649378885
Conscience 60.00624902367479
Artificiel 57.917332434843445
Possible 55.20783921098894
・
・
・

J'espère que c'est facile à utiliser.

Comparaison des deux méthodes

Dans ce qui précède, nous avons introduit deux méthodes, la méthode des résultats de l'analyse morphologique et la méthode des mots vides, mais regardons les 20 meilleurs scores de chaque méthode.

Méthode d'analyse morphologique

Intelligence 12.649110640673518
Intelligence informatique 5.029733718731742
Combattant 4.7381372205375865
Combat 4.58257569495584
Pour le contrôle du combattant 4.4406237146062955
Ordinateur 4.426727678801286
Intelligence artificielle 4.355877174692862
Etude 4.0
Calcul 4.0
Commande automatique 3.9359793425308607
Apprentissage 3.872983346207417
Système de combat automatique 3.802742902833608
Technologie d'intelligence artificielle 3.7719455481170785
Calcul logique 3.7224194364083982
Apprentissage automatique 3.6628415014847064
AI symbolique 3.6342411856642793
Commande automatique possible 3.5254687665352296
Logique 3.4641016151377544
Machine 3.4641016151377544
Calculateur mécanique 3.413473673690155

Méthode de mot d'arrêt

Intelligence artificielle 1226.4288753047445
Humain 277.1173032591193
Intelligence 185.75930965317852
Développement 88.6373649378885
Conscience 60.00624902367479
Artificiel 57.917332434843445
Possible 55.20783921098894
Étude 51.27978102078589
Apprentissage 49.31317739277511
Société d'intelligence artificielle 48.855373993311964
Réalisation 48.748063633179314
Théorie 40.51490946041508
Annonce 39.39438441683934
Intelligence informatique 35.98098913381863
Possibilité 34.82443169313786
Méthode 34.6517883306879
Utiliser 32.82677759681713
Intellectuel 31.52620185751426
Fonctionnement 30.582796407248203
Action 30.582796407248203
Apparence 29.146786564179294

À première vue, il semble que la méthode d'analyse morphologique permet d'extraire des mots-clés plus importants avec un score élevé.

Impressions

Puis-je le considérer comme un moyen facile de traiter des mots inconnus qui ne peuvent pas être détectés par Mecab + Neologd? Cependant, dans le cas de la méthode d'analyse morphologique, elle est difficile à utiliser en tant que module, il semble donc que vous deviez en fabriquer vous-même une mince enveloppe. Une vérification appropriée est également requise.

Recommended Posts

Extraction de mots-clés facile avec TermExtract pour Python
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Synchronisation facile des dossiers avec Python
Extraction de mots-clés par MeCab (python)
Compilation facile de Python avec NUITKA-Utilities
Serveur HTTP facile avec Python
Arguments de mots-clés pour les fonctions Python
[Python] Traitement parallèle facile avec Joblib
Extraction de texte avec AWS Textract (Python3.6)
Premiers pas avec Python pour les classes PHPer
Programmation facile Python + OpenCV avec Canopy
Transmission de courrier facile avec Hâte Python3
Optimisation bayésienne très simple avec Python
Visualisez facilement vos données avec Python seaborn.
Exécution parallèle facile avec le sous-processus python
Premiers pas avec Python pour les fonctions PHPer
Conversion de style avec python Easy memorandum avec git clone [Pour les utilisateurs intermédiaires]
[Python] Test super facile avec instruction assert
INSÉRER dans MySQL avec Python [Pour les débutants]
Python3> dans le mot clé> Vrai avec une correspondance partielle?
Grattage WEB avec Python (pour mémo personnel)
[Python] Vérification simple du type d'argument avec la classe de données
Enregistrement SSH manuel pour coreserver avec python
Utiliser DeepL avec python (pour la traduction d'articles)
Mémo pour demander des KPI avec python
Amplifiez les images pour l'apprentissage automatique avec Python
Conseils pour gérer les binaires en Python
Introduction facile de la reconnaissance vocale avec Python
Conseils pour utiliser python + caffe avec TSUBAME
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
Traiter plusieurs listes avec for en Python
[Easy Python] Lecture de fichiers Excel avec openpyxl
Premiers pas avec Python pour PHPer-Super Basics
Application Web facile avec Python + Flask + Heroku
déboguer la connexion mysql avec python mysql.connector
[Python] Lire des images avec OpenCV (pour les débutants)
Traitez facilement des images en Python avec Pillow
Création WebApi avec Python (création CRUD) Pour les débutants
[Easy Python] Lecture de fichiers Excel avec des pandas
Scraping Web facile avec Python et Ruby
[Python] Essayez facilement l'apprentissage amélioré (DQN) avec Keras-RL
Préparation au grattage au python [Saveur chocolat]
[Pour les débutants] Essayez le web scraping avec Python
30/10/2016 else pour Python3> pour:
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
python [pour moi]
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Grattage avec Python
Python est facile
Statistiques avec python
Python pour les super débutants Super débutants Python # Facile à éliminer
Raisonnement causal et recherche causale par Python (pour les débutants)
Obtenez un billet pour un parc à thème avec python
Extraction de texte avec l'API GCP Cloud Vision (Python3.6)
Grattage avec Python
Extraction de bords avec python + OpenCV (filtre Sobel, filtre laplacien)
Python avec Go
[Français] Premiers pas avec Rust pour les programmeurs Python
Créer un LINE BOT avec Minette pour Python
Construire un environnement Anaconda pour Python avec pyenv