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.
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.
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é.
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.
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.
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
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é.
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