DE112017006445T5 - Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen - Google Patents

Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen Download PDF

Info

Publication number
DE112017006445T5
DE112017006445T5 DE112017006445.7T DE112017006445T DE112017006445T5 DE 112017006445 T5 DE112017006445 T5 DE 112017006445T5 DE 112017006445 T DE112017006445 T DE 112017006445T DE 112017006445 T5 DE112017006445 T5 DE 112017006445T5
Authority
DE
Germany
Prior art keywords
suffixes
count
suffix
grams
occurring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112017006445.7T
Other languages
English (en)
Inventor
Shlomi Vaknin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112017006445T5 publication Critical patent/DE112017006445T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/263Language identification

Abstract

Verfahren, Geräte, Systeme und Herstellungsgegenstände zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen, sind hierin offenbart. Ein beispielhaftes Verfahren beinhaltet ein Identifizieren eines Tokens, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt. Erste Suffixe und zweite Suffixe werden innerhalb des Korpus identifiziert, wobei die ersten Suffixe mit dem Token beginnen und die zweiten Suffixe nicht mit dem Token beginnen. Ein erster Zählungsalgorithmus wird durchgeführt, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren. Ein zweiter Zählungsalgorithmus wird durchgeführt, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren. Der zweite Zählungsalgorithmus unterscheidet sich von dem ersten Zählungsalgorithmus.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung betrifft allgemein Textverarbeitung und insbesondere Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen.
  • HINTERGRUND
  • In den letzten Jahren wurden Textverarbeitungssysteme dazu verwendet, Text (ein Korpus) zu verarbeiten und Statistiken in Bezug auf den Text abzuleiten. Derartige Statistiken können zur Entwicklung von Sprachmodellen, Erstellung von Klassifizierungsmodellen, Rechtschreibprüfung, Plagiatserkennung usw. verwendet werden. Eine beispielhafte Statistik, die berechnet werden kann, ist ein Zählwert von N-Grammen, die in dem Text vorkommen.
  • Figurenliste
    • 1 ist eine Grafik, die einen Zählwert von N-Grammen, die in einem Text vorkommen, auf der Basis des ersten Tokens des N-Gramms darstellt.
    • 2 ist ein Blockdiagramm eines beispielhaften N-Gramm-Zählers, der einen Zählwert von N-Grammen, die in einem Korpus vorkommen, identifiziert.
    • 3 ist ein Ablaufdiagramm, das für beispielhafte maschinenlesbare Anweisungen repräsentativ ist, die bei Ausführung bewirken, dass der N-Gramm-Zähler von 2 einen Zählwert von N-Grammen, die in einem Korpus vorkommen, identifiziert.
    • 4 ist ein Ablaufdiagramm, das für beispielhafte maschinenlesbare Anweisungen repräsentativ ist, die bei Ausführung bewirken, dass der Cluster von 2 einen Suffix-Sigma-with-Hot-Word-Extraction-Job an einem oder mehreren Knoten des beispielhaften Clusters von 2 durchführt.
    • 5 ist ein Ablaufdiagramm, das für beispielhafte maschinenlesbare Anweisungen repräsentativ ist, die bei Ausführung bewirken, dass der Cluster von 2 einen Hot-Word-Sorting-Job an einem oder mehreren Knoten des beispielhaften Clusters von 2 durchführt.
    • 6 ist ein Ablaufdiagramm, das für beispielhafte maschinenlesbare Anweisungen repräsentativ ist, die bei Ausführung bewirken, dass der Cluster von 2 einen Suffix-Sigma-Word-Count-Job unter Verwendung der sortierten Hot-Word-Suffixe an einem oder mehreren Knoten des beispielhaften Clusters von 2 durchführt.
    • 7 ist ein Blockdiagramm einer beispielhaften Prozessorplattform, die die Anweisungen der 3, 4, 5 und/oder 6 ausführen kann, um den beispielhaften N-Gramm-Zähler von 2 zu implementieren.
  • Die Figuren sind nicht maßstabgetreu. Sofern möglich, werden dieselben Bezugsziffern in der bzw. den gesamten Zeichnungen und der begleitenden geschriebenen Beschreibung verwendet, um auf dieselben oder ähnliche Teile zu verweisen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Computerlinguistiksysteme nutzen unterschiedliche Statistiken in Bezug auf Text. Eine wichtige Statistik ist die Anzahl von N-Grammen, die in dem Text vorkommen. Ein Gramm (z. B. eine Dateneinheit, ein Token) ist eine Sequenz von einem oder mehreren Zeichen. In einigen Beispielen ist ein Gramm von einer anderen Sequenz von Zeichen durch einen oder mehrere Trennzeichen (z. B. Satzzeichen, eine Leerstelle usw.) getrennt. In einigen Beispielen weist ein Gramm eine festgelegte Länge auf (z. B. ein einziges Zeichen, eine festgelegte Anzahl von Zeichen usw.). Ein einziges Gramm (z. B. ein einziges Token) wird manchmal als ein „Monogramm“ bezeichnet, eine Zwei-Gramm-Phrase (z. B. zwei aufeinanderfolgende Token) wird manchmal als ein „Bigramm“ bezeichnet und ein Drei-Wort-Gramm (z. B. drei aufeinanderfolgende Token) wird manchmal als ein „Trigramm“ bezeichnet. Ein N-Gramm ist eine zusammenhängende Sequenz einer Anzahl von Grammen aus einer gegebenen Datensequenz (z. B. Text). In einigen Beispielen werden N-Gramme manchmal auch als Phrasen bezeichnet. Ein N-Gramm kann eine beliebige Länge aufweisen. Das heißt, ein N-Gramm kann von einer beliebigen Anzahl von Grammen gebildet werden. Ein Verständnis von Zählwerten von N-Grammen, die in einem Text vorkommen, ist eine wichtige Statistik für die Computerlinguistik.
  • Es existieren einige Ansätze für das Errechnen eines oder mehrerer Zählwerte von N-Grammen, die in einem Text vorkommen. Ein naiver Ansatz beispielsweise liest den Text und zählt die Anzahl von N-Grammen, wobei während des Lesens des Textes die angetroffenen N-Gramme dokumentiert werden. Obwohl dieser Ansatz für kleine Textblöcke gut funktioniert, da N-Gramme eine beliebige Länge aufweisen können, nimmt die Verarbeitung von großen Korpora (z. B. Korpora, die Gigabytes von Daten enthalten) in der Regel sehr viel Zeit in Anspruch (z. B. Tage, Wochen usw.). Infolgedessen ist eine naive Verarbeitung von großen Textkorpora in der Regel auf N-Gramme mit einer maximalen Länge begrenzt (z. B. N-Gramme, die nicht mehr als fünf Gramme enthalten). Ein derartiger Ansatz berücksichtigt nicht längere N-Gramme, die in dem Text vorkommen könnten.
  • Ein anderer beispielhafter Ansatz zum Errechnen eines oder mehrerer Zählwerte von N-Grammen, die in einem Text vorkommen, ist ein Suffix-Sigma-Ansatz. Der Suffix-Sigma-Ansatz nutzt MapReduce, um den bzw. die Zählwerte von N-Grammen zu bestimmen. MapReduce ist ein Framework, das innerhalb einer HADOOP-Umgebung betrieben wird, und ermöglicht eine Verarbeitung von großen Datenmengen (z. B. Datensätze von mehreren Terabytes) in einer geclusterten Umgebung (potentiell mit Hunderten oder Tausenden von geclusterten Datenverarbeitungsknoten). Ein MapReduce-Job beinhaltet in der Regel drei Typen von Tasks, Mapping-Tasks, die von einem Mapping-Knoten durchgeführt werden und die parallel an partitionierten Abschnitten der Korpora arbeiten, um ein oder mehrere Schlüssel-Wert-Paare zu erzeugen, Shuffie-Tasks, die Schlüssel-Wert-Paare einem bestimmten Reducer-Knoten zuordnen, und Reduce-Tasks, die an dem bzw. den zugeordneten Schlüssel-Wert-Paaren arbeiten, um ein Endergebnis zu bilden. Das Framework sortiert die Ausgaben der Maps, die dann in die Reduce-Tasks eingegeben werden. Map-Tasks und Reduce-Tasks können parallel durchgeführt werden (z. B. können Reduce-Tasks vor dem Abschluss aller Map-Tasks beginnen). In der Regel werden sowohl die Eingabe als auch die Ausgabe des Jobs in einem Dateisystem (z. B. einem Hadoop-Distributed-Filing-System (HDFS)) gespeichert. Das Framework nimmt Scheduling-Tasks vor, überwacht diese und führt die fehlgeschlagenen Tasks erneut aus.
  • Der Suffix-Sigma-Ansatz identifiziert, dass einige N-Gramme auf der Basis ihres Suffixes (z. B. dem letzten Wort des N-Gramms) kondensiert werden können. Während der Mapping-Phase eines naiven Ansatzes beispielsweise würde ein Zählen der N-Gramme in einem Satz, wie „b a x“ die N-Gramme {b a x}, {b a}, {a c}, {b}, {a} und {x} ausgeben, wobei derartige N-Gramme zu einer Darstellung von drei möglichen Suffixen kondensiert werden könnten: {b a x}, {b a} und {b}. In der Mapping-Task eines Suffix-Sigma-MapReduce-Jobs gibt die Mapping-Task Schlüssel-Wert-Paare nur für einen Teilsatz der N-Gramme aus, die in den Korpora enthalten sind, die alle Suffixe darstellen, die mit demselben Gramm (z. B. demselben Token) beginnen. Um einen akkuraten Zählwert sicherzustellen, müssen die Schlüssel-Wert-Paare, die demselben Suffix entsprechen, von einer einzigen Reducer-Task abgewickelt werden (obwohl unterschiedliche Reducer-Tasks an anderen Schlüssel-Wert-Paaren arbeiten können, die anderen Suffixen entsprechen). Ein Partitionieren von Suffixen auf der Basis von nur ihrem ersten Gramm im Gegensatz zu allen Grammen, die in dem N-Gramm enthalten sind, stellt sicher, dass ein einziger Reducer alle Suffixe empfängt, die mit demselben Gramm beginnen, was dem Suffix-Sigma-Ansatz ermöglicht, einen akkuraten Zählwert zu erzeugen.
  • Der Suffix-Sigma-Ansatz wendet zwei Invarianten an, um sein Ziel zu erreichen. Erstens werden alle N-Gramme, die mit demselben Gramm beginnen, an einem einzigen Knoten in dem Cluster zusammengruppiert. Zweitens müssen alle N-Gramme in dem einzigen Knoten in dem Cluster in einer umgekehrten lexikographischen Reihenfolge sortiert werden. Leider kann die erste Invariante für sehr große Korpora dazu neigen, eine ungleichmäßige Verteilung der Arbeit unter den Knoten in dem Cluster zu verursachen. Man erwäge, wie viele N-Gramm in einem englischen Text mit dem Wort „dog“ beginnen könnten, verglichen damit, wie viele N-Gramm in demselben Text mit dem Wort „the“ beginnen könnten. Da erwartet wird, dass viel mehr Sätze das Wort „the“ enthalten, als Sätze das Wort „dog“ enthalten, gibt es dementsprechend viel mehr N-Gramme, die mit „the“ als mit „dog“ beginnen. Da des Weiteren nahezu jeder englische Textteil das Wort „the“ enthalten wird und nur einige das Wort „dog“ enthalten werden, werden viel mehr Knoten in dem Cluster N-Gramme beitragen, die mit „the“ anfangen.
  • 1 ist eine Grafik 100, die einen Zählwert von N-Grammen, die in einem Text vorkommen, auf der Basis des ersten Tokens des N-Gramms darstellt. Die beispielhafte Grafik von 1 beinhaltet eine horizontale Achse 105, die N-Gramme darstellt, die mit einem bestimmten Token beginnen, und eine vertikale Achse 110, die die Anzahl von N-Grammen darstellt, die mit diesem Token anfangen. In dem dargestellten Beispiel von 1 beginnen viele N-Gramme mit den Token „,“ 115, „the“ 120, „of“ 125, „and“ 130, „to“ 135, „a“ 140 und „by“ 145. Die Token „,“ 115, „the“ 120, „of“ 125, „and“ 130, „to“ 135, „a“ 140 und „by“ 145 können als Token angesehen werden, die häufig mit einem Suffix 180 beginnen. Wenn der Suffix-Sigma-Ansatz verwendet wird, werden N-Gramme, die mit denselben Token beginnen, jeweils von demselben Reducer (z. B. einem einzigen Knoten in dem Cluster) abgewickelt. Wie in dem dargestellten Beispiel von 1 gezeigt, führt das Verfügen über eine ungleichmäßige Verteilung von N-Grammen, die mit demselben Token beginnen, ebenso zu einer ungleichmäßigen Verteilung der Arbeit unter den Knoten in dem Cluster. Wenn die eingegebenen Korpora und die Cluster-Größe groß sind, kann diese ungleichmäßige Verteilung zu einem beherrschenden Faktor der Laufzeit des MapReduce-Jobs werden. In einigen Beispielen können die Laufzeiten zu lang werden, um nutzbar zu sein (z. B. Tage, Wochen usw.), während einige Cluster zu wenig genutzt werden, um die Größe eines großen Clusters zu rechtfertigen. Während beispielsweise viele Knoten ihre Reducing-Tasks für Token, mit denen nur einige wenige N-Gramme beginnen, abschließen werden, werden einige Knoten die Verarbeitung von Daten für die Token, mit denen viele N-Gramme beginnen, für eine lange Zeit fortsetzen.
  • Hierin offenbarte beispielhafte Ansätze teilen die Arbeit in drei Jobs auf (im Gegensatz zu dem einzigen MapReduce-Job des Suffix-Sigma-Ansatzes) und nutzen eine zusätzliche Eingabe. In hierin offenbarten Beispielen ist die Extra-Eingabe eine Liste von Wörtern und/oder Token (hierin als „Hot-Words“ bezeichnet), die den Großteil der ungleichmäßigen Verteilung verursachen (gewöhnlich die am häufigsten vorkommenden Monogramme, wie die Token, mit denen viele N-Gramme von 1 beginnen). Sobald die Liste von „Hot-Words“ identifiziert wurde, wird ein erster Job vorgebracht. Der erste Job nutzt einen Suffix-Sigma-Ansatz mit der Ausnahme, dass Suffixe, die mit einem „Hot-Word“ beginnen (hierin als „Hot-Suffixe“ bezeichnet), von dem normalen Ablauf des ursprünglichen Suffix-Sigma-Ansatzes getrennt werden. Der erste Job endet nun schnell, da alle Hot-Words entfernt sind. Infolgedessen identifiziert der erste Job einen Zählwert von N-Grammen, die nicht mit Wörtern beginnen, die in der Liste von Hot-Words vorkommen.
  • In hierin offenbarten Beispielen wird dann ein zweiter Job vorgebracht, der die „Hot-Suffixe“ verarbeitet, die vorübergehend gespeichert wurden. Der zweite Job zwingt die Daten in die erforderlichen Invarianten für einen weiteren lokalisierten Suffix-Sigma-Durchlauf und führt ein anfängliches N-Gramm-Zählen durch, um die Datengröße zu verringern. Dann wird ein dritter Job vorgebracht, der eine lokalisierte Version des Suffix-Sigma-Ansatzes ausführt und Endzählwerte von N-Grammen, die mit „Hot-Words“ anfangen, unter Verwendung einer naiven Wortzähltechnik ausgibt. Das Ergebnis des dritten Jobs sind ein oder mehrere Zählwerte von N-Grammen, die mit Wörtern und/oder Token beginnen, die in der Liste von Hot-Words vorkommen. In einigen Beispielen werden die Zählwerte von N-Grammen, die mit Wörtern und/oder Token beginnen, die in der Liste von Hot-Words vorkommen, zu den Zählwerten von N-Grammen, die nicht mit Wörtern und/oder Token beginnen, die in der Liste von Hot-Words vorkommen, addiert, um einen oder mehrere Gesamtzählwerte von N-Grammen, die in dem Text vorkommen, zu erzeugen.
  • Die Nutzung von hierin offenbarten Ansätzen verringert die Rechenzeit, die mit dem Berechnen eines oder mehrerer Zählwerte von N-Grammen assoziiert wird, in einem großen Textkorpus sowie nutzt Ressourcen des Clusters, der derartige Berechnungen durchführt, besser. Unter Voraussetzung eines großen eingegebenen Korpus (z. B. einem Korpus, der 1,7 Terabytes Text und mehr als 30 Milliarden verschiedene N-Gramme enthält) beispielsweise schließt der frühere Suffix-Sigma-Ansatz ungefähr 95 % des Jobs innerhalb von 4 Stunden unter Verwendung eines Clusters von 200 Knoten ab, während die restlichen 5 % des Jobs weitere 17 Stunden Errechnung benötigt. Im Allgemeinen konzentrieren sich die letzten 5 % des Jobs auf N-Gramme, die mit Hot-Words beginnen. Darüber hinaus bleiben während der letzten 5 % viele der Knoten in dem Cluster ungenutzt, da die einzigen restlichen Tasks sich auf die N-Gramme konzentrieren, die mit Hot-Words beginnen, die an einem Teilsatz von Knoten in dem Cluster konzentriert sind. Ein Hauptengpass in dem Suffix-Sigma-Ansatz besteht darin, dass viele Knoten versuchen werden, ihren Teil der „Hot-Suffixe“ (das Ergebnis der Mapping-Task) gleichzeitig an einen einzigen Knoten (zur Durchführung der Reducing-Task) zu übertragen. Somit wird, wenn die Eingabengröße zunimmt, noch mehr Last auf den bzw. die Knoten abgeladen, die das Verringern von N-Grammen durchführen, die mit Hot-Words beginnen, wodurch ein zusätzlicher Ressourcenkonflikt und eine exponentielle Rechenverzögerung verursacht werden.
  • Hierin offenbarte beispielhafte Ansätze, die eine Verarbeitung von N-Grammen, die mit Hot-Words beginnen, erzeugen beim Verarbeiten derselben großen eingegebenen Korpora unter Verwendung desselben Clusters von 200 Knoten ein Ergebnis in 6 Stunden (z. B. eine Verbesserung der Laufzeit um 350 %). Während einer derartigen Errechnung werden die Knoten des Clusters in einer gleichmäßigeren Verteilung verwendet (im Vergleich zu dem oben beschriebenen strikten Suffix-Sigma-Ansatz).
  • 2 ist ein Blockdiagramm eines beispielhaften N-Gramm-Zählers 200, der einen Zählwert von N-Grammen, die in einem Korpus vorkommen, identifiziert. Der beispielhafte N-Gramm-Zähler 200 des dargestellten Beispiels von 2 empfängt einen eingegebenen Korpus 205 und gibt einen oder mehrere Zählwerte von N-Grammen 210, die in dem eingegebenen Korpus vorkommen, aus. Der beispielhafte N-Gramm-Zähler 200 des dargestellten Beispiels von 2 beinhaltet einen N-Gramm-Zählwert-Controller 215, einen Hot-Word-Listenidentifikator 220 und einen Cluster 230 von Knoten 231, 232, 233.
  • Der beispielhafte N-Gramm-Zählwert-Controller 215 empfängt den eingegebenen Korpus 205 und eine Liste von Hot-Words von dem Hot-Word-Listenidentifikator 220. Der beispielhafte N-Gramm-Zählwert-Controller 215 koordiniert die Ausführung von MapReduce-Jobs an dem Cluster 230. Unter Verwendung der Ergebnisse der koordinierten MapReduce-Jobs gibt der beispielhafte N-Gramm-Zählwert-Controller 215 den bzw. die Zählwerte von N-Grammen 210, die in dem eingegebenen Korpus 205 vorkommen, aus. In dem dargestellten Beispiel von 2 handelt sich bei dem bzw. den Zählwerten von N-Grammen um eine Liste von N-Grammen, die in dem eingegebenen Korpus 205 vorkommen, und eine entsprechende Anzahl von Vorkommen des N-Gramms in dem eingegebenen Korpus 205. Derartige Informationen sind zur Identifizierung von beispielsweise einer Häufigkeit, mit der ein bestimmtes N-Gramm in dem eingegebenen Korpus vorkommt, einer Anzahl von verschiedenen N-Grammen, die in dem eingegebenen Korpus vorkommen, usw. von Nutzen.
  • Der beispielhafte Hot-Word-Identifikator 220 identifiziert eine Liste von Hot-Words für den eingegebenen Korpus 205. In dem dargestellten Beispiel von 2 wird die Liste von Hot-Words durch Erkennen einer Sprache des eingegebenen Korpus 205 (z. B. Englisch, Spanisch, Französisch usw.) und Auswählen von Wörtern und/oder Token, mit denen häufig Suffixe in der erkannten Sprache beginnen, identifiziert. Ein beliebiger anderer Ansatz zum Identifizieren einer Liste von Hot-Words kann jedoch zusätzlich oder alternativ dazu verwendet werden. Eine naive Wortzählung von Monogrammen kann beispielsweise durchgeführt werden und das oder die Wörter, die am häufigsten in dem eingegebenen Korpus vorkommen (z. B. Wörter, die mehr als eine Schwellenanzahl in dem eingegebenen Korpus vorkommen (Wörter, die mehr als 1000 Mal in dem Korpus vorkommen), Wörter, die zu einem Schwellenprozentanteil des eingegebenen Korpus vorkommen (Wörter, die zu mehr als 5 % vorkommen), ein oberer Prozentanteil der in dem eingegebenen Korpus vorkommenden Wörter (die oberen 5 % der Wörter), eine obere Anzahl der in dem eingegebenen Korpus vorkommenden Wörter (z. B. die fünfzehn am häufigsten vorkommenden Wörter) usw.), können zur Aufnahme in die Liste von Hot-Words ausgewählt werden.
  • Der beispielhafte Cluster 230 des dargestellten Beispiels von 2 ist ein HADOOP-Cluster. Ein beliebiger anderer Typ von geclusteter und/oder verteilter Rechenumgebung kann jedoch zusätzlich oder alternativ dazu verwendet werden. In dem dargestellten Beispiel von 2 beinhaltet der beispielhafte Cluster 230 Knoten 231, 232, 233. Obwohl in dem dargestellten Beispiel von 2 drei Knoten gezeigt sind, kann eine beliebige Anzahl von Knoten 231, 232, 233 zusätzlich oder alternativ dazu verwendet werden. Beispielsweise können Dutzende, Hunderte, Tausende usw. von Knoten in dem Cluster 230 enthalten sein. In dem dargestellten Beispiel von 2 ist jeder Knoten 231, 232, 233 durch eine Hardware-Prozessorplattform in dem Cluster 230 implementiert (z. B. eine separate physikalische Prozessorplattform). In einigen Beispielen ist jeder Knoten 231, 232, 233 durch eine virtuelle Prozessorplattform (z. B. eine virtuelle Maschine, einen Container usw.) implementiert. In dem dargestellten Beispiel von 2 ist der Cluster 230 als eine lokale Komponente des N-Gramm-Zählers 200 dargestellt. In einigen Beispielen kann der Cluster 230 jedoch dezentral von dem N-Gramm-Zähler 200 (z. B. dem N-Gramm-Zählwert-Controller 215 und/oder dem beispielhaften Hot-Word-Listenidentifikator) implementiert sein.
  • In dem dargestellten Beispiel von 2 beinhaltet jeder Knoten einen Hot-Word-Detektor 240, einen Partitionierer 245, einen Suffix-Identifikator 250, ein Dateisystem 255, einen Suffix-Gruppierer 260, einen Suffix-Sortierer 265, einen Hash-Wert-Erzeuger 270, einen Verteiler 275, einen Zähler 280 und einen N-Gramm-Konstruktor 285. In hierin offenbarten Beispielen implementieren die Knoten 231, 232, 233 MapReduce-Jobs. Somit kann jeder Knoten zu einer beliebigen gegebenen Zeit Mapping-Tasks, Shuffling-Tasks und/oder Reducing-Tasks durchführen. Wie oben angemerkt, arbeiten Mapping-Tasks parallel an partitionierten Abschnitten von eingegebenen Daten, um ein oder mehrere Schlüssel-Wert-Paare zu erzeugen, Shuffle-Tasks ordnen diese Schlüssel-Wert-Paare einem anderen Knoten (z. B. einem Reducer-Knoten) zu und/oder verteilen diese und Reducing-Tasks arbeiten an dem bzw. den zugeordneten und/oder verteilten Schlüssel-Wert-Paaren, um ein Endergebnis zu bilden. Ein beliebiger des beispielhaften Hot-Word-Detektors 240, des beispielhaften Partitionierers 245, des beispielhaften Suffix-Identifikators 250, des beispielhaften Dateisystems 225, des beispielhaften Suffix-Gruppierers 260, des beispielhaften Suffix-Sortierers 265, des beispielhaften Hash-Wert-Erzeugers 270, des beispielhaften Verteilers 275, des beispielhaften Zählers 280 und/oder des beispielhaften N-Gramm-Konstruktors 285 kann während Mapping-Tasks, Shuffling-Tasks und/oder Reducing-Tasks betrieben werden.
  • Der beispielhafte Hot-Word-Detektor 240 des dargestellten Beispiels von 2 greift auf eine Liste von Hot-Words für die eingegebenen Korpora zu, die von dem Hot-Word-Listenidentifikator 220 bereitgestellt wird. Unter Verwendung der Liste von Hot-Words, auf die zugegriffen wurde, vergleicht der beispielhafte Hot-Word-Detektor 240 jedes der Hot-Words mit dem ersten Term eines Suffix, das von dem Suffix-Identifikator 250 identifiziert wurde, um zu bestimmen, ob das Suffix mit einem Wort in der Liste von Hot-Words beginnt. Durch Durchführen einer derartigen Erkennung können derartige Suffixe aus den in Verbindung mit 4 beschriebenen Suffix-Sigma-Errechnungen weggelassen werden. Sobald sie aus den Suffix-Sigma-Errechnungen weggelassen wurden, können die Suffixe für eine N-Gramm-Zählung gleichmäßiger verteilt werden, als wenn sie unter Verwendung des Suffix-Sigma-Ansatzes verarbeitet worden wären. Das heißt, die Anzahl von Knoten, die zum Verarbeiten der Suffixe verwendet werden, ist höher als die Anzahl von Suffixen.
  • Der beispielhafte Partitionierer 245 des dargestellten Beispiels von 2 partitioniert die eingegebenen Korpora in von jedem Knoten zu analysierende Abschnitte. In hierin offenbarten Beispielen liest jeder Partitionierer 245, der jedem Knoten 231, 232, 233 entspricht, einen Abschnitt der eingegebenen Daten (z. B. eines Korpus, einer Liste von Hot-Word-Suffixen, einer kondensierten Liste von Suffixen usw.) und ermöglicht, dass derartige eingegebene Daten in einem Mapping-Job/einer Mapping-Phase eines MapReduce-Jobs verarbeitet werden.
  • Der beispielhafte Suffix-Identifikator 250 des dargestellten Beispiels von 2 identifiziert ein Suffix innerhalb eines Korpus von Daten (z. B. Text). Wenn der Textkorpus beispielsweise „A B C D E“ wäre, würde der beispielhafte Suffix-Identifikator 250 Suffixe wie „A B C D E“, „B C D E“, „C D E“, „D E“ und „E“ identifizieren. Als ein zusätzliches Beispiel kann der beispielhafte Suffix-Identifikator 250 „the big dog“ als ein Suffix des Textes „I see the big dog“ identifizieren. In einigen Beispielen, wenn der Hot-Word-Detektor 240 das Wort „the“ als ein Hot-Word identifiziert, schreibt der beispielhafte Suffix-Identifikator 250 das Suffix „the big dog“ in das Dateisystem 255. Infolgedessen wird das Suffix „the big dog“ von einer Verarbeitung unter Verwendung des Suffix-Sigma-Ansatzes ausgeschlossen und wird unter Verwendung eines Hot-Word-Sort-Jobs und eines Hot-Word-Suffix-Sigma-Jobs abgewickelt.
  • Das beispielhafte Dateisystem 255 des dargestellten Beispiels von 2 ist durch ein verteiltes HADOOP-Dateisystem (HDFS) implementiert. Das beispielhafte Dateisystem 255 speichert Dateien (in der Regel sehr große Dateien im Bereich von Gigabytes bis Terabytes und darüber hinaus) über mehrere Knoten 231, 232, 233 in dem Cluster 230. Die Daten werden unter den Knoten 231, 232, 233 in dem Cluster 230 repliziert, um im Fall eines Knotenausfalls Redundanz bereitzustellen.
  • Der beispielhafte Suffix-Gruppierer 260 des dargestellten Beispiels von 2 gruppiert Suffixe, die von dem Suffix-Identifikator 250 identifiziert wurden, gemäß ihrem ersten Term (z. B. ihrem ersten Token). Das Gruppieren von Suffixen gemäß ihrem ersten Term wendet die erste Invariante des Suffix-Sigma-Ansatzes an, die erfordert, dass alle N-Gramme, die mit demselben Token (z. B. einem Wort) beginnen, zum Reduzieren an demselben Knoten zusammengruppiert werden.
  • Der beispielhafte Suffix-Sortierer 265 des dargestellten Beispiels von 2 sortiert die gruppierten Suffixe in umgekehrter lexikographischer Reihenfolge. Das Sortieren der gruppierten Suffixe in umgekehrter lexikographischer Reihenfolge wendet die zweite Invariante des Suffix-Sigma-Ansatzes an, die erfordert, dass alle N-Gramme, die an einem einzigen Knoten zusammengruppiert wurden, in umgekehrter lexikographischer Reihenfolge sortiert werden. Das Sortieren in umgekehrter lexikographischer Reihenfolge erleichtert ein effizientes Zählen der N-Gramme.
  • Der beispielhafte Hash-Wert-Erzeuger 270 des dargestellten Beispiels von 2 erzeugt eine Hash-Wert-Darstellung jedes Hot-Word-Suffix in einer Liste von Hot-Word-Suffixen. Allgemeiner erzeugt der beispielhafte Hash-Wert-Erzeuger 270 Hash-Wert-Darstellungen von N-Grammen (oder Abschnitten davon). In hierin offenbarten Beispielen identifiziert der Hash-Wert einen Knoten 231, 232, 233 in dem Cluster 230, zu dem das Hot-Word-Suffix verteilt werden sollte. Die Verwendung des beispielhaften Hash-Wert-Erzeugers 270 zum Erzeugen des Hash-Werts von jedem der Hot-Words stellt sicher, dass eine gleichmäßige Verteilung der Suffixe in der Liste von Hot-Word-Suffixen unter den Knoten des Clusters vorliegt. In einigen Beispielen identifiziert der Hash-Wert-Erzeuger 270 einen Hash-Wert eines Hot-Word-Suffixes auf der Basis des ersten Tokens (z. B. Wort) des Suffixes.
  • Der beispielhafte Verteiler 275 des dargestellten Beispiels von 2 verteilt eine Verarbeitung von N-Grammen (z. B. Suffixen, Hot-Word-Suffixen usw.) auf der Basis eines Hash-Werts des N-Gramms, der von dem Hash-Wert-Erzeuger 270 erzeugt wurde. Der beispielhafte Verteiler 275 leitet die gruppierten und sortierten Suffixe an einen Knoten des Clusters 230 zur Verringerung auf der Basis der Sortierung und der Gruppierung der Suffixe weiter.
  • Der beispielhafte Zähler 280 des dargestellten Beispiels von 2 aggregiert Zählwerte von N-Grammen, die an einem Knoten empfangen werden, und/oder gibt diese aus. In einigen Beispielen zählt der Zähler 280 eine Anzahl von N-Grammen, die mit jedem Suffix beginnen. In einigen Beispielen führt der Zähler 280 eine naive Wortzählung durch, um eine Anzahl von Vorkommen von empfangenen N-Grammen oder Suffixen zu aggregieren.
  • Der beispielhafte N-Gramm-Konstruktor 285 des dargestellten Beispiels von 2 konstruiert N-Gramme unter Verwendung von einem oder mehreren Präfixen von empfangenen Suffixen. Wenn der beispielhafte N-Gramm-Konstruktor 285 beispielsweise das Suffix „the big dog“ empfängt, konstruiert der beispielhafte N-Gramm-Konstruktor 285 die N-Gramme „the“, „the big“ und „the big dog“. Der beispielhafte N-Gramm-Konstruktor 285 erzeugt die N-Gramme durch Iterieren durch Kombinationen von Termen in dem Suffix, die mit dem ersten Term des Suffixes beginnen. In hierin offenbarten Beispielen identifiziert der beispielhafte N-Gramm-Konstruktor 285 nicht die N-Gramme „big“, „big dog“ oder „dog“ als N-Gramme, die mit dem ersten Wort des Suffixes beginnen (z. B. weil sie nicht mit „the“ beginnen).
  • Obwohl eine beispielhafte Art des Implementierens des beispielhaften N-Gramm-Zählers 220 in 2 dargestellt ist, können eines bzw. einer oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 2 dargestellt sind, auf beliebige andere Weise kombiniert, aufgeteilt, neu geordnet, weggelassen, eliminiert und/oder implementiert werden. Des Weiteren können der beispielhafte N-Gramm-Zählwert-Controller 215, der beispielhafte Hot-Word-Listenidentifikator 220, der beispielhafte Hot-Word-Detektor 240, der beispielhafte Partitionierer 245, der beispielhafte Suffix-Identifikator 250, das beispielhafte Dateisystem 255, der beispielhafte Suffix-Gruppierer 260, der beispielhafte Suffix-Sortierer 265, der beispielhafte Hash-Wert-Erzeuger 270, der beispielhafte Verteiler 275, der beispielhafte Zähler 280, der beispielhafte N-Gramm-Konstruktor 285 und/oder allgemeiner der beispielhafte N-Gramm-Zähler 200 von 2 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert sein. Somit könnte beispielsweise ein beliebiger des beispielhaften N-Gramm-Zählwert-Controllers 215, des beispielhaften Hot-Word-Listenidentifikators 220, des beispielhaften Hot-Word-Detektors 240, des beispielhaften Partitionierers 245, des beispielhaften Suffix-Identifikators 250, des beispielhaften Dateisystems 255, des beispielhaften Suffix-Gruppierers 260, des beispielhaften Suffix-Sortierers 265, des beispielhaften Hash-Wert-Erzeugers 270, des beispielhaften Verteilers 275, des beispielhaften Zählers 280, des beispielhaften N-Gramm-Konstruktors 285 und/oder allgemeiner des beispielhaften N-Gramm-Zählers 200 von 2 durch einen oder mehrere analoge oder digitale Schaltungen, logische Schaltungen, programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD) und/oder feldprogrammierbare Logikvorrichtungen (FPLD) implementiert sein. Beim Lesen eines beliebigen der Geräte- oder Systemansprüche dieses Patents, um eine reine Software- und/oder Firmware-Implementation abzudecken, ist mindestens einer bzw. eines des beispielhaften N-Gramm-Zählwert-Controllers 215, des beispielhaften Hot-Word-Listenidentifikators 220, des beispielhaften Hot-Word-Detektors 240, des beispielhaften Partitionierers 245, des beispielhaften Suffix-Identifikators 250, des beispielhaften Dateisystems 255, des beispielhaften Suffix-Gruppierers 260, des beispielhaften Suffix-Sortierers 265, des beispielhaften Hash-Wert-Erzeugers 270, des beispielhaften Verteilers 275, des beispielhaften Zählers 280, des beispielhaften N-Gramm-Konstruktors 285 und/oder allgemeiner des beispielhaften N-Gramm-Zählers 200 von 2 hierdurch ausdrücklich definiert, um eine greifbare computerlesbare Speichervorrichtung oder Speicherdiskette, wie einen Speicher, eine Digital-Versatile-Disk (DVD), eine Compact-Disk (CD), eine Blu-ray-Disk usw., zu beinhalten, um die Software und/oder Firmware zu speichern. Noch weiter kann der beispielhafte N-Gramm-Zähler 200 von 2 ein, einen bzw. eine oder mehrere Elemente, Prozesse und/oder Vorrichtungen neben den oder anstelle der in 2 dargestellten beinhalten und/oder kann mehr als ein, einen bzw. eine von beliebigen oder allen der dargestellten Elemente, Prozesse und Vorrichtungen beinhalten.
  • Ablaufdiagramme, die für beispielhafte maschinenlesbare Anweisungen zum Implementieren des beispielhaften N-Gramm-Zählers 200 von 2 repräsentativ sind, sind in den 3, 4, 5 und/oder 6 gezeigt. In diesen Beispielen umfassen die maschinenlesbaren Anweisungen ein oder mehrere Programme zur Ausführung durch einen Prozessor, wie den Prozessor 712, der in der beispielhaften Prozessorplattform 700 gezeigt ist, die im Folgenden in Verbindung mit 7 erörtert wird. Das Programm kann in einer Software verkörpert sein, die auf einem greifbaren computerlesbaren Speichermedium gespeichert ist, wie einer CD-ROM, einer Diskette, einer Festplatte, einem Festkörperspeicher, einer Digital-Versatile-Disk (DVD), einer Blu-ray-Disk oder einem Speicher, der mit dem Prozessor 712 assoziiert ist, das gesamte Programm und/oder Teile davon könnten jedoch alternativ dazu von einer Vorrichtung ausgeführt werden, bei der es sich nicht um den Prozessor 712 handelt, und/oder in Firmware oder dedizierter Hardware verkörpert sein. Obwohl das beispielhafte Programm unter Bezugnahme auf das bzw. die in den 3, 4, 5 und/oder 6 dargestellten Ablaufdiagramme beschrieben wird, können des Weiteren alternativ dazu viele andere Verfahren zum Implementieren des beispielhaften N-Gramm-Zählers 200 verwendet werden. Die Reihenfolge der Ausführung der Blöcke kann beispielsweise geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden.
  • Wie oben erwähnt, können die beispielhaften Prozesse der 3, 4, 5 und/oder 6 unter Verwendung von codierten Anweisungen (z. B. computer- und/oder maschinenlesbare Anweisungen) implementiert werden, die auf einem greifbaren computerlesbaren Speichermedium gespeichert sind, wie einem Festplattenlaufwerk, einem Flash-Speicher, einem Festwertspeicher (ROM), einer Compact-Disk (CD), einer Digital-Versatile-Disk (DVD), einem Cache, einem Direktzugriffsspeicher (RAM) und/oder einer beliebigen anderen Speichervorrichtung oder Speicherdiskette, in der Informationen für eine beliebige Dauer (z. B. für längere Zeiträume, für kurze Momente, zum vorübergehenden Zwischenspeichern und/oder zum Cachen der Informationen) gespeichert werden. Wie hierin verwendet, ist der Begriff greifbares computerlesbares Speichermedium ausdrücklich definiert, um einen beliebigen Typ einer computerlesbaren Speichervorrichtung und/oder Speicherdiskette zu beinhalten und sich ausbreitende Signale auszuschließen und Übertragungsmedien auszuschließen. Wie hierin verwendet, werden „greifbares computerlesbares Speichermedium“ und „greifbares maschinenlesbares Speichermedium“ austauschbar verwendet. Zusätzlich oder alternativ dazu können die beispielhaften Prozesse der 3, 4, 5 und/oder 6 unter Verwendung von codierten Anweisungen (z. B. computer- und/oder maschinenlesbare Anweisungen) implementiert werden, die auf einem nichtflüchtigen computer- und/oder maschinenlesbaren Medium gespeichert sind, wie einem Festplattenlaufwerk, einem Flash-Speicher, einem Festwertspeicher, einer Compact-Disk, einer Digital-Versatile-Disk, einem Cache, einem Direktzugriffsspeicher und/oder einer beliebigen anderen Speichervorrichtung oder Speicherdiskette, in der Informationen für eine beliebige Dauer (z. B. für längere Zeiträume, für kurze Momente, zum vorübergehenden Zwischenspeichern und/oder zum Cachen der Informationen) gespeichert werden. Wie hierin verwendet, ist der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich definiert, um einen beliebigen Typ einer computerlesbaren Speichervorrichtung und/oder Speicherdiskette zu beinhalten und sich ausbreitende Signale auszuschließen und Übertragungsmedien auszuschließen. Wie hierin verwendet, wenn die Phrase „mindestens“ als der Wechselbegriff in einem Oberbegriff eines Anspruchs verwendet wird, ist er auf dieselbe Weise uneingeschränkt, wie der Begriff „umfassend“ uneingeschränkt ist.
  • 3 ist ein Ablaufdiagramm, das für beispielhafte maschinenlesbare Anweisungen 300 repräsentativ ist, die bei Ausführung bewirken, dass der N-Gramm-Zähler 200 von 2 einen Zählwert von N-Grammen, die in einem Korpus vorkommen, identifiziert. Der beispielhafte Prozess 300 beginnt, wenn der beispielhafte N-Gramm-Zählwert-Controller auf den eingegebenen Korpus zugreift, Block 310. Der beispielhafte N-Gramm-Zählwert-Controller arbeitet mit dem Hot-Word-Listenidentifikator zusammen, um eine Liste von Hot-Words für den eingegebenen Korpus 205 zu identifizieren, Block 320. In hierin offenbarten Beispielen wird die Hot-Word-Liste auf der Basis der Sprache des eingegebenen Korpus 205 identifiziert. Daher identifiziert der beispielhafte Hot-Word-Listenidentifikator die Hot-Words für den eingegebenen Korpus durch Bestimmen einer Sprache des eingegebenen Korpus 205 und Auswählen einer Liste (z. B. einer vordefinierten Liste) für die identifizierte Sprache. Die beispielhafte Hot-Word-Liste kann jedoch auf eine beliebige andere Weise identifiziert werden, wie beispielsweise Bestimmen einer Liste von Wörtern, die in dem eingegebenen Korpus am häufigsten vorkommen (z. B. Wörter, die mehr als eine Schwellenanzahl in dem eingegebenen Korpus vorkommen (Wörter, die mehr als 1000 Mal in dem Korpus vorkommen), Wörter, die zu einem Schwellenprozentanteil des eingegebenen Korpus vorkommen (Wörter, die zu mehr als 5 % vorkommen), ein oberer Prozentanteil der in dem eingegebenen Korpus vorkommenden Wörter (die oberen 5 % der Wörter) usw.).
  • Der beispielhafte N-Gramm-Zählwert-Controller 215 initiiert einen Suffix-Sigma-with-Hot-Word-Extraction-Job (Suffix-Sigma-Job mit Extraktion von Hot-Words) an dem Cluster (Block 330). In dem dargestellten Beispiel von 3 werden sowohl der Korpus als auch die Liste von Hot-Words als Eingaben an den Cluster bereitgestellt. Der beispielhafte Suffix-Sigma-with-Hot-Word-Extraction-Job, der bei Block 330 initiiert wird, ist dem oben beschriebenen Suffix-Sigma-Ansatz ähnlich, mit der Ausnahme, dass N-Gramme mit einem Suffix innerhalb der Hot-Word-Liste aus der Berechnung weggelassen und separat ausgegeben werden. Ein beispielhafter Ansatz zum Durchführen des Suffix-Sigma-with-Hot-Word-Suffix-Extraction-Jobs wird im Folgenden in Verbindung mit 4 offenbart. In dem dargestellten Beispiel von 3 werden N-Gramme mit einem Suffix innerhalb der Hot-Word-Liste an das Dateisystem 255 unter Verwendung einer HADOOP-MultipleOutputs-Funktion ausgegeben. Ein beliebiger anderer Ansatz zum Ausgeben von N-Grammen an das Dateisystem 255 kann jedoch zusätzlich alternativ dazu verwendet werden. Infolgedessen werden N-Gramme, die mit einem Suffix in der Hot-Word-Liste beginnen, vom Zählen an diesem Punkt übergangen und müssen nicht den zwei Invarianten, die in dem Suffix-Sigma-Ansatz verwendet werden, entsprechen. Der Cluster 230 sendet Zählwerte von Vorkommen für N-Gramme, die durch den Suffix-Sigma-with-Hot-Word-Extraction-Job identifiziert wurden, an den N-Gramm-Zählwert-Controller 215 zurück. Der beispielhafte N-Gramm-Zählwert-Controller 215 bestimmt, ob eine Ausgabe des initiierten Suffix-Sigma-with-Hot-Word-Suffix-Extraction-Jobs abgeschlossen ist (Block 332). Wenn der beispielhafte N-Gramm-Zählwert-Controller 215 bestimmt, dass die Ausgabe abgeschlossen ist, wenn der initiierte Suffix-Sigma-with-Hot-Word-Suffix-Extraction-Job abgeschlossen ist. Ein beliebiger anderer Indikator kann jedoch zusätzlich oder alternativ dazu verwendet werden, wie beispielsweise eine Angabe, dass Mapping-Tasks, die mit dem initiierten Suffix-Sigma-with-Hot-Word-Suffix-Extraction-Job assoziiert sind, abgeschlossen sind (was z. B. als ein Indikator dient, dass die Liste von N-Grammen mit Suffixen innerhalb der Hot-Word-Liste, die in dem Dateisystem 255 gespeichert ist und die von dem beispielhaften Suffix-Sigma-with-Hot-Word-Suffix-Extraction-Job ausgegeben wurde, abgeschlossen ist). Wenn die Ausgabe nicht abgeschlossen ist (Block 332 sendet ein NEIN-Ergebnis zurück), wartet der beispielhafte N-Gramm-Zählwert-Controller 215, bis die Ausgabe abgeschlossen ist. In einigen Beispielen kann der N-Gramm-Zählwert-Controller 215 eine Schwellenzeitdauer warten, bevor er erneut bestimmt, ob die Ausgabe abgeschlossen ist.
  • Sobald die Ausgabe des beispielhaften Suffix-Sigma-with-Hot-Word-Suffix-Extraction-Jobs abgeschlossen wurde (Block 332 sendet ein JA-Ergebnis zurück), sammelt der beispielhafte N-Gramm-Zählwert-Controller 215 die Anzahl von N-Grammen, die von dem Suffix-Sigma-with-Hot-Word-Extraction-Job zurückgesendet wurde (Block 335). Wie in Verbindung mit 1 angemerkt, stellt diese zurückgesendete Anzahl von N-Grammen in der Regel 95 % der gemappten Eingabe dar. Diese Anzahl spiegelt jedoch nicht N-Gramme wider, die mit Wörtern in der Hot-Liste beginnen. Wie oben angemerkt, wäre die Liste von Hot-Words nicht verwendet worden, würden diese N-Gramme aufgrund der von dem Suffix-Sigma-Ansatz angewendeten Invarianten einem einzigen Knoten zur Zählung zugeordnet werden. Ein derartiger Ansatz verteilt die Arbeit ungleich an Knoten innerhalb des Clusters, wodurch eine verlängerte Rechenzeit und eine ineffektive (z. B. ungleichmäßige) Nutzung von Ressourcen des Clusters verursacht werden. Der bzw. die gesammelten Zählwerte von N-Grammen, die von dem Suffix-Sigma-with-Hot-Word-Extraction-Job zurückgesendet wurden, können später von dem N-Gramm-Zählwert-Controller dazu verwendet werden, einen bzw. mehrere Gesamtzählwerte von N-Grammen, die in dem eingegebenen Korpus vorkommen, zu bilden (siehe Block 390).
  • Mit jeder Liste von N-Grammen mit Suffixen innerhalb der Hot-Word-Liste, die in dem Dateisystem 255 gespeichert ist, initiiert der beispielhafte N-Gramm-Zählwert-Controller 215 einen Hot-Word-Sorting-Job, um die „Hot-Prefixes“ gleichmäßig über den gesamten Cluster zu verteilen (Block 350). Ein beispielhafter Ansatz zum Implementieren des Hot-Word-Sorting-Jobs an jedem der Knoten ist im Folgenden in Verbindung mit 5 offenbart. In dem dargestellten Beispiel von 3 folgt der Hot-Word-Sorting-Job nicht den ersten Invarianten des Suffix-Sigma-Ansatzes. Die zweite Invariante (umgekehrte lexikographische Sortierung) wird jedoch angewendet und eine naive Wortzählung wird durchgeführt, um die Anzahl von Suffixen, die von jedem Knoten 231, 232, 233 zurückgesendet wird, auf eine Liste von einzigartigen Suffixen, die in dem Dateisystem vorgekommen sind, zu verringern. Die kondensierte Version der Liste von Suffixen, die in dem Dateisystem 255 vorgekommen sind, wird als eine kondensierte Liste in dem Dateisystem 255 gespeichert. Der beispielhafte N-Gramm-Zählwert-Controller 215 wartet, bis der Hot-Word-Sorting-Job abgeschlossen ist (Block 352).
  • Die kondensierte Liste, die in dem Dateisystem 255 gespeichert ist, entspricht nicht der ersten Invariante des Suffix-Sigma-Ansatzes. Das heißt, einige Suffixe, die mit demselben Hot-Word beginnen, können während des Hot-Word-Sorting-Jobs von unterschiedlichen Knoten abgewickelt worden sein (z. B. kann ein erster Abschnitt der kondensierten Liste, der von einem ersten Knoten verarbeitet wird, ein Suffix enthalten, das in einem zweiten Abschnitt der kondensierten Liste enthalten ist, der von einem zweiten Knoten verarbeitet wird).
  • Nach Abschluss des Hot-Word-Sorting-Jobs (z. B. wenn Block 352 ein JA-Ergebnis zurücksendet) initiiert der beispielhafte N-Gramm-Zählwert-Controller 215 einen Hot-Word-Suffix-Sigma-Job (Block 370). Obwohl die Ausgabe des vorherigen Jobs nicht der Invariante Eins entsprach, was bedeutet, dass Suffixe, die mit demselben „Hot-Word“ beginnen, in unterschiedlichen Verarbeitungssegmenten für diesen Job vorkommen werden, wurde die Invariante Zwei bewahrt, was bedeutet, dass sie alle in umgekehrter lexikographischer Reihenfolge sortiert werden. Bei Ausführen des Hot-Word-Suffix-Sigma-Jobs konstruieren die beispielhaften Knoten 231, 232, 233 des Clusters 230 N-Gramme durch Aufnehmen von Präfixen von jedem der Suffixe in der kondensierten Liste, Verteilen jener N-Gramme und Durchführen einer naiven Wortzählung, um Vorkommen jedes N-Gramms zu aggregieren. Während der Ausführung des Hot-Word-Suffix-Sigma-Jobs sammelt der beispielhafte N-Gramm-Zählwert-Controller 215 einen oder mehrere Zählwerte von N-Grammen, die von dem Hot-Word-Suffix-Sigma-Job identifiziert wurden (Block 371) (z. B. Zählwerte von N-Grammen, die mit einem Hot-Word beginnen und die nicht von dem Suffix-Sigma-with-Hot-Word-Suffix-Extraction-Job von Block 330 identifiziert wurden). Der beispielhafte N-Gramm-Zählwert-Controller 215 wartet, bis der Hot-Word-Suffix-Sigma-Job abgeschlossen ist (Block 372).
  • Nach Abschluss des Hot-Word-Suffix-Sigma-Jobs (z. B. wenn Block 372 ein JA-Ergebnis zurücksendet) kombiniert der beispielhafte N-Gramm-Zählwert-Controller 215 den bzw. die N-Gramm-Zählwerte für N-Gramme, die nicht mit einem Hot-Word beginnen (der bzw. die Zählwerte, die in Block 335 gesammelt wurden), mit dem bzw. den N-Gramm-Zählwerten für N-Gramme, die mit einem Hot-Word beginnen (z. B. der bzw. die Zählwerte, die in Block 371 gesammelt wurden), um einen bzw. mehrere Gesamtzählwerte für N-Gramme in den eingegebenen Korpora zu bilden (Block 390).
  • 4 ist ein Ablaufdiagramm, das für beispielhafte maschinenlesbare Anweisungen 400 repräsentativ ist, um einen Suffix-Sigma-with-Hot-Word-Extraction-Job an einem oder mehreren Knoten 231, 232, 233 des beispielhaften Clusters 230 von 2 durchzuführen. Der beispielhafte Prozess 400 des dargestellten Beispiels von 4 beginnt, wenn der beispielhafte Hot-Word-Detektor 240 auf eine Liste von Hot-Words für die eingegebenen Korpora zugreift (Block 405). Der beispielhafte Partitionierer 245 partitioniert die eingegebenen Korpora (Block 410). Die Partitionen werden jeweils von einem Knoten 231, 232, 233 in dem Cluster 230 zur Durchführung eines Mapping-Tasks 412 des MapReduce-Jobs von 4 abgewickelt.
  • Der beispielhafte Suffix-Identifikator 250 identifiziert ein Suffix innerhalb der Partition, die dem Knoten 231, 232, 233 zugeordnet wurde, auf dem der Suffix-Identifikator 250 arbeitet (Block 415). Der beispielhafte Hot-Word-Detektor 240 bestimmt, ob das Suffix mit einem Hot-Word in der Liste von Hot-Words beginnt (Block 420). Wenn das Suffix mit einem Hot-Word beginnt (Block 420 sendet ein JA-Ergebnis zurück), schreibt der beispielhafte Suffix-Identifikator 250 das Suffix in eine Liste von Hot-Word-Suffixen, die auf dem Dateisystem 255 gespeichert ist (Block 425). In dem dargestellten Beispiel von 4 werden die Suffixe in das Dateisystem 255 unter Verwendung einer HADOOP-MultipleOutputs-Funktion geschrieben. Ein beliebiger anderer Ansatz zum Schreiben eines Suffixes in das Dateisystem 255 kann jedoch zusätzlich alternativ dazu verwendet werden. Suffixe, die in das Dateisystem 255 geschrieben werden, werden in den beispielhaften Anweisungen 400 von 4 nicht weiter verarbeitet. Eine Verarbeitung derartiger Suffixe wird später in Verbindung mit den 5 und/oder 6, die im Folgenden offenbart sind, abgewickelt.
  • Wenn das Suffix nicht mit einem Hot-Word beginnt (Block 420 sendet ein NEIN-Ergebnis zurück), aggregiert der beispielhafte Suffix-Identifikator 250 das Suffix zur weiteren Verarbeitung (Block 427). Der beispielhafte Suffix-Identifikator 250 bestimmt, ob zusätzliche Suffixe zum Vergleich mit den Wörtern in der Liste von Hot-Words existieren (Block 430). Wenn zusätzliche Suffixe existieren (Block 430 sendet ein JA-Ergebnis zurück), wird der Prozess der Blöcke 415 bis 430 wiederholt, bis keine zusätzlichen Suffixe existieren (bis Block 430 ein NEIN-Ergebnis zurücksendet).
  • Der Suffix-Sigma-with-Hot-Word-Extraction-Job von 4 fährt mit einem Shuffle-Task-Block 432 fort. Der beispielhafte Suffix-Gruppierer 260 gruppiert Suffixe gemäß ihrem ersten Term (z. B. ihrem ersten Token) (Block 435). Das Gruppieren von Suffixen gemäß ihrem ersten Term wendet die erste Invariante des Suffix-Sigma-Ansatzes an. Der beispielhafte Suffix-Sortierer 265 sortiert die gruppierten Suffixe in umgekehrter lexikographischer Reihenfolge (Block 440). Das Sortieren der gruppierten Suffixe in umgekehrter lexikographischer Reihenfolge wendet die zweite Invariante des Suffix-Sigma-Ansatzes an. Der beispielhafte Verteiler 275 leitet die gruppierten und sortierten Suffixe an einen Knoten (z. B. einen Knoten, der von dem Knoten getrennt ist, der die Mapping-Task 412 betreibt, denselben Knoten, der die Mapping-Task 412 betrieben hat) zur Verringerung auf der Basis der Sortierung und der Gruppierung des Suffixe weiter (Block 441). Das heißt, jedes Suffix, das mit demselben Term beginnt, wird an denselben Knoten zur Verringerung gesendet.
  • Während einer Reduce-Task 442 zählt der beispielhafte Zähler 280 (der an einem Reducer-Knoten arbeitet) die Anzahl von N-Grammen, die mit jedem Suffix beginnen (Block 445). Der beispielhafte Zähler 280 aggregiert die Zählwerte von N-Grammen für alle Suffixe, die an jenen Knoten weitergeleitet wurden, und gibt diese aus (Block 450). Die beispielhaften Anweisungen 400, die den beispielhaften Suffix-Sigma-with-Hot-Word-Extraction-Job implementieren, enden dann, nachdem sie einen oder mehrere Zählwerte von N-Grammen, die nicht mit Wörtern in der Liste von Hot-Words beginnen, erstellt haben.
  • 5 ist ein Ablaufdiagramm, das für beispielhafte maschinenlesbare Anweisungen 500 repräsentativ ist, um einen Hot-Word-Sorting-Job an einem oder mehreren Knoten 231, 232, 233 des beispielhaften Clusters 230 von 2 durchzuführen. In dem dargestellten Beispiel von 5 ist keine Mapping-Task gezeigt. In dem dargestellten Beispiel von 5 ist die Mapping-Task des Hot-Word-Sorting-Jobs eine Identity-Task. Das heißt, die Mapping-Task sendet einfach eine Eingabe des Jobs (z. B. die Liste von Hot-Word-Suffixen, auf die zugegriffen wurde) für eine Shuffie-Task 508 zurück. Der beispielhafte Prozess 500 des dargestellten Beispiels von 5 beginnt, wenn der Hash-Wert-Erzeuger 270 auf die Liste von Hot-Word-Suffixen zugreift, die auf dem Dateisystem 255 gespeichert sind (Block 505) (siehe Block 425). Während der Shuffie-Task 508 errechnet der beispielhafte Hash-Wert-Erzeuger 270 eine Hash-Wert-Darstellung jedes Hot-Word-Suffix in der Liste von Hot-Word-Suffixen, auf die zugegriffen wurde (Block 509). In hierin offenbarten Beispielen identifiziert der Hash-Wert einen Knoten in dem Cluster 230, zu dem das Hot-Word-Suffix verteilt werden sollte. Der beispielhafte Verteiler 275 verteilt die Verarbeitung von Hot-Word-Suffixen auf der Basis von errechneten Hash-Werten der Hot-Words in der Liste von Hot-Word-Suffixen (z. B. unter Verwendung des Hash-Werts, um einen Knoten zu identifizieren, d. h. um eine Reducing-Task 518 durchzuführen) (Block 510). In dem dargestellten Beispiel von 5 stellt das Erzeugen des Hash-Werts der Hot-Words sicher, dass eine gleichmäßige Verteilung der Suffixe in der Liste von Hot-Word-Suffixen unter den Knoten 231, 232, 233 des Clusters 230 vorliegt.
  • Der beispielhafte Suffix-Sortierer 265 sortiert die verteilten Suffixe in umgekehrter lexikographischer Reihenfolge (Block 515). Das Sortieren der gruppierten Suffixe in umgekehrter lexikographischer Reihenfolge wendet die zweite Invariante des Suffix-Sigma-Ansatzes an und stellt sicher, dass alle ähnlichen Suffixe dem Knoten, der die Reducing-Task 518 durchführt, in der Reihenfolge bereitgestellt werden. Wenn Schlüssel-Wert-Paare einem Knoten in der Reihenfolge bereitgestellt werden, werden die Schlüssel-Wert-Paare als ein Schlüssel, gefolgt von mehreren Werten für denselben Schlüssel (die jedem der Schlüssel-Wert-Paare entsprechen, die unter Verwendung desselben Schlüssels geordnet werden) bereitgestellt, wodurch ein etwaiger Übertragungsoverhead, der mit dem Übertragen von Schlüssel-Wert-Paaren assoziiert ist, verringert wird.
  • Der beispielhafte Suffix-Identifikator 250 identifiziert ein Suffix, das an den Knoten verteilt wird, der die Reduce-Task durchführt (Block 520). Der beispielhafte Zähler 280 aggregiert die assoziierten Zählwerte für das identifizierte Suffix (Block 525). Der beispielhafte Zähler 280 gibt das identifizierte Suffix und den aggregierten Zählwert aus (Block 530). In dem dargestellten Beispiel von 5, wenn die eingegebenen Suffixe angegeben haben, dass das Suffix „the big dog“ 5 und 6 Mal vorkam, würde der beispielhafte Zähler 280 ein Schlüssel-Wert-Paar „Schlüssel: the big dog‘-Wert: 11“ ausgeben. Der beispielhafte Suffix-Identifikator 250 bestimmt, ob ein oder mehrere zusätzliche Suffixe dem Knoten 231, 232, 233, der die Reducing-Task 518 durchführt, bereitgestellt wurden (Block 540). Wenn ein zusätzliches Suffix bereitgestellt wurde (Block 540 sendet ein JA-Ergebnis zurück), werden die Arbeitsschritte 520 bis 540 wiederholt, bis die assoziierten Zählwerte aller Suffixe aggregiert und ausgegeben wurden.
  • Der beispielhafte Hot-Word-Sorting-Job, der durch die beispielhaften Anweisungen 500 von 5 implementiert wird, endet dann. Infolgedessen ist die Ausgabe des beispielhaften Hot-Word-Sorting-Jobs eine Liste von Schlüssel-Wert-Paaren, die Suffixen entsprechen, und ihrer Anzahl von Vorkommen. Das Zählen der Anzahl von Vorkommen jedes Suffixes verringert eine Datenmenge, die in einem anschließenden Suffix-Sigma-Word-Count-Job gelesen werden soll. Eine derartige Verringerung stellt einen zeitnäheren Abschluss eines Datentransfers zwischen Knoten des Clusters bereit, da eine verringerte Liste anstelle einer Liste, die duplizierte Daten beinhaltet, übertragen wird. Tabelle 1 im Folgenden stellt eine beispielhafte Ausgabe der beispielhaften Anweisungen 500 von 5 dar: Tabelle 1
    Schlüssel (Suffix) Wert
    the big dog 11 Vorkommen
    the big cat 8 Vorkommen
    Die obige Tabelle 1 beinhaltet zwei Spalten: eine Schlüsselspalte und eine Wertespalte. In dem dargestellten Beispiel von Tabelle 1 stellt die Schlüsselspalte ein Suffix dar und die Wertespalte stellt eine Anzahl von Vorkommen des Suffixes in der Liste von Hot-Word-Suffixen (auf die z. B. wie in Block 505 zugegriffen wird) dar. Die beispielhafte Tabelle 1 wird mittels eines im Folgenden in Verbindung mit 6 beschriebenen Suffix-Sigma-Word-Count-Jobs weiter verarbeitet.
  • 6 ist ein Ablaufdiagramm, das für beispielhafte maschinenlesbare Anweisungen 600 repräsentativ ist, um einen Suffix-Sigma-Word-Count-Job unter Verwendung der sortierten Hot-Word-Suffixe an einem oder mehreren Knoten 231, 232, 233 des beispielhaften Clusters 230 von 2 durchzuführen. Das beispielhafte Programm 600 von 6 beginnt, wenn der beispielhafte Suffix-Identifikator auf die sortierten und kondensierten Suffixe zugreift, die von dem beispielhaften Zähler 280 in Block 530 von 5 ausgegeben werden (Block 610). Der beispielhafte N-Gramm-Konstruktor 285 konstruiert N-Gramme unter Verwendung von einem oder mehreren Präfixen von jedem der Suffixe (Block 620). Unter Fortsetzung des Beispiels der obigen Tabelle 1 nehme man an, dass ein erster Knoten 231, der eine Mapping-Task 615 von 6 betreibt, das Suffix „the big dog“ empfängt. Man nehme auf ähnliche Weise an, dass ein zweiter Knoten 232, der die Mapping-Task 615 betreibt, das Suffix „the big cat“ empfängt. Der beispielhafte N-Gramm-Konstruktor 285 des ersten Knotens 231 konstruiert die N-Gramme „the“, „the big“ und „the big dog“. Der beispielhafte N-Gramm-Konstruktor 285 des zweiten Knotens 232 konstruiert die N-Gramme „the“, „the big“ und „the big cat“. Mit jedem konstruierten N-Gramm wendet der N-Gramm-Konstruktor 285 den Wert an, der mit dem Ursprungssuffix assoziiert wurde. Dem Beispiel von Tabelle 1 folgend erhält das N-Gramm „the“, das von „the big dog“ stammt, einen Wert 11, wohingegen das N-Gramm „the“, das von „the big cat“ stammt, einen Wert 8 erhält (entsprechend der Anzahl von Vorkommen von „the big dog“ bzw. „the big cat“).
  • Bei einer Shuffling-Task 625 werden die konstruierten N-Gramme auf der Basis eines Hash-Werts des N-Gramms verteilt (Block 630). Infolgedessen werden ähnliche N-Gramme an denselben Knoten verteilt, der eine Reducing-Task 635 durchführt. Das N-Gramm „the“ (von „the big dog“) beispielsweise wird an denselben Knoten wie das N-Gramm „the“ (von „the big cat“) verteilt. Ebenso wird das N-Gramm „the big“ (von „the big dog“) an denselben Knoten wie das N-Gramm „the big“ (von „the big cat“) verteilt (der derselbe Knoten wie das N-Gramm „the“ sein kann oder auch nicht). Die N-Gramme „the big dog“ und „the big cat“ werden wahrscheinlich nicht an denselben Knoten verteilt (können dies jedoch, wenn ihre gehaschten Werte angeben, dass sie an denselben Knoten verteilt werden sollten). Das N-Gramm „the“ beispielsweise soll an einen ersten Knoten übertragen werden, das N-Gramm „the big“ soll an einen zweiten Knoten übertragen werden, das N-Gramm „the big dog“ wird an einen dritten Knoten übertragen und das N-Gramm „the big cat“ wird an einen vierten Knoten übertragen. Ein beliebiger des ersten Knotens, des zweiten Knotens, des dritten Knotens und/oder des vierten Knotens kann derselbe Knoten sein.
  • Mit dem Verteilen von ähnlichen N-Grammen an Knoten, die die Reduce-Task 635 durchführen, führt der beispielhafte Zähler 280 von jedem Knoten, der die Reduce-Task 635 durchführt, eine naive Wortzählung durch, um Vorkommen jedes N-Gramms zu aggregieren (Block 640). Der beispielhafte Zähler 280 des zweiten Knotens beispielsweise, der das N-Gramm „the big“ empfing, das von sowohl „the big dog“ als auch „the big cat“ stammt, identifiziert naiv, dass „the big“ gleich ist und einen Zählwert von neunzehn (entsprechend den 11 Vorkommen von „the big“ von „the big dog“ und den 8 Vorkommen von „the big“ von „the big cat“) aufweist. Der beispielhafte Zähler 280 gibt das bzw. die N-Gramme und seinen entsprechenden Zählwert bzw. ihre entsprechenden Zählwerte aus (Block 650). Der beispielhafte Prozess 600 von 6 endet dann. In einigen Beispielen fährt der beispielhafte Prozess 300 fort (siehe Block 390), um die N-Gramme und ihre entsprechenden Zählwerte, die in Block 650 ausgegeben wurden (die Suffixen entsprechen, die mit einem Hot-Word begannen), mit den N-Grammen und ihren entsprechenden Zählwerten, die in Block 330 ausgegeben wurden (siehe 3), zu kombinieren, um einen oder mehrere N-Gramm-Gesamtzählwerte für alle N-Gramme, die in den eingegebenen Korpora vorkommen, zu bilden.
  • 7 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 700, die die Anweisungen der 3, 4, 5 und/oder 6 ausführen kann, um den beispielhaften N-Gramm-Zähler 200 von 2 zu implementieren. Die Prozessorplattform 700 kann beispielsweise ein Server, ein Personalcomputer, eine tragbare Vorrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie ein iPad™), eine Internet-Einrichtung, eine Spielkonsole oder ein beliebiger anderer Typ einer Datenverarbeitungsvorrichtung sein.
  • Die Prozessorplattform 700 des dargestellten Beispiels beinhaltet einen Prozessor 712. Der Prozessor 712 des dargestellten Beispiels ist Hardware. Der Prozessor 712 kann beispielsweise durch einen oder mehrere integrierte Schaltungen, logische Schaltungen, Mikroprozessoren oder Steuerungen von einer beliebigen gewünschten Familie oder einem beliebigen gewünschten Hersteller implementiert sein.
  • Der Prozessor 712 des dargestellten Beispiels beinhaltet einen lokalen Speicher 713 (z. B. einen Cache-Speicher) und führt Anweisungen aus, um den beispielhaften N-Gramm-Zählwert-Controller 215, den beispielhaften Hot-Word-Listenidentifikator 220, den beispielhaften Hot-Word-Detektor 240, den beispielhaften Partitionierer 245, den beispielhaften Suffix-Identifikator 250, den beispielhaften Suffix-Gruppierer 260, den beispielhaften Suffix-Sortierer 265, den beispielhaften Hash-Wert-Erzeuger 270, den beispielhaften Verteiler 275, den beispielhaften Zähler 280 und/oder den beispielhaften N-Gramm-Konstruktor 285 zu implementieren. Der Prozessor 712 des dargestellten Beispiels ist mittels eines Busses 718 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 714 und einen nichtflüchtigen Speicher 716 beinhaltet. Der flüchtige Speicher 714 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM), einen dynamischen Direktzugriffsspeicher (DRAM), einen dynamischen RAMBUS-Direktzugriffsspeicher (RDRAM) und/oder einen beliebigen anderen Typ einer Direktzugriffsspeichervorrichtung implementiert sein. Der nichtflüchtige Speicher 716 kann durch einen Flash-Speicher und/oder einen beliebigen anderen gewünschten Typ einer Speichervorrichtung implementiert sein. Der Zugriff auf den Hauptspeicher 714, 716 wird durch eine Speichersteuerung gesteuert.
  • Die Prozessorplattform 700 des dargestellten Beispiels beinhaltet außerdem eine Schnittstellenschaltung 720. Die Schnittstellenschaltung 720 kann durch einen beliebigen Typ eines Schnittstellenstandards implementiert sein, wie eine Ethernet-Schnittstelle, ein universeller serieller Bus (USB) und/oder eine PCI-Express-Schnittstelle.
  • In dem dargestellten Beispiel sind eine oder mehrere Eingabevorrichtungen 722 mit der Schnittstellenschaltung 720 verbunden. Die Eingabevorrichtung bzw. die Eingabevorrichtungen 722 ermöglichen einem Benutzer, Daten und Befehle in den Prozessor 712 einzugeben. Die Eingabevorrichtung/Eingabevorrichtungen können durch beispielsweise einen Audiosensor, ein Mikrofon, eine Kamera (Standfoto oder Video), eine Tastatur, eine Taste, eine Maus, einen Berührungsbildschirm, ein Tastfeld, ein Isopoint und/oder ein Spracherkennungssystem implementiert sein.
  • Eine oder mehrere Ausgabevorrichtungen 724 sind ebenfalls mit der Schnittstellenschaltung 720 des dargestellten Beispiels verbunden. Die Ausgabevorrichtungen 724 können beispielsweise durch Anzeigevorrichtungen (z. B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige, eine Kathodenstrahlröhrenanzeige (CRT), ein Berührungsbildschirm, eine taktile Ausgabevorrichtung, ein Drucker und/oder Lautsprecher) implementiert sein. Die Schnittstellenschaltung 720 des dargestellten Beispiels beinhaltet somit in der Regel eine Grafiktreiberkarte, einen Grafiktreiberchip oder einen Grafiktreiberprozessor.
  • Die Schnittstellenschaltung 720 des dargestellten Beispiels beinhaltet außerdem eine Kommunikationsvorrichtung, wie einen Sender, einen Empfänger, einen Transceiver, ein Modem und/oder eine Netzwerkschnittstellenkarte, um einen Datenaustausch mit externen Maschinen (z. B. Datenverarbeitungsvorrichtungen einer beliebigen Art) mittels eines Netzwerks 726 (z. B. eine Ethernet-Verbindung, ein digitaler Teilnehmeranschluss (DSL), eine Telefonleitung, ein Koaxialkabel, ein Mobilfunktelefonsystem usw.) zu erleichtern.
  • Die Prozessorplattform 700 des dargestellten Beispiels beinhaltet außerdem eine oder mehrere Massenspeichervorrichtungen 728 zum Speichern von Software und/oder Daten. Beispiele von derartigen Massenspeichervorrichtungen 728 beinhalten Diskettenlaufwerke, Festplattenlaufwerke, Compact-Disk-Laufwerke, Blu-ray-Laufwerke, RAID-Systeme und Digital-Versatile-Disk-Laufwerke (DVD-Laufwerke). In einigen Beispielen implementiert die beispielhafte Massenspeichervorrichtung 728 das beispielhafte Dateisystem 255.
  • Die codierten Anweisungen 732 der 3, 4, 5 und/oder 6 können in der Massenspeichervorrichtung 728, in dem flüchtigen Speicher 714, in dem nichtflüchtigen Speicher 716 und/oder auf einem herausnehmbaren greifbaren computerlesbaren Speichermedium, wie einer CD oder DVD, gespeichert werden.
  • Aus dem Vorstehenden wird man zu schätzen wissen, dass die oben offenbarten Verfahren, Geräte und Herstellungsgegenstände ein Zählen von N-Grammen, die in Daten (z. B. einem Textkorpus) vorkommen, effizienter als ältere bekannte Ansätze ermöglichen können. Durch Aufteilen der Verarbeitung von N-Grammen, die mit häufig vorkommenden „Hot-Words“ beginnen, beispielsweise ist die Errechnung gleichmäßiger unter Knoten innerhalb eines Clusters verteilt, was zu einer effizienteren Verwendung von Verarbeitungsressourcen führt. Da Ressourcen effizienter genutzt werden, kann darüber hinaus das Zählen von N-Grammen häufiger durchgeführt werden. Häufigeres Verarbeiten ermöglicht aktuellere Statistiken in Bezug auf die verarbeiteten Korpora.
  • Beispiel 1 beinhaltet ein Gerät zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen, wobei das Gerät einen Hot-Word-Detektor zum Identifizieren eines Tokens, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt, einen Suffix-Identifikator zum Identifizieren von ersten Suffixen und zweiten Suffixen innerhalb des Korpus, wobei der Suffix-Identifikator erkennen soll, dass die ersten Suffixe mit dem Token beginnen und dass die zweiten Suffixe nicht mit dem Token beginnen, und einen N-Gramm-Zählwert-Controller zum Steuern eines Clusters von Knoten, um einen ersten Zählungsalgorithmus durchzuführen, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren, umfasst, wobei der N-Gramm-Zählwert-Controller den Cluster von Knoten steuern soll, um einen zweiten Zählungsalgorithmus durchzuführen, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, wobei der zweite Zählungsalgorithmus sich von dem ersten Zählungsalgorithmus unterscheidet.
  • Beispiel 2 beinhaltet das Gerät von Beispiel 1, wobei der Cluster von Knoten den zweiten Zählungsalgorithmus durch Verteilen der zweiten Suffixe unter einer ersten Anzahl von Knoten in dem Cluster durchführt, wobei die erste Anzahl von Knoten größer als eine zweite Anzahl von Suffixen ist, die in den zweiten Suffixen vorkommen.
  • Beispiel 3 beinhaltet das Gerät nach einem der Beispiele 1-2, wobei das Token, mit dem das Suffix häufig beginnt, auf der Basis einer erkannten Sprache des Korpus identifiziert wird.
  • Beispiel 4 beinhaltet das Gerät nach einem der Beispiele 1-3, wobei der erste Zählungsalgorithmus eine Suffix-Sigma-Zählung ist.
  • Beispiel 5 beinhaltet das Gerät nach einem der Beispiele 1-4, wobei der erste Zählungsalgorithmus unter Verwendung eines MapReduce-Jobs durchgeführt wird, der innerhalb einer geclusterten Rechenumgebung ausgeführt wird.
  • Beispiel 6 beinhaltet das Gerät nach einem der Beispiele 1-5, wobei jeder Knoten des Clusters, um den zweiten Zählungsalgorithmus durchzuführen, einen Suffix-Sortierer zum Sortieren der zweiten Suffixe in einer umgekehrten lexikographischen Reihenfolge, einen Zähler zum Kondensieren der zweiten Suffixe zu einer Liste von Suffixen und einer Anzahl von Vorkommen jedes Suffixes in den zweiten Suffixen, einen N-Gramm-Konstruktor zum Konstruieren von N-Grammen, die mit einem Präfix von jedem Suffix in der Liste von Suffixen beginnen, beinhaltet, wobei der Zähler einen Zählwert der konstruierten N-Gramme aggregiert, um den zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren.
  • Beispiel 7 beinhaltet das Gerät von Beispiel 6, wobei das Aggregieren des Zählwerts der konstruierten N-Gramme auf der Anzahl von Vorkommen der Suffixe basiert, die zum Konstruieren des entsprechenden N-Gramms verwendet werden.
  • Beispiel 8 beinhaltet das Gerät nach einem der Beispiele 1-7, wobei der N-Gramm-Zählwert-Controller weiterhin den ersten Zählwert mit dem zweiten Zählwert kombinieren soll, um einen Gesamtzählwert von N-Grammen, die in dem Korpus vorkommen, zu bilden.
  • Beispiel 9 beinhaltet ein Verfahren zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen, wobei das Verfahren ein Identifizieren eines Tokens, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt, ein Identifizieren von ersten Suffixen und zweiten Suffixen innerhalb des Korpus, ein Erkennen, dass die ersten Suffixe mit dem Token beginnen und dass die zweiten Suffixe nicht mit dem Token beginnen, ein Durchführen eines ersten Zählungsalgorithmus, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren, und ein Durchführen eines zweiten Zählungsalgorithmus, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, umfasst, wobei der zweite Zählungsalgorithmus sich von dem ersten Zählungsalgorithmus unterscheidet.
  • Beispiel 10 beinhaltet das Verfahren von Beispiel 9, wobei das Durchführen des zweiten Zählungsalgorithmus ein Verteilen der zweiten Suffixe unter einer ersten Anzahl von Knoten in einem Cluster beinhaltet, wobei die erste Anzahl von Knoten größer als eine zweite Anzahl von Suffixen ist, die in den zweiten Suffixen vorkommen.
  • Beispiel 11 beinhaltet das Verfahren nach einem der Beispiele 9-10, wobei das Token, mit dem das Suffix häufig beginnt, auf der Basis einer erkannten Sprache des Korpus identifiziert wird.
  • Beispiel 12 beinhaltet das Verfahren nach einem der Beispiele 9-11, wobei der erste Zählungsalgorithmus eine Suffix-Sigma-Zählung ist.
  • Beispiel 13 beinhaltet das Verfahren nach einem der Beispiele 9-12, wobei der erste Zählungsalgorithmus unter Verwendung eines MapReduce-Jobs durchgeführt wird, der innerhalb einer geclusterten Rechenumgebung ausgeführt wird.
  • Beispiel 14 beinhaltet das Verfahren nach einem der Beispiele 9-13, wobei der zweite Zählungsalgorithmus durch Sortieren der zweiten Suffixe in einer umgekehrten lexikographischen Reihenfolge, Kondensieren der zweiten Suffixe zu einer Liste von Suffixen und einer Anzahl von Vorkommen jedes Suffixes in den zweiten Suffixen, Konstruieren von N-Grammen, die mit einem Präfix von jedem Suffix in der Liste von Suffixen beginnen, und Aggregieren eines Zählwerts der konstruierten N-Gramme, um den zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, durchgeführt wird.
  • Beispiel 15 beinhaltet das Verfahren von Beispiel 14, wobei das Aggregieren des Zählwerts der konstruierten N-Gramme auf der Anzahl von Vorkommen der Suffixe basiert, die zum Konstruieren des entsprechenden N-Gramms verwendet werden.
  • Beispiel 16 beinhaltet das Verfahren nach einem der Beispiele 9-15, das weiterhin ein Kombinieren des ersten Zählwerts mit dem zweiten Zählwert beinhaltet, um einen Gesamtzählwert von N-Grammen, die in dem Korpus vorkommen, zu bilden.
  • Beispiel 17 beinhaltet ein nichtflüchtiges maschinenlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass ein Prozessor zumindest ein Token, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt, identifiziert, erste Suffixe und zweite Suffixe innerhalb des Korpus identifiziert, erkennt, dass die ersten Suffixe mit dem Token beginnen und dass die zweiten Suffixe nicht mit dem Token beginnen, einen ersten Zählungsalgorithmus durchführt, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren, und einen zweiten Zählungsalgorithmus durchführt, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, wobei der zweite Zählungsalgorithmus sich von dem ersten Zählungsalgorithmus unterscheidet.
  • Beispiel 18 beinhaltet das maschinenlesbare Medium von Beispiel 17, wobei das Durchführen des zweiten Zählungsalgorithmus ein Verteilen der zweiten Suffixe unter einer ersten Anzahl von Knoten in einem Cluster beinhaltet, wobei die erste Anzahl von Knoten größer als eine zweite Anzahl von Suffixen ist, die in den zweiten Suffixen vorkommen.
  • Beispiel 19 beinhaltet das maschinenlesbare Medium nach einem der Beispiele 17-18, wobei das Token, mit dem das Suffix häufig beginnt, auf der Basis einer erkannten Sprache des Korpus identifiziert wird.
  • Beispiel 20 beinhaltet das maschinenlesbare Medium nach einem der Beispiele 17-19, wobei der erste Zählungsalgorithmus eine Suffix-Sigma-Zählung ist.
  • Beispiel 21 beinhaltet das maschinenlesbare Medium nach einem der Beispiele 17-20, wobei der erste Zählungsalgorithmus unter Verwendung eines MapReduce-Jobs durchgeführt wird, der innerhalb einer geclusterten Rechenumgebung ausgeführt wird.
  • Beispiel 22 beinhaltet das maschinenlesbare Medium nach einem der Beispiele 17-21, wobei die Anweisungen bei Ausführung weiterhin bewirken, dass die Maschine den zweiten Zählungsalgorithmus durch Sortieren der zweiten Suffixe in einer umgekehrten lexikographischen Reihenfolge, Kondensieren der zweiten Suffixe zu einer Liste von Suffixen und einer Anzahl von Vorkommen jedes Suffixes in den zweiten Suffixen, Konstruieren von N-Grammen, die mit einem Präfix von jedem Suffix in der Liste von Suffixen beginnen, und Aggregieren eines Zählwerts der konstruierten N-Gramme, um den zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, durchführt.
  • Beispiel 23 beinhaltet das maschinenlesbare Medium von Beispiel 22, wobei das Aggregieren des Zählwerts der konstruierten N-Gramme auf der Anzahl von Vorkommen der Suffixe basiert, die zum Konstruieren des entsprechenden N-Gramms verwendet werden.
  • Beispiel 24 beinhaltet das maschinenlesbare Medium nach einem der Beispiele 17-23, wobei die Anweisungen bei Ausführung weiterhin bewirken, dass die Maschine den ersten Zählwert mit dem zweiten Zählwert kombiniert, um einen Gesamtzählwert von N-Grammen, die in dem Korpus vorkommen, zu bilden.
  • Beispiel 25 beinhaltet ein Gerät zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen, wobei das Gerät Mittel zum Identifizieren eines Tokens, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt, Mittel zum Identifizieren von ersten Suffixen und zweiten Suffixen innerhalb des Korpus, Mittel zum Erkennen, dass die ersten Suffixe mit dem Token beginnen und dass die zweiten Suffixe nicht mit dem Token beginnen, Mittel zum Durchführen eines ersten Zählungsalgorithmus, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren, und Mittel zum Durchführen eines zweiten Zählungsalgorithmus, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, umfasst, wobei der zweite Zählungsalgorithmus sich von dem ersten Zählungsalgorithmus unterscheidet.
  • Beispiel 26 beinhaltet das Gerät von Beispiel 25, wobei das Mittel zum Durchführen des zweiten Zählungsalgorithmus Mittel zum Verteilen der zweiten Suffixe unter einer ersten Anzahl von Knoten in einem Cluster beinhaltet, wobei die erste Anzahl von Knoten größer als eine zweite Anzahl von Suffixen ist, die in den zweiten Suffixen vorkommen.
  • Beispiel 27 beinhaltet das Gerät nach einem der Beispiele 25-26, wobei das Token, mit dem das Suffix häufig beginnt, auf der Basis einer erkannten Sprache des Korpus identifiziert wird.
  • Beispiel 28 beinhaltet das Gerät nach einem der Beispiele 25-27, wobei der erste Zählungsalgorithmus eine Suffix-Sigma-Zählung ist.
  • Beispiel 29 beinhaltet das Gerät nach einem der Beispiele 25-28, wobei der erste Zählungsalgorithmus unter Verwendung eines MapReduce-Jobs durchgeführt wird, der innerhalb einer geclusterten Rechenumgebung ausgeführt wird.
  • Beispiel 30 beinhaltet das Gerät nach einem der Beispiele 25-29, wobei die Mittel zum Durchführen des zweiten Zählungsalgorithmus Mittel zum Sortieren der zweiten Suffixe in einer umgekehrten lexikographischen Reihenfolge, Mittel zum Kondensieren der zweiten Suffixe zu einer Liste von Suffixen und einer Anzahl von Vorkommen jedes Suffixes in den zweiten Suffixen, Mittel zum Konstruieren von N-Grammen, die mit einem Präfix von jedem Suffix in der Liste von Suffixen beginnen, und Mittel zum Aggregieren eines Zählwerts der konstruierten N-Gramme, um den zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, beinhalten.
  • Beispiel 31 beinhaltet das Gerät von Beispiel 30, wobei das Aggregieren des Zählwerts der konstruierten N-Gramme auf der Anzahl von Vorkommen der Suffixe basiert, die zum Konstruieren des entsprechenden N-Gramms verwendet werden.
  • Beispiel 32 beinhaltet das Gerät nach einem der Beispiele 25-31, das weiterhin Mittel zum Kombinieren des ersten Zählwerts mit dem zweiten Zählwert beinhaltet, um einen Gesamtzählwert von N-Grammen, die in dem Korpus vorkommen, zu bilden.
  • Obwohl bestimmte beispielhafte Verfahren, Vorrichtungen und Herstellungsartikel hierin offenbart wurden, ist der Abdeckungsumfang dieses Patents nicht darauf beschränkt. Im Gegensatz dazu deckt dieses Patent alle Verfahren, Vorrichtungen und Herstellungsgegenstände ab, die angemessen in den Schutzumfang der Ansprüche dieses Patents fallen.

Claims (25)

  1. Gerät zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen, wobei das Gerät Folgendes umfasst: einen Hot-Word-Detektor, um ein Token zu identifizieren, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt; einen Suffix-Identifikator, um erste Suffixe und zweite Suffixe innerhalb des Korpus zu identifizieren, wobei der Suffix-Identifikator erkennen soll, dass die ersten Suffixe mit dem Token beginnen und dass die zweiten Suffixe nicht mit dem Token beginnen; und einen N-Gramm-Zählwert-Controller, um einen Cluster von Knoten dahingehend zu steuern, einen ersten Zählungsalgorithmus durchzuführen, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren, wobei der N-Gramm-Zählwert-Controller den Cluster von Knoten dahingehend steuern soll, einen zweiten Zählungsalgorithmus durchzuführen, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, wobei der zweite Zählungsalgorithmus sich von dem ersten Zählungsalgorithmus unterscheidet.
  2. Gerät nach Anspruch 1, wobei der Cluster von Knoten den zweiten Zählungsalgorithmus durch Verteilen der zweiten Suffixe unter einer ersten Anzahl von Knoten in dem Cluster durchführt, wobei die erste Anzahl von Knoten größer als eine zweite Anzahl von Suffixen ist, die in den zweiten Suffixen vorkommen.
  3. Gerät nach einem der Ansprüche 1-2, wobei das Token, mit dem das Suffix häufig beginnt, auf der Basis einer erkannten Sprache des Korpus identifiziert wird.
  4. Gerät nach einem der Ansprüche 1-3, wobei der erste Zählungsalgorithmus eine Suffix-Sigma-Zählung ist.
  5. Gerät nach einem der Ansprüche 1-4, wobei der erste Zählungsalgorithmus unter Verwendung eines MapReduce-Jobs durchgeführt wird, der innerhalb einer geclusterten Rechenumgebung ausgeführt wird.
  6. Gerät nach einem der Ansprüche 1-5, wobei jeder Knoten des Clusters zum Durchführen des zweiten Zählungsalgorithmus Folgendes beinhaltet: einen Suffix-Sortierer, um die zweiten Suffixe in einer umgekehrten lexikographischen Reihenfolge zu sortieren; einen Zähler, um die zweiten Suffixe zu einer Liste von Suffixen und einer Anzahl von Vorkommen jedes Suffixes in den zweiten Suffixen zu kondensieren; und einen N-Gramm-Konstruktor, um N-Gramme zu konstruieren, die mit einem Präfix von jedem Suffix in der Liste von Suffixen beginnen, wobei der Zähler einen Zählwert der konstruierten N-Gramme aggregieren soll, um den zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren.
  7. Gerät nach Anspruch 6, wobei das Aggregieren des Zählwerts der konstruierten N-Gramme auf der Anzahl von Vorkommen der Suffixe basiert, die zum Konstruieren des entsprechenden N-Gramms verwendet werden.
  8. Gerät nach einem der Ansprüche 1-7, wobei der N-Gramm-Zählwert-Controller weiterhin den ersten Zählwert mit dem zweiten Zählwert kombinieren soll, um einen Gesamtzählwert von N-Grammen, die in dem Korpus vorkommen, zu bilden.
  9. Verfahren zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen, wobei das Verfahren Folgendes umfasst: Identifizieren eines Tokens, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt; Identifizieren von ersten Suffixen und zweiten Suffixen innerhalb des Korpus; Erkennen, dass die ersten Suffixe mit dem Token beginnen und dass die zweiten Suffixe nicht mit dem Token beginnen; Durchführen eines ersten Zählungsalgorithmus, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren; und Durchführen eines zweiten Zählungsalgorithmus, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, wobei der zweite Zählungsalgorithmus sich von dem ersten Zählungsalgorithmus unterscheidet.
  10. Verfahren nach Anspruch 9, wobei das Durchführen des zweiten Zählungsalgorithmus ein Verteilen der zweiten Suffixe unter einer ersten Anzahl von Knoten in einem Cluster beinhaltet, wobei die erste Anzahl von Knoten größer als eine zweite Anzahl von Suffixen ist, die in den zweiten Suffixen vorkommen.
  11. Verfahren nach einem der Ansprüche 9-10, wobei das Token, mit dem das Suffix häufig beginnt, auf der Basis einer erkannten Sprache des Korpus identifiziert wird.
  12. Verfahren nach einem der Ansprüche 9-11, wobei der erste Zählungsalgorithmus eine Suffix-Sigma-Zählung ist.
  13. Verfahren nach einem der Ansprüche 9-12, wobei der erste Zählungsalgorithmus unter Verwendung eines MapReduce-Jobs durchgeführt wird, der innerhalb einer geclusterten Rechenumgebung ausgeführt wird.
  14. Verfahren nach einem der Ansprüche 9-13, wobei der zweite Zählungsalgorithmus durch Folgendes durchgeführt wird: Sortieren der zweiten Suffixe in einer umgekehrten lexikographischen Reihenfolge; Kondensieren der zweiten Suffixe zu einer Liste von Suffixen und einer Anzahl von Vorkommen jedes Suffixes in den zweiten Suffixen; Konstruieren von N-Grammen, die mit einem Präfix von jedem Suffix in der Liste von Suffixen beginnen; und Aggregieren eines Zählwerts der konstruierten N-Gramme, um den zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren.
  15. Verfahren nach Anspruch 14, wobei das Aggregieren des Zählwerts der konstruierten N-Gramme auf der Anzahl von Vorkommen der Suffixe basiert, die zum Konstruieren des entsprechenden N-Gramms verwendet werden.
  16. Verfahren nach einem der Ansprüche 9-15, das weiterhin ein Kombinieren des ersten Zählwerts mit dem zweiten Zählwert beinhaltet, um einen Gesamtzählwert von N-Grammen, die in dem Korpus vorkommen, zu bilden.
  17. Nichtflüchtiges maschinenlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass ein Prozessor zumindest Folgendes durchführt: Identifizieren eines Tokens, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt; Identifizieren von ersten Suffixen und zweiten Suffixen innerhalb des Korpus; Erkennen, dass die ersten Suffixe mit dem Token beginnen und dass die zweiten Suffixe nicht mit dem Token beginnen; Durchführen eines ersten Zählungsalgorithmus, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren; und Durchführen eines zweiten Zählungsalgorithmus, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, wobei der zweite Zählungsalgorithmus sich von dem ersten Zählungsalgorithmus unterscheidet.
  18. Maschinenlesbares Medium nach Anspruch 17, wobei das Durchführen des zweiten Zählungsalgorithmus ein Verteilen der zweiten Suffixe unter einer ersten Anzahl von Knoten in einem Cluster beinhaltet, wobei die erste Anzahl von Knoten größer als eine zweite Anzahl von Suffixen ist, die in den zweiten Suffixen vorkommen.
  19. Maschinenlesbares Medium nach einem der Ansprüche 17-18, wobei das Token, mit dem das Suffix häufig beginnt, auf der Basis einer erkannten Sprache des Korpus identifiziert wird.
  20. Maschinenlesbares Medium nach einem der Ansprüche 17-19, wobei der erste Zählungsalgorithmus eine Suffix-Sigma-Zählung ist.
  21. Maschinenlesbares Medium nach einem der Ansprüche 17-20, wobei der erste Zählungsalgorithmus unter Verwendung eines MapReduce-Jobs durchgeführt wird, der innerhalb einer geclusterten Rechenumgebung ausgeführt wird.
  22. Maschinenlesbares Medium nach einem der Ansprüche 17-21, wobei die Anweisungen bei Ausführung weiterhin bewirken, dass die Maschine den zweiten Zählungsalgorithmus durch Folgendes durchführt: Sortieren der zweiten Suffixe in einer umgekehrten lexikographischen Reihenfolge; Kondensieren der zweiten Suffixe zu einer Liste von Suffixen und einer Anzahl von Vorkommen jedes Suffixes in den zweiten Suffixen; Konstruieren von N-Grammen, die mit einem Präfix von jedem Suffix in der Liste von Suffixen beginnen; und Aggregieren eines Zählwerts der konstruierten N-Gramme, um den zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren.
  23. Maschinenlesbares Medium nach Anspruch 22, wobei das Aggregieren des Zählwerts der konstruierten N-Gramme auf der Anzahl von Vorkommen der Suffixe basiert, die zum Konstruieren des entsprechenden N-Gramms verwendet werden.
  24. Maschinenlesbares Medium nach einem der Ansprüche 17-23, wobei die Anweisungen bei Ausführung weiterhin bewirken, dass die Maschine den ersten Zählwert mit dem zweiten Zählwert kombiniert, um einen Gesamtzählwert von N-Grammen, die in dem Korpus vorkommen, zu bilden.
  25. Gerät zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen, wobei das Gerät Folgendes umfasst: Mittel zum Identifizieren eines Tokens, mit dem ein Suffix, das in dem Korpus gefunden wird, häufig beginnt; Mittel zum Identifizieren von ersten Suffixen und zweiten Suffixen innerhalb des Korpus; Mittel zum Erkennen, dass die ersten Suffixe mit dem Token beginnen und dass die zweiten Suffixe nicht mit dem Token beginnen; Mittel zum Durchführen eines ersten Zählungsalgorithmus, um einen ersten Zählwert von N-Grammen, die in den ersten Suffixen vorkommen, zu identifizieren; und Mittel zum Durchführen eines zweiten Zählungsalgorithmus, um einen zweiten Zählwert von N-Grammen, die in den zweiten Suffixen vorkommen, zu identifizieren, wobei der zweite Zählungsalgorithmus sich von dem ersten Zählungsalgorithmus unterscheidet.
DE112017006445.7T 2016-12-21 2017-11-17 Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen Pending DE112017006445T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/387,059 2016-12-21
US15/387,059 US10120860B2 (en) 2016-12-21 2016-12-21 Methods and apparatus to identify a count of n-grams appearing in a corpus
PCT/US2017/062343 WO2018118302A1 (en) 2016-12-21 2017-11-17 Methods and apparatus to identify a count of n-grams appearing in a corpus

Publications (1)

Publication Number Publication Date
DE112017006445T5 true DE112017006445T5 (de) 2019-10-10

Family

ID=62562589

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017006445.7T Pending DE112017006445T5 (de) 2016-12-21 2017-11-17 Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen

Country Status (4)

Country Link
US (1) US10120860B2 (de)
CN (1) CN109983459B (de)
DE (1) DE112017006445T5 (de)
WO (1) WO2018118302A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10915543B2 (en) 2014-11-03 2021-02-09 SavantX, Inc. Systems and methods for enterprise data search and analysis
US10360229B2 (en) 2014-11-03 2019-07-23 SavantX, Inc. Systems and methods for enterprise data search and analysis
US11328128B2 (en) 2017-02-28 2022-05-10 SavantX, Inc. System and method for analysis and navigation of data
EP3590053A4 (de) * 2017-02-28 2020-11-25 SavantX, Inc. System und verfahren zur analyse und navigation von daten
US20220108083A1 (en) * 2020-10-07 2022-04-07 Andrzej Zydron Inter-Language Vector Space: Effective assessment of cross-language semantic similarity of words using word-embeddings, transformation matrices and disk based indexes.

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752051A (en) * 1994-07-19 1998-05-12 The United States Of America As Represented By The Secretary Of Nsa Language-independent method of generating index terms
US6157905A (en) * 1997-12-11 2000-12-05 Microsoft Corporation Identifying language and character set of data representing text
US7020587B1 (en) * 2000-06-30 2006-03-28 Microsoft Corporation Method and apparatus for generating and managing a language model data structure
US7680649B2 (en) * 2002-06-17 2010-03-16 International Business Machines Corporation System, method, program product, and networking use for recognizing words and their parts of speech in one or more natural languages
US7269548B2 (en) * 2002-07-03 2007-09-11 Research In Motion Ltd System and method of creating and using compact linguistic data
WO2005020091A1 (en) * 2003-08-21 2005-03-03 Idilia Inc. System and method for processing text utilizing a suite of disambiguation techniques
US7461056B2 (en) * 2005-02-09 2008-12-02 Microsoft Corporation Text mining apparatus and associated methods
US7925498B1 (en) * 2006-12-29 2011-04-12 Google Inc. Identifying a synonym with N-gram agreement for a query phrase
US7877258B1 (en) * 2007-03-29 2011-01-25 Google Inc. Representing n-gram language models for compact storage and fast retrieval
US8510097B2 (en) * 2008-12-18 2013-08-13 Palo Alto Research Center Incorporated Region-matching transducers for text-characterization
US8326602B2 (en) * 2009-06-05 2012-12-04 Google Inc. Detecting writing systems and languages
US8468011B1 (en) * 2009-06-05 2013-06-18 Google Inc. Detecting writing systems and languages
US20130103695A1 (en) * 2011-10-21 2013-04-25 Microsoft Corporation Machine translation detection in web-scraped parallel corpora
US9239827B2 (en) * 2012-06-19 2016-01-19 Microsoft Technology Licensing, Llc Identifying collocations in a corpus of text in a distributed computing environment
US9886432B2 (en) * 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US9436760B1 (en) * 2016-02-05 2016-09-06 Quid, Inc. Measuring accuracy of semantic graphs with exogenous datasets

Also Published As

Publication number Publication date
CN109983459A (zh) 2019-07-05
WO2018118302A1 (en) 2018-06-28
CN109983459B (zh) 2023-11-28
US10120860B2 (en) 2018-11-06
US20180173693A1 (en) 2018-06-21

Similar Documents

Publication Publication Date Title
DE112017006445T5 (de) Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE69829074T2 (de) Identifizierung der sprache und des zeichensatzes aus text-repräsentierenden daten
DE112011102183B4 (de) Beschleuniger für die Migration virtueller Maschinen
DE202015009874U1 (de) Implementierung semistrukturierter Daten als ein Datenbankelement erster Klasse
DE102014204827A1 (de) Auflösen ähnlicher Entitäten aus einer Transaktionsdatenbank
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102014113870A1 (de) Identifizieren und Anzeigen von Beziehungen zwischen Kandidatenantworten
DE202020005722U1 (de) Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE202017107393U1 (de) Vorhersagen eines Suchmaschinen-Einordnungssignalwerts
DE112015002101T5 (de) Systeme und Verfahren für einen verbesserten Datenstrukturspeicher
DE112013001751T5 (de) Hybride Adressumsetzung
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
DE112013001740T5 (de) Textverarbeitungsverfahren zum Aufbauen eines Textmodells
DE112010004246T5 (de) Verfahren und Vorrichtung zum Managen von vielfachen Dokumentversionen in einem großen Dokumentendepotspeicher
DE102016010276A1 (de) Verfahren und systeme zur verbesserung von flash-speicher-leerung
DE102017120486A1 (de) Abfrageneustartfähigkeit
DE112020005789T5 (de) Hierarchische partitionierung von operatoren
DE102013224331A1 (de) System und Verfahren zur Bereitstellung prädiktiver Anfragen
DE112013000981T5 (de) Einheit, Programm und Verfahren zum Analysieren von Textdokumenten
DE112018005620T5 (de) Auftragsverwaltung in einem datenverarbeitungssystem
DE102019103279A1 (de) Techniken zur informationsgraphenkomprimierung
DE112018007428T5 (de) Vorrichtung zur informationsverarbeitung, tuningverfahren undtuningprogramm
DE112011100854T5 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000