Regexp zum Tokenisieren von englischem Text

8

Was wäre der beste reguläre Ausdruck für die Tokenisierung eines englischen Textes?

Mit einem englischen Token meine ich ein Atom, das aus einer maximalen Anzahl von Zeichen besteht, die sinnvollerweise für NLP-Zwecke verwendet werden können. Eine Analogie ist ein "Token" in irgendeiner Programmiersprache (z. B. in C, '{', '[', 'Hallo', '& amp;' usw. können Tokens sein). Es gibt eine Einschränkung: Obwohl englische Interpunktionszeichen "sinnvoll" sein können, wollen wir sie aus Gründen der Einfachheit ignorieren, wenn sie nicht in der Mitte von \ w + erscheinen. Also, "Hallo, Welt." ergibt 'Hallo' und 'Welt'; ähnlich, "Du siehst gut aus." kann entweder ergeben [du, bist, gut aussehend] oder [du, bist, gut, aussehend].

    
OTZ 13.09.2010, 19:56
quelle

4 Antworten

5

Treebank-Tokenisierung

Penn Treebank (PTB) -Tokenisierung ist ein relativ häufiges Tokenisierungsschema, das für die Verarbeitung natürlicher Sprache verwendet wird ( NLP) arbeiten.

Sie können ein sed-Skript mit den entsprechenden regulären Ausdrücken finden, um diese Tokenisierung hier

Softwarepakete

Die meisten NLP-Pakete bieten jedoch gebrauchsfertige Tokenizer, so dass Sie nicht unbedingt Ihre eigenen schreiben müssen. Wenn Sie beispielsweise Python verwenden, können Sie einfach die verwenden TreebankWordTokenizer mit NLTK bereitgestellt. Wenn Sie den Java-basierten Stanford Parser verwenden, wird standardmäßig jeder Satz, den Sie ihm geben, mit einem Token versehen sein edu.stanford.nlp.processor.PTBTokenizer .

    
dmcer 14.09.2010 00:18
quelle
2

Sie sollten wahrscheinlich nicht versuchen, einen regulären Ausdruck für das Token von englischem Text zu verwenden. Im Englischen haben einige Token verschiedene Bedeutungen und Sie können nur wissen, welches Recht richtig ist, indem Sie den Kontext, in dem sie gefunden werden, verstehen. Dazu müssen Sie die Bedeutung des Textes einigermaßen verstehen. Beispiele:

  • Das Zeichen ' könnte ein Apostroph sein oder es könnte als Anführungszeichen verwendet werden, um einen Text zu zitieren.
  • Der Zeitraum könnte das Ende eines Satzes oder eine Abkürzung bedeuten. Oder in einigen Fällen könnte es beide Rollen gleichzeitig erfüllen.

Versuchen Sie stattdessen einen Parser für natürliche Sprache. Zum Beispiel könnten Sie das Stanford Parser . Es ist kostenlos zu verwenden und wird eine viel bessere Arbeit als jeder reguläre Ausdruck bei der Tokenisierung von englischem Text leisten. Das ist nur ein Beispiel - es gibt auch viele andere NLP-Bibliotheken, die Sie verwenden könnten.

    
Mark Byers 13.09.2010 20:00
quelle
1

Sie können auf [^\p{L}]+ teilen. Es wird auf jede Zeichengruppe aufgeteilt, die keine Buchstaben enthält.

Ressourcen:

Colin Hebert 13.09.2010 20:01
quelle
0

Es gibt einige Komplexitäten.

Ein Wort hat [A-Za-z0-9\-] . Aber Sie können neben dem Wort noch ein anderes Trennzeichen haben! Sie können mit [(\s] beginnen und mit [),.-\s?:;!]

enden     
Paul Nathan 13.09.2010 20:02
quelle

Tags und Links