Stemmers vs Lemmatizers


75

Natural Language Processing (NLP), insbesondere für Englisch, hat sich zu einem Stadium entwickelt, in dem Stemming zu einer archaischen Technologie werden würde, wenn "perfekte" Lemmatisatoren existieren. Dies liegt daran, dass Stemmers die Oberflächenform eines Wortes / Tokens in bedeutungslose Stängel verwandeln.

Andererseits ist die Definition des "perfekten" Lemmatisierers fraglich, da unterschiedliche NLP-Aufgaben einen unterschiedlichen Lemmatisierungsgrad erfordert hätten. ZB Konvertieren Sie Wörter zwischen Verb- / Substantiv- / Adjektivformen .

Stemmers

[in]: having
[out]: hav

Lemmatisatoren

[in]: having
[out]: have
  • Die Frage ist also, ob englische Stemmers heute überhaupt nützlich sind. Da haben wir eine Vielzahl von Lemmatisierungswerkzeugen für Englisch

  • Wenn nicht, dann , wie sollten wir robust lemmatizers bauen bewegen auf , die auf nehmen nounify, verbify, adjectifyund adverbify vorverarbeitet?

  • Wie könnte die Lemmatisierungsaufgabe leicht auf andere Sprachen skaliert werden, die ähnliche morphologische Strukturen wie Englisch haben?


1
Gibt es eine bestimmte Aufgabe, die Sie vorhaben? Es ist immer einfacher, eine NLP-Frage im Kontext zu beantworten.
Renaud

So erstellen Sie einen Lemmatizer, der für jede NLP-Aufgabe flexibel ist, für die eine andere Abstraktionsebene erforderlich ist =)
alvas

Antworten:


84

Frage 1: "[..] sind englische Stemmers heute überhaupt nützlich? Da wir eine Vielzahl von Lemmatisierungswerkzeugen für Englisch haben"

Ja. Stemmers sind viel einfacher, kleiner und normalerweise schneller als Lemmatisatoren, und für viele Anwendungen sind ihre Ergebnisse gut genug . Die Verwendung eines Lemmatisators ist eine Verschwendung von Ressourcen. Betrachten Sie beispielsweise die Dimensionsreduzierung beim Abrufen von Informationen. Sie ersetzen alle Laufwerke / Laufwerke durch Laufwerke sowohl in den durchsuchten Dokumenten als auch in der Abfrage. Es ist dir egal, ob es sich um Drive oder Driv oder x17a $ handelt , solange es Flexionswörter zusammenfasst.

F2: "[..] Wie sollen wir fortfahren, um robuste Lemmatisierer zu bauen, die Vorprozesse verarbeiten, verbalisieren, adjektivieren und adverbifizieren können?

Was ist Ihre Definition eines Lemmas, beinhaltet es Ableitung ( Antrieb - Treiber ) oder nur Beugung ( Antrieb - Antriebe - gefahren )? Berücksichtigt es die Semantik?

Wenn Sie die Ableitung einbeziehen möchten (was die meisten Leute sagen würden, dass sie Substantive usw. enthält), denken Sie daran, dass die Ableitung weitaus unregelmäßiger ist als die Beugung. Es gibt viele Eigenheiten, Lücken usw. Möchten Sie wirklich ändern ( Züge wechseln ) und ändern (als Münzen), um das gleiche Lemma zu haben? Wenn nicht, wo ziehen Sie die Grenze? Wie wäre es Nerven - unnerve , Erde - ausgraben - Erdbewohner , ... Es hängt wirklich von der Anwendung ab .

Wenn Sie berücksichtigen Semantik ( Bank würde als beschriftbar Bank-Geld oder Bank-Fluss je nach Kontext), wie tief Sie gehen (unterscheiden Sie Bankinstitut von Bank-Gebäude )? Einige Apps interessieren sich möglicherweise überhaupt nicht dafür, andere möchten möglicherweise die grundlegende Semantik unterscheiden, andere möchten möglicherweise eine Feinabstimmung.

F3: "Wie kann die Lemmatisierungsaufgabe leicht auf andere Sprachen skaliert werden, die ähnliche morphologische Strukturen wie Englisch haben?"

Was meinst du mit "ähnlichen morphologischen Strukturen wie Englisch"? Englisch hat sehr wenig Flexionsmorphologie. Es gibt gute Lemmatisatoren für Sprachen anderer morphologischer Typen (wirklich Flexion, Agglutinativ, Template, ...).

Mit einer möglichen Ausnahme von agglutinativen Sprachen würde ich argumentieren, dass eine Nachschlagetabelle (z. B. ein komprimierter Versuch) die beste Lösung ist. (Möglicherweise mit einigen Sicherungsregeln für unbekannte Wörter wie Eigennamen). Auf die Suche folgt eine Art Disambiguierung (von trivial - nehmen Sie die erste oder nehmen Sie die erste, die mit den Worten POS-Tag übereinstimmt, bis zu einer viel ausgefeilteren). Die komplexeren Disambiguierungen sind normalerweise überwachte stochastische Algorithmen (z. B. TreeTagger oder Faster ), obwohl auch eine Kombination aus maschinellem Lernen und manuell erstellten Regeln durchgeführt wurde (siehe z . B. dies ).

Offensichtlich möchten Sie für die meisten Sprachen die Nachschlagetabelle nicht von Hand erstellen, sondern aus einer Beschreibung der Morphologie dieser Sprache generieren. Für Flexionssprachen können Sie den technischen Weg von Hajic für Tschechisch oder Mikheev für Russisch wählen oder, wenn Sie sich trauen, die zweistufige Morphologie verwenden. Oder Sie können etwas dazwischen tun, wie z. B. Hana (ich selbst) (Beachten Sie, dass dies alles vollständige morphologische Analysegeräte sind, die eine Lemmatisierung beinhalten). Oder Sie lernen den Lemmatizer unbeaufsichtigt a la Yarowsky und Wicentowski , möglicherweise mit manueller Nachbearbeitung, wobei die häufigsten Wörter korrigiert werden.

Es gibt viel zu viele Optionen und es hängt wirklich alles davon ab, was Sie mit den Ergebnissen machen möchten.


user2543968 hat meiner Antwort Folgendes hinzugefügt. Ich verschiebe es hierher, weil ich nicht sicher bin, wie sie relevant sind, insbesondere nicht für die beiden Unterfragen, die ich an dieser Stelle beantwortet habe. Es gibt Tools, die versuchen, diese Probleme zu lösen, zum Beispiel den berühmten TreeTagger, es gibt auch eine Anzahl von Ebenen, die kann es wie [Schneller] [3] verbessern. Wir haben hier eine Verwendung von maschinellem Lernen und regelbasierten Systemen.
Jirka

Der andere Zusatz von user2543968: - Steming und Lematisierung können manchmal dieselben Ziele haben: Verbesserung der Suchgeschwindigkeit - Indizierungsgeschwindigkeit, Klassifizierung und Reduzierung der Suchindexgröße. Eine gute Frage ist auch, wie diese Punkte verbessert werden können. Wenn Sie dem Lematisierungsprozess mehr Semantik hinzufügen, verlieren Sie wahrscheinlich an Geschwindigkeit. Wenn Sie weitere Details hinzufügen, erhalten Sie wahrscheinlich größere Indizes. Ein Lematizer ist ein Ausgleichswerkzeug.
Jirka

6

Eine klassische Anwendung von Stemming oder Lemmatisierung ist die Verbesserung der Suchmaschinenergebnisse: Durch Anwenden von Stemming (oder Lemmatisierung) auf die Abfrage sowie (vor der Indizierung) auf alle indizierten Token können Benutzer, die beispielsweise nach "Haben" suchen um Ergebnisse zu finden, die "has" enthalten.

(Vermutlich sind Verben in den meisten Suchanfragen etwas ungewöhnlich, aber das gleiche Prinzip gilt für Substantive, insbesondere in Sprachen mit einer reichen Substantivmorphologie.)

Für die Verbesserung der Suchergebnisse ist es eigentlich nicht wichtig, ob der Stamm (oder das Lemma) sinnvoll ist ("haben") oder nicht ("hav"). Es muss nur in der Lage sein, das betreffende Wort und alle seine Flexionsformen darzustellen. Tatsächlich verwenden einige Systeme Zahlen oder andere Arten von ID-Strings anstelle von Stamm oder Lemma (oder Basisform oder wie auch immer es genannt werden mag).

Daher ist dies ein Beispiel für eine Anwendung, bei der Stemmers (nach Ihrer Definition) so gut sind wie Lemmatisatoren.


Ich bin jedoch nicht ganz davon überzeugt, dass Ihre (implizite) Definition von "Stemmer" und "Lemmatizer" allgemein akzeptiert wird. Ich bin mir nicht sicher, ob es eine allgemein akzeptierte Definition dieser Begriffe gibt, aber ich definiere sie folgendermaßen:

Stemmer: Eine Funktion, die Flexionsformen unter Verwendung von Regeln und Listen bekannter Suffixe auf Stiele oder Basisformen reduziert.

Lemmatizer: Eine Funktion, die dieselbe Reduzierung durchführt, jedoch ein umfassendes Vollformwörterbuch verwendet, um mit unregelmäßigen Formularen umgehen zu können.

Basierend auf diesen Definitionen ist ein Lemmatisierer im Wesentlichen eine qualitativ hochwertigere (und teurere) Version eines Stemmer.


2

Die Antwort hängt stark von der Aufgabe oder dem spezifischen Studienbereich innerhalb der Natural Language Processing (NLP) ab, über die wir sprechen.

Es ist darauf hinzuweisen, dass nachgewiesen wurde, dass bei einigen spezifischen Aufgaben, wie der Stimmungsanalyse (das ist ein beliebtes Teilfeld in NLP), ein Stemmer oder Lemmatizer als Merkmal bei der Entwicklung eines Systems verwendet wird (Training eines maschinellen Lernens) Modell) hat keinen spürbaren Einfluss auf die Genauigkeit des Modells, egal wie groß das Werkzeug ist. Obwohl dies die Leistung ein wenig verbessert, gibt es wichtigere Funktionen wie das Parsen von Abhängigkeiten , an denen in solchen Systemen erheblich gearbeitet werden kann.

Es ist wichtig zu erwähnen, dass die Merkmale der Sprache, an der wir arbeiten, ebenfalls berücksichtigt werden sollten.


1
@alvas Dieser Artikel ist eine dieser Untersuchungen, die deutlich zeigt, was ich zuvor gesagt habe. Grüße,
Pedram
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.