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].
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 .
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:
'
könnte ein Apostroph sein oder es könnte als Anführungszeichen verwendet werden, um einen Text zu zitieren. 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.
Sie können auf [^\p{L}]+
teilen. Es wird auf jede Zeichengruppe aufgeteilt, die keine Buchstaben enthält.
Ressourcen:
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?:;!]