Einfache Schlüsselwortextraktion mit TermExtract für Python

TermExtract scheint ein Modul zum Extrahieren von Fachbegriffen aus Textdaten zu sein.

Automatisches Extraktionssystem für Fachbegriffe (Schlüsselwörter)

Bisher wurde es nur als Perl-Modul bereitgestellt, aber es scheint, dass Ende letzten Jahres eine Beta-Version für Python veröffentlicht wurde. Ich dachte, es könnte als Gegenmaßnahme gegen unbekannte Wörter bei der Analyse von Text verwendet werden, also habe ich versucht, es zu verwenden.

Installation

Laden Sie einfach die Zip-Datei von Official herunter, entpacken Sie sie an einen geeigneten Ort und führen Sie die folgenden Schritte aus.

python setup.py install

Leider scheint es nicht von Pip oder Conda installiert zu sein.

Schlüsselwortextraktion unter Verwendung des Ausgabeergebnisses des morphologischen Analysators

Offiziell

Erhält das morphologische Analyseergebnis von Wafubu, einer morphologischen Analysesoftware für japanische Sätze, und gibt eine Liste zusammengesetzter Wörter (durch Leerzeichen getrennte einzelne Nomenklatur) oder ein Wörterbuch zurück (zusammengesetztes Wort ist der Schlüssel und die Anzahl der Vorkommen des zusammengesetzten Wortes ist der Wert).

Es gibt.

Das zu übergebende morphologische Analyseergebnis scheint im folgenden Format (dem offiziellen Beispieltext unten) übergeben zu werden.

sample.txt


Nomenklatur für die Verarbeitung natürlicher Sprache,Allgemeines,*,*,*,*,Dummy,Dummy,Dummy
(Symbol,Klammern öffnen,*,*,*,*,(,(,(
Ri Hilfsverb,*,*,*,Literarische Sprache,Grundform,Ri,Li,Li
, Symbol,Lesepunkt,*,*,*,*,、,、,、
Englische Nomenklatur,Allgemeines,*,*,*,*,Dummy,Dummy,Dummy
Wortnomenklatur,Allgemeines,*,*,*,*,Dummy,Dummy,Dummy
:Substantiv,Verbindung ändern,*,*,*,*,*
natürliches Substantiv,Allgemeines,*,*,*,*,*
Sprache Nomen,Allgemeines,*,*,*,*,*
Verarbeitungsnomen,Allgemeines,*,*,*,*,*
・
・
・

Das morphologische Analyseergebnis in Mecab ist in Linien unterteilt. Laden Sie dies mit dem folgenden Python-Skript.

import termextract.mecab
import termextract.core
import collections

#Lesen Sie die Datei
tagged_text = open("sample.txt", "r", encoding="utf-8").read()

#Extrahieren Sie zusammengesetzte Wörter und berechnen Sie die Wichtigkeit
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)

#Sortieren und ausgeben in absteigender Reihenfolge der Wichtigkeit
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")

Die Ausgabe sieht folgendermaßen aus:

Verarbeitung natürlicher Sprache 31.843366656181313
they  11.618950038622252
Bedeutung 10.392304845413264
Englisch 10.059467437463484
Grundtechnologie 9.361389277282864
Statistische Verarbeitung natürlicher Sprache 9.085602964160698
Analyse 8.485281374238571
・
・
・

Das Ergebnis ist fair und ich kann zusammengesetzte Wörter so extrahieren, wie sie sind (obwohl es viele Fälle gibt, in denen es offensichtlich seltsam ist ...).

Es ist jedoch auf subtile Weise schwierig, ** die Eingabe ist das morphologische Analyseergebnis von Mecab **. Ich hatte das Gefühl, dass es einfacher wäre, wenn ich einfachen oder getrennten Text übergeben könnte.

Schlüsselwort-Extraktion der japanischen Stoppwortmethode

Es scheint, dass auch eine andere Extraktionsmethode vorgesehen ist. Eine davon, ** Extraktion der Fachbegriffe der japanischen Stoppwortmethode **, wird offiziell wie folgt erklärt.

Erhält einen japanischen Klartext und gibt eine Liste zusammengesetzter Wörter (durch Leerzeichen getrennte einzelne Nomenklatur) oder ein Wörterbuch zurück (zusammengesetzte Wörter sind der Schlüssel und die Anzahl der Vorkommen der zusammengesetzten Wörter ist der Wert). Das zusammengesetzte Wort wird ausgeschnitten, indem der Satz durch "Hiragana" und "Symbol" geteilt wird.

Ich denke, es bedeutet, mit Hiragana und Symbolen als Trennzeichen zu token (sorry, ich habe es nicht richtig gelesen ...)

Dies lädt nur einfachen Text.

import collections
import termextract.japanese_plaintext
import termextract.core

#Lesen Sie die Datei
text = open("sample.txt", "r", encoding="utf-8").read()

#Extrahieren Sie zusammengesetzte Wörter und berechnen Sie die Wichtigkeit
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)

#Sortieren und ausgeben in absteigender Reihenfolge der Wichtigkeit
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")

Die Ausgabe sieht folgendermaßen aus:

Künstliche Intelligenz 1226.4288753047445
Mensch 277.1173032591193
Intelligenz 185.75930965317852
Entwicklung 88.6373649378885
Bewusstsein 60.00624902367479
Künstlich 57.917332434843445
Möglich 55.20783921098894
・
・
・

Ich hoffe das ist einfach zu bedienen.

Vergleich beider Methoden

Oben haben wir die Ergebnismethode für die morphologische Analyse und die Stoppwortmethode eingeführt. Schauen wir uns jedoch die 20 besten Ergebnisse für jede Methode an.

Morphologische Analysemethode

Intelligenz 12.649110640673518
Computergestützte Intelligenz 5.029733718731742
Kämpfer 4.7381372205375865
Kampf 4.58257569495584
Zur Kampfkontrolle 4.4406237146062955
Computer 4.426727678801286
Künstliche Intelligenz 4.355877174692862
Studie 4.0
Berechnung 4.0
Automatische Steuerung 3.9359793425308607
Lernen 3.872983346207417
Automatisches Kampfsystem 3.802742902833608
Technologie der künstlichen Intelligenz 3.7719455481170785
Logische Berechnung 3.7224194364083982
Maschinelles Lernen 3.6628415014847064
Symbolische KI 3.6342411856642793
Automatische Steuerung möglich 3.5254687665352296
Logik 3.4641016151377544
Maschine 3.4641016151377544
Mechanischer Computer 3.413473673690155

Stoppwortmethode

Künstliche Intelligenz 1226.4288753047445
Mensch 277.1173032591193
Intelligenz 185.75930965317852
Entwicklung 88.6373649378885
Bewusstsein 60.00624902367479
Künstlich 57.917332434843445
Möglich 55.20783921098894
Studie 51.27978102078589
Lernen 49.31317739277511
Gesellschaft für künstliche Intelligenz 48.855373993311964
Realisierung 48.748063633179314
Theorie 40.51490946041508
Ankündigung 39.39438441683934
Computergestützte Intelligenz 35.98098913381863
Möglichkeit 34.82443169313786
Methode 34.6517883306879
Verwenden Sie 32.82677759681713
Intellektuell 31.52620185751426
Bedienung 30.582796407248203
Aktion 30.582796407248203
Aussehen 29.146786564179294

Auf den ersten Blick scheint es, dass die morphologische Analysemethode wichtigere Schlüsselwörter mit einer hohen Punktzahl extrahieren kann.

Impressionen

Darf ich es als eine einfache Möglichkeit betrachten, mit unbekannten Wörtern umzugehen, die von Mecab + Neologd nicht erkannt werden können? Im Fall der morphologischen Analysemethode ist es jedoch schwierig, sie als Modul zu verwenden, so dass Sie anscheinend selbst eine dünne Hülle erstellen müssen. Außerdem ist eine ordnungsgemäße Überprüfung erforderlich.

Recommended Posts

Einfache Schlüsselwortextraktion mit TermExtract für Python
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Einfache Ordnersynchronisation mit Python
Keyword-Extraktion mit MeCab (Python)
Einfache Python-Kompilierung mit NUITKA-Utilities
Einfacher HTTP-Server mit Python
Schlüsselwortargumente für Python-Funktionen
[Python] Einfache Parallelverarbeitung mit Joblib
Textextraktion mit AWS Textract (Python3.6)
Erste Schritte mit Python für PHPer-Klassen
Einfache Python + OpenCV-Programmierung mit Canopy
Einfache Mailübertragung mit Eile Python3
Bayesianische Optimierung, die mit Python sehr einfach ist
Visualisieren Sie Ihre Daten ganz einfach mit Python Seaborn.
Einfache parallele Ausführung mit Python-Unterprozess
Erste Schritte mit Python für PHPer-Funktionen
Stilkonvertierung mit Python Easy Memorandum mit Git-Klon [Für fortgeschrittene Benutzer]
[Python] Super einfacher Test mit Assert-Anweisung
INSERT in MySQL mit Python [Für Anfänger]
Python3> im Schlüsselwort> Wahr mit teilweiser Übereinstimmung?
WEB-Scraping mit Python (für persönliche Notizen)
[Python] Einfache Überprüfung des Argumenttyps mit Datenklasse
Manuelle SSH-Registrierung für Coreserver mit Python
Verwenden Sie DeepL mit Python (für die Artikelübersetzung)
Memo, um nach KPI mit Python zu fragen
Verstärken Sie Bilder für maschinelles Lernen mit Python
Tipps zum Umgang mit Binärdateien in Python
Einfache Einführung der Spracherkennung mit Python
Tipps zur Verwendung von Python + Caffe mit TSUBAME
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Verarbeiten Sie mehrere Listen mit for in Python
[Easy Python] Lesen von Excel-Dateien mit openpyxl
Erste Schritte mit Python für PHPer-Super Basics
Einfache Web-App mit Python + Flask + Heroku
Debuggen Sie die MySQL-Verbindung mit Python MySQL.connector
[Python] Bilder mit OpenCV lesen (für Anfänger)
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
WebApi-Erstellung mit Python (CRUD-Erstellung) Für Anfänger
[Easy Python] Lesen von Excel-Dateien mit Pandas
Einfaches Web-Scraping mit Python und Ruby
[Python] Probieren Sie mit Keras-RL ganz einfach erweitertes Lernen (DQN) aus
Vorbereitung zum Schaben mit Python [Schokoladengeschmack]
[Für Anfänger] Versuchen Sie Web Scraping mit Python
2016-10-30 sonst für Python3> für:
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Python [für mich]
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
Scraping mit Python
Python ist einfach
Statistik mit Python
Python für Super-Anfänger Super-Anfänger Python # Einfach loszuwerden
Kausales Denken und kausale Suche von Python (für Anfänger)
Holen Sie sich ein Ticket für einen Themenpark mit Python
Textextraktion mit GCP Cloud Vision API (Python3.6)
Scraping mit Python
Kantenextraktion mit Python + OpenCV (Sobel-Filter, Laplace-Filter)
Python mit Go
[Übersetzung] Erste Schritte mit Rust für Python-Programmierer
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen einer Anaconda-Umgebung für Python mit pyenv