Wortextraktionstool (6): Zusätzliche Beschreibung des Wortextraktionstools
In Fortsetzung des vorherigen Artikels sehen wir uns die zusätzliche Erklärung des Wortextraktionstools an.
Wortextraktionstool(5): Beschreibung des Quellcodes des Wortextraktionstools(2)
5. Zusätzliche Erklärung zum Wortextraktionstool
5.1. Warum OLE-Automatisierung verwenden?
OLE Aumation ist in Wikipedia wie folgt definiert.
In der Microsoft Windows-Anwendungsprogrammierung ist die OLE-Automatisierung (später einfach in Automation[1][2] umbenannt) ein von Microsoft entwickelter Interprozesskommunikationsmechanismus (IPC). Es basiert auf einer Teilmenge des Component Object Model (COM) und sollte über eine Skriptsprache (ursprünglich Visual Basic) verwendet werden, ist aber jetzt in mehreren Sprachen unter Windows verfügbar.
Quelle: https://en.wikipedia.org/wiki/OLE_Automation
In Python ist die OLE-Automatisierung mit dem win32com-Paket möglich. Sie können gewünschte Funktionen ausführen, indem Sie MS-Office-Anwendungen steuern.
OLE Aumation wurde aus den folgenden Gründen für das Wortextraktionstool verwendet.
- Es gibt die folgenden dedizierten Pakete, die MS-Word und PowerPoint lesen und schreiben können, aber ich habe sie nicht absichtlich verwendet.
- MS Word: python-docx, python-docx2txt
- PowerPoint: python-pptx
- Excel: openpyxl, xlsxwriter, pyxlsb
- Die meisten Unternehmensumgebungen erzwingen die Installation von DRM-Software, sodass Dokumentdateien verschlüsselt werden.
- Verschlüsselte Dateien können nicht gelesen werden, wenn ein dediziertes Paket verwendet wird.
- Wenn Sie die OLE-Automatisierungsmethode mit dem Pywin32-Paket verwenden, können Sie die Datei über das Office-Programm lesen.
- Bei der OLE-Automatisierung kann es zu Leistungseinbußen kommen, die Ergebnisse sind jedoch garantiert.
Informationen zu Python-Codes, die MS-Word, PowerPoint und Excel steuern, finden Sie im folgenden Artikel.
- MS-Word-Automatisierung: 4.3.1. get_doc_text-Funktion
- PowerPoint-Automatisierung: 4.3.2._get_ppt_text_Function
- Excel-Automatisierung: 4.3.4._get_db_comment_text_function
5.2. Bezogen auf die Codierung von Textdateien (nur UTF-8 wird unterstützt)
- Die Kodierung der Eingabetextdatei ist darauf ausgelegt, nur UTF-8 zu unterstützen.
- Wenn die Textdatei unter den Eingabedateien eine ANSI-Codierung ist, tritt der folgende Fehler auf, da es sich um cp949 und eine Nicht-Unicode-Codierung handelt.
- UnicodeDecodeError: 'utf-8' Codec kann Byte 0xb4 an Position 5 nicht decodieren: ungültiges Startbyte
- Wenn während der Ausführung ein ähnlicher Fehler auftritt, speichern Sie die Textdatei als UTF-8 und führen Sie sie erneut aus.
5.3. Gründe für die Verwendung von Multiprocessing
vorherigen Post "Wortextraktionstool(4): Beschreibung des Quellcodes des Wortextraktionstools(1)In “ wurde der Code mit Mehrfachverarbeitung erklärt.
4.2.3. Führen Sie get_file_text mit Mehrfachverarbeitung aus
4.2.4. Führen Sie get_word_list mit Mehrfachverarbeitung aus
Als dieses Tool zum ersten Mal erstellt wurde, waren sowohl die Textextraktion als auch die Wortextraktion eine Einzelverarbeitung. Beim ersten Einsatz in einem Projekt der Firma K Anfang 2021 dauerte es etwa 20 Stunden, um auf einem Laptop (CPU i5, 16GB Ram) Standard-Wortkandidaten aus etwa 160.000 Spaltenkommentaren zu extrahieren.
Nach mehreren Iterationen, einschließlich Tests, bestand die Notwendigkeit, die Ausführungszeit zu verkürzen. Als ich googelte, um Thread für die parallele Verarbeitung zu verwenden, entschied ich, dass Multi-Processing besser geeignet ist als Multi-Threading, da Python das Konzept von GIL (Global Interpreter Lock) hat.
Durch eine geringfügige Codeänderung wurde die Mehrfachverarbeitung sowohl auf die Textextraktion als auch auf die Wortextraktion angewendet, und ein Argument (multi_process_count) wurde erstellt, um den Grad der Parallelität während der Ausführung anzugeben.
Wenn multi_process_count auf 8 gesetzt und ausgeführt wurde, verkürzte sich die Aufgabe, die 20 Stunden dauerte, auf etwa 40 Minuten und war effektiv genug.
5.4. Hinweise zur Extraktion zusammengesetzter Wörter
Die Beschreibung von Substantiven, Posen und Morphen unter den Hauptfunktionen von Mecab ist wie folgt.
Funktion | Erläuterung |
Substantive (Text) | Analysiert den Text, extrahiert nur die Substantive und gibt eine Liste zurück |
Pos(Text) | Analysiert den Text und gibt eine Liste von Formen zurück (Morpheme, Wortarten, Tags) |
Morphen (Text) | Analysiert den Text, extrahiert nur die Morpheme und gibt eine Liste zurück |
Das Ausführungsergebnis jeder Funktion ist das Beispiel der Eingabezeichenfolge unten.
* Eingabezeichenfolge: Benutzer definiert funktionale und nicht funktionale Anforderungen.
Funktion | Ausführungsergebnis |
Substantive (Text) | ['Verwendung', 'Fähigkeiten', 'Anforderungen', 'Assets', 'Features', 'Anforderungen', 'Assets', 'Definitionen'] |
Pos(Text) | [('enable', 'NNG'), ('character', 'XSN'), ('is', 'JX'), ('feature', 'NNG'), ('red', 'XSN') , ('Nachfrage', 'NNG'), ('Materie', 'NNG'), ('und', 'JC'), ('nicht', 'XPN'), ('Merkmal', 'NNG') ; , ('sollte', 'XSV+EF'), ('.', 'SF')] |
Morphen (Text) | ['use', 'user', 'is', 'feature', 'nemesis', 'request', 'spec', 'and', 'non', 'feature', 'nemesis', 'request', ' egal', 'zu', 'definieren', 'sollte', '.'] |
* Eingabezeichenfolge: Datenstandardisierung ist ein wichtiger Bereich beim Aufbau von Datenarchitekturen.
Funktion | Ausführungsergebnis |
Substantive (Text) | ['data', 'standards', 'data', 'architecture', 'build', 'critical', 'area'] |
Pos(Text) | [('data', 'NNG'), ('standard', 'NNG'), ('Dienstag', 'XSN'), ('is', 'JX'), ('data', 'NNG') , ('architecture', 'NNG'), ('build', 'NNG'), ('of', 'JKG'), ('important', 'NNG'), ('one', 'XSA+ETM '), ('region', 'NNG'), ('this', 'VCP'), ('da', 'EF'), ('.', 'SF')] |
Morphen (Text) | ['Daten', 'Standard', 'Feld', 'A', 'Daten', 'Architektur', 'Konstrukt', 'Von', 'Wichtig', 'Eins', 'Region', 'Dies', ' alle', '.'] |
Das Wortextraktionstool verwendet die Substantivfunktion nicht direkt, sondern extrahiert Wörter, indem es einen regulären Ausdruck auf das Ergebnis der pos-Funktion anwendet. Nachfolgend finden Sie eine Erläuterung des regulären Ausdrucksmusters.
Muster mit regulärem Ausdruck: '(NNP/|NNG/)+(XSN/)*|(XPN/)+(NNP/|NNG/)+(XSN/)*|(SL/)+'
- Dieses Muster findet eines von drei Dingen:
- (NNP/|NNG/)+(XSN/)*: 1 oder mehr (Eigenname oder Gattungsname) (erforderlich) + 0 oder mehr von Substantiven abgeleitete Suffixe (optional)
- (XPN/)+(NNP/|NNG/)+(XSN/)*: 1 oder mehr Präfixe (erforderlich) + 1 oder mehr (Eigennamen oder gebräuchliche Substantive) (erforderlich) + 0 oder mehr von Substantiven abgeleitete Suffixe (optional) )
- (SL/)+: Mindestens eine Fremdsprache (Pflichtfeld)
Beispiele für das Extrahieren von nur Substantiven durch Aufrufen von Substantiven (Text) und das Extrahieren zusätzlicher zusammengesetzter Wörter durch Anwenden regulärer Ausdrücke sind wie folgt:
* Eingabezeichenfolge: Benutzer definiert funktionale und nicht funktionale Anforderungen.
Funktion | Ausführungsergebnis |
Extrahieren Sie nur Substantive Substantive (Text) | Gebrauch, Funktion, Bedürfnis, Materie, Funktion, Bedürfnis, Materie, Definition |
Regulären Ausdruck anwenden | Verwendung, Funktion, Bedarf, Anforderung, Funktion, Anforderung, Anforderung, Definition, Benutzer[Verbindung], funktional[Verbindung], Anforderung[Verbindung], nicht-funktionale[Verbindung], Anforderung[Verbindung] |
* Eingabezeichenfolge: Datenstandardisierung ist ein wichtiger Bereich beim Aufbau von Datenarchitekturen.
Funktion | Ausführungsergebnis |
Extrahieren Sie nur Substantive Substantive (Text) | daten, standard, daten, architektur, bauen, wichtig, bereich |
Regulären Ausdruck anwenden | Daten, standard, daten, architektur, konstruktion, wichtig, domäne, datenstandardisierung [compound], datenarchitekturkonstruktion [compound] |
Der Grund für das zusätzliche Extrahieren des zusammengesetzten Wortes besteht darin, Probleme zu verhindern, falls das zusammengesetzte Wort später hinzugefügt wird, indem überprüft wird, ob das zusammengesetzte Wort als Standard in der frühen Stufe des Aufbaus des Standardwortverzeichnisses registriert werden soll.
Wenn später ein zusammengesetztes Wort hinzugefügt wird, kann der physische Name des Standardbegriffs unter Verwendung der einzelnen Wörter, die das zusammengesetzte Wort bilden, geändert werden, und sogar der Tabellenname und der Spaltenname der Datenbank müssen möglicherweise unter Verwendung des Standardbegriffs geändert werden.
Selbstverständlich ist es aus langfristiger Sicht empfehlenswert, nur den physikalischen Namen des zukünftig zu erstellenden Standardterms zu ändern, ohne den physikalischen Namen des bereits erstellten Standardterms zu ändern.
Es ist keine einfache Entscheidung, den physikalischen Namen eines bereits erstellten Standardbegriffs zu ändern. Wenn die Entwicklung bereits im Gange ist, müssen Sie mit der Änderung des Quellcodes fortfahren, der auf die Spalte verweist, deren Name geändert wurde. Projekte, die zusätzliche Fristen erfordern und mehrere Interessengruppen einbeziehen, können der Rechenschaftspflicht unterliegen.
In Anbetracht der Tatsache, dass eine große Menge an Quellcodeänderungen große Auswirkungen auf das Projekt haben und ziemlich schwierig sein können, ist die Überprüfung zusammengesetzter Wörter in der Anfangsphase der Erstellung eines Standardwörterbuchs ein notwendiger Prozess.
Es gab keine Möglichkeit, zusammengesetzte Wortkandidaten zu identifizieren, während man die Auswirkungen kannte, und dieses Wortextraktionstool bietet eine geeignete Methode.
Es ist vielleicht nicht optimal, aber ich denke, dass es zum jetzigen Zeitpunkt als Alternative ausreichend ist.
5.5. Arten von morphologischen Analysatorwortarten
vorherigen Post Wortextraktionstool(5): Beschreibung des Quellcodes des Wortextraktionstools(2) von 4.4._get_word_list_function hatte folgenden Inhalt:
- Zeile 64: Führe Wortart-Tagging des Morphem-Analyzers mit der pos-Funktion aus. Ich werde die Inhalte in Bezug auf die Wortartkennzeichnung trennen.
- Die Wortart-Markierungsfunktion pos zerlegt die Eingabezeichenfolge in Wortarteneinheiten und gibt eine Zeichenfolge zurück, in der jede Einheit gekennzeichnet ist.
- Wenn der Text beispielsweise „Benutzer definieren funktionale und nicht funktionale Anforderungen“ lautet, lautet das Ausführungsergebnis der pos-Funktion „[(‘use‘, ‚NNG‘), (‘character‘, ‚XSN‘), (‘ is', 'JX'), ('function', 'NNG'), ('enemy', 'XSN'), ('request', 'NNG'), ('spec', 'NNG' '), ( 'and', 'JC'), ('b', 'XPN'), ('feature', 'NNG'), ('enemies', 'XSN'), ('request', 'NNG'), ( 'Ding', 'NNG'), ('zu', 'JKO'), ('Definition', 'NNG'), ('sollte', 'XSV+EF'), ('.', 'SF') ]'.
- Unter den im obigen Beispiel markierten Wortarten ist „NNG“ ein gebräuchliches Substantiv, „XSN“ ist ein von einem Substantiv abgeleitetes Suffix, „JX“ ist ein Hilfswort, „JC“ ist ein Bindewort, „XPN“ ist ein Präfix , „JKO“ ist ein objektiver Partikel, „XSV + EF“ ist ein von einem Verb abgeleitetes Suffix + Endung und „SF“ bedeutet einen Punkt/Fragezeichen/Ausrufezeichen.
Von Mecab bereitgestellte Wortart-Tags sind im folgenden Dokument organisiert.
Auszüge aus dem oben genannten Dokument sind unten zusammengefasst.
Substanzielle Bedeutung | Hauptkategorie (5 Wörter + andere) | Sejong Wortarten-Tags | mecab-en-dic Wortarten-Tag | ||
Schild | Erläuterung | Schild | Erläuterung | ||
substantivisches Morphem | Cheon | NNG | gängiges Substantiv | NNG | gängiges Substantiv |
NNP | Eigenname | NNP | Eigenname | ||
NNB | abhängiges Substantiv | NNB | abhängiges Substantiv | ||
NNBC | Substantiv, das eine Einheit bezeichnet | ||||
NR | Ermittlung | NR | Ermittlung | ||
NP | Pronomen | NP | Pronomen | ||
Verb | VV | Verb | VV | Verb | |
VA | Adjektiv | VA | Adjektiv | ||
VX | Hilfsverb | VX | Hilfsverb | ||
VCP | positiver Spezifizierer | VCP | positiver Spezifizierer | ||
VCN | negativer Bezeichner | VCN | negativer Bezeichner | ||
Modifikator | MM | Detektiv | MM | Detektiv | |
Mag | gemeinsames Adverb | Mag | gemeinsames Adverb | ||
MAJ | Konjunktion Adverb | MAJ | Konjunktion Adverb | ||
eigenständige Sprache | IC | Zwischenruf | IC | Zwischenruf | |
formales Morphem | relatives Wort | JKS | nominative Untersuchung | JKS | nominative Untersuchung |
JKC | Fernuntersuchung | JKC | Fernuntersuchung | ||
JKG | Ermittlungen im Sargfall | JKG | Ermittlungen im Sargfall | ||
JKO | Objekt Untersuchung | JKO | Objekt Untersuchung | ||
JKB | sekundäre Branduntersuchung | JKB | sekundäre Branduntersuchung | ||
JKV | Vokative Untersuchung | JKV | Vokative Untersuchung | ||
JKQ | Zitat-Check | JKQ | Zitat-Check | ||
JX | Hilfs- | JX | Hilfs- | ||
JC | Verbindungsuntersuchung | JC | Verbindungsuntersuchung | ||
frisches Pferd mütterlicherseits | EP | frisches Pferd mütterlicherseits | EP | frisches Pferd mütterlicherseits | |
Wortende | EF | endgültiges Ende | EF | endgültiges Ende | |
EG | verbindendes Ende | EG | verbindendes Ende | ||
ETN | Endung der Substantivform | ETN | Endung der Substantivform | ||
ETM | röhrenförmiges formbares Ende | ETM | röhrenförmiges formbares Ende | ||
Präfix | XPN | Kettenpräfix | XPN | Kettenpräfix | |
Suffix | XSN | Substantivableitungssuffix | XSN | Substantivableitungssuffix | |
XSV | Verbableitungssuffix | XSV | Verbableitungssuffix | ||
XSA | Adjektivableitungssuffix | XSA | Adjektivableitungssuffix | ||
Wurzel | XR | Wurzel | XR | Wurzel | |
Zeichen | SF | Punkt, Fragezeichen, Ausrufezeichen | SF | Punkt, Fragezeichen, Ausrufezeichen | |
SE | Ellipse | SE | Ellipse … | ||
SS | zitieren,Klammer,gepunktete Linie | Einmaliges Anmelden | offene Klammer (, [ | ||
SSC | schließende Klammer ), ] | ||||
SP | ausruhen,Mittelpunkt,Doppelpunkt,Schrägstrich | SC | Separator , · / : | ||
SO | Bindestrich(Welle,versteckt,fehlen) | SY | |||
SW | Andere Symbole (logische mathematische Symbole,Währungszeichen) | ||||
außer koreanisch | SL | Fremdsprache | SL | Fremdsprache | |
Sch | chinesisches Schriftzeichen | Sch | chinesisches Schriftzeichen | ||
SN | Anzahl | SN | Anzahl |
Damit ist der Artikel über das Wortextraktionstool abgeschlossen. Wenn ich eine Funktion hinzufüge oder verbessere, werde ich einen separaten Artikel schreiben.
<< Liste verwandter Artikel >>
- Wortextraktionstool(1): Überblick über das Wortextraktionstool
- Word-Extraktionstool (2): Konfigurieren Sie die Ausführungsumgebung des Word-Extraktionstools
- Wortextraktionstool (3): So führen Sie das Wortextraktionstool aus und überprüfen die Ergebnisse
- Wortextraktionstool(4): Beschreibung des Quellcodes des Wortextraktionstools(1)
- Wortextraktionstool(5): Beschreibung des Quellcodes des Wortextraktionstools(2)
- Wortextraktionstool (6): Zusätzliche Beschreibung des Wortextraktionstools
- Vollständiger Inhalt der Beschreibung des Word Extraction Tools, Download