DE3991231C2 - Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge - Google Patents

Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge

Info

Publication number
DE3991231C2
DE3991231C2 DE3991231A DE3991231A DE3991231C2 DE 3991231 C2 DE3991231 C2 DE 3991231C2 DE 3991231 A DE3991231 A DE 3991231A DE 3991231 A DE3991231 A DE 3991231A DE 3991231 C2 DE3991231 C2 DE 3991231C2
Authority
DE
Germany
Prior art keywords
vector
text
string
character
keyword
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.)
Expired - Fee Related
Application number
DE3991231A
Other languages
English (en)
Other versions
DE3991231T1 (de
Inventor
Keiji Kojima
Yusuke Mishina
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of DE3991231C2 publication Critical patent/DE3991231C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

Technisches Gebiet
Die vorliegende Erfindung betrifft ein Verfahren und einen Vektorprozessor zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge, d. h. ein Datensuchverfahren und einen Prozessor dazu, die bei der Suche nach einer bestimmten Zeichenfolge oder einem Stichwort in einer großen Menge von Zeichenfolgen in einer Literaturstelle oder dergleichen verwendbar sind.
Stand der Technik
Es ist ein Verfahren zur Stichwortsuche in einer großen Menge von Zeichenfolgen bekannt, bei dem von einem Stichwort ein Zustandsübergangsdiagramm erstellt und jedes Zeichen einer Zeichenfolge eines zu durchsuchenden Textes gegen dieses Zustandsübergangsdiagramm geprüft wird, um die Stichwortsuche auszuführen ("Communications of ACM", 18, 6 (Juni 1975), Seiten 333 bis 340).
Es wird bei diesem Stand der Technik (im folgenden "FSA-Verfahren" genannt) angenommen, daß beispielsweise drei Stichworte gegeben sind, nämlich "HEI RETSU" (ein Ausdruck aus zwei Kanji-Zeichen mit der Bedeutung von "parallel"), "KEI SAN KI" (ein Ausdruck mit drei Kanji-Zeichen mit der Bedeutung von "Computer") und "SEI GYO HOU HOU" (ein Ausdruck mit drei Kanji-Zeichen und der Bedeutung von "Steuerverfahren"). Dazu wird ein Übergangsdiagramm erstellt, wie es in der Fig. 12A gezeigt ist, das in der Form der Zustandsübergangstabelle der Fig. 12B gespeichert wird. Nacheinander wird jedes Zeichen des Textes bei der Durchsuchung gegen diese Übergangstabelle geprüft. In dem Beispiel der Fig. 12A erfolgt, wenn das Zeichen des eingegebenen Textes "HEI" ist, ein Übergang zum Zustand 1; wenn das Zeichen "KEI" ist, erfolgt ein Übergang zum Zustand 3; und wenn das Zeichen "SEI" ist, erfolgt ein Übergang zum Zustand 6. Wenn das Textzeichen im Zustand 1 "RETSU" ist, erfolgt ein Übergang zum Zustand 2. Da der Zustand 2 der endgültige Zustand ist, ist es damit bekannt, daß das Stichwort "HEI RETSU" gefunden wurde. Bezüglich der anderen Stichworte "KEI SAN KI" und "SEI GYO HOU HOU" ist daraus bekannt, daß diese Stichworte gefunden wurden, daß festgestellt wird, ob ein Übergang zum Zustand 5 bzw. 9 erfolgt ist. Auf diese Weise ist das FSA-Verfahren eine effektive Methode zum Suchen nach einer Anzahl von Stichworten. Die tatsächliche Verarbeitung beim Suchen einer Zeichenfolge mittels des FSA-Verfahrens wird durch ein Programm realisiert, wie es in der Fig. 12C gezeigt ist. Das FSA-Verfahren hat jedoch, trotz der oben beschriebenen Vorzüge, den Nachteil der sequentiellen Verarbeitung. Wie in der Fig. 12C gezeigt, wird bei dem FSA-Verfahren nach der Initialisierung (Schritt 1203) jedesmal bei der Anwendung eines Textzeichens (Schritt 1204) geprüft, ob der vorliegende Zustand der Endzustand ist (Schritt 1205), und wenn ja, wird die Position und die Länge des Textes angezeigt, in dem ein Stichwort gefunden wurde (Schritt 1205). Die Zustandsübergangstabelle wird anhand des vorliegenden Zustandes und der Textzeichen geprüft, um dadurch den Zustand zu bestimmen, zu dem der nächste Übergang zu erfolgen hat (Schritte 1207 bis 1211), um den Zustand und die Textposition auf den neuesten Stand zu bringen (Schritt 1211). Für die nächsten Textzeichen wird die entsprechende Verarbeitung wiederholt.
Insbesondere wird der Zustand des Abschlusses der Übergänge nur am Ende (Schritt 1212) der Verarbeitung eines jeden Textzeichens bestimmt, und die Verarbeitung des nächsten Textzeichens kann nicht begonnen werden, bis die Bestimmung des Zustandes des Übergangs-Endpunktes erfolgt ist. Im Ergebnis ist die Verarbeitung im wesentlichen sequentiell. Wenn versucht wird, die Suchgeschwindigkeit mittels paralleler Verarbeitungstechniken wie der Pipeline-Verarbeitung oder mittels eines Vektorprozessors beispielsweise nach DE 34 47 530 A1 zu erhöhen, macht es diese sequentielle Eigenschaft unmöglich, die Suche mittels des FSA-Verfahrens durchzuführen.
Zusammenfassende Darstellung der Erfindung
Entsprechend ist es Aufgabe der vorliegenden Erfindung, ein Verfahren mittels eines Vektorprozessors und einen Vektorprozessor zu schaffen, das bzw. der für eine Suche nach einem Stichwort in einer Textzeichenfolge mit hoher Geschwindigkeit geeignet ist.
Die Lösung dieser Aufgabe ist im Patentanspruch 1 bzw. im Patentanspruch 13 angegeben.
Ein Ausführungsbeispiel der vorliegenden Erfindung stellt ein Suchverfahren dar, bei dem eine Anzahl von Kandidaten-Zeichenfolgen, die wahrscheinlich mit einem vorgegebenen Stichwort übereinstimmen, in den Textzeichenfolgen erfaßt wird, und wobei dann entschieden wird, ob die erfaßten Kandidatenzeichenfolgen eine Zeichenfolge beinhalten, die mit der Stichwortzeichenfolge übereinstimmt. Dabei wird bei dem Vorgang des Erfassens einer Kandidatenzeichenfolge ein Teil, der eine Abfolge von Zeichen aufweist, die mit einer Anzahl von Zeichen übereinstimmen, die in der Stichwortzeichenfolge enthalten sind, als Kandidatenzeichenfolge festgelegt.
Des weiteren umfaßt der Vektorprozessor gemäß einem Ausführungsbeispiel eine Einrichtung zum Festhalten eines Textvektors mit einem Element, das jedes Zeichen einer Textzeichenfolge darstellt, und eines Erscheinungsformvektors mit einem Element, das die Erscheinungsform eines jeden Zeichens der Textzeichenfolge darstellt, wobei jedes Element des Erscheinungsformvektors die Erscheinungsform in einer Anzahl von Stichworten eines entsprechenden Zeichens einschließlich der Erscheinungsform darstellt, ob das entsprechende Zeichen mit einem der in der Anzahl von Stichworten enthaltenen Zeichen zusammenfällt; eine erste Leseeinrichtung zum sequentiellen Auslesen der Elemente des Textvektors; eine zweite Leseeinrichtung zum sequentiellen Auslesen der Elemente des Erscheinungsformvektors, der jeweils den ausgelesenen Elementen entspricht; und eine Einrichtung zur Erfassung eines Abschnittes (Kandidatenzeichenfolge), der eine Abfolge von Zeichen enthält, die mit einem Zeichen übereinstimmen, das in einer Anzahl von Stichwortfolgen in dem Textvektor enthalten ist, in Reaktion auf das Element des ausgelesenen Erscheinungsformvektors.
Kurze Beschreibung der Zeichnungen
Die Fig. 1 zeigt ein Diagramm zur Darstellung einer Konfiguration einer Ausführungsform einer Zeichenfolge-Suchanordnung gemäß der vorliegenden Erfindung, die
Fig. 2 ein Diagramm zur Darstellung eines Beispiels von Vektordaten, die bei der Anordnung der Fig. 1 verwendet werden, die
Fig. 3 ein Flußdiagramm für die mittels der Anordnung der Fig. 1 ausgeführte Zeichenfolgesuche, die
Fig. 4 ein detailliertes Flußdiagramm für einen ersten Fokussiervorgang 31 in der Fig. 3, die
Fig. 5 ein Diagramm zur Erläuterung der bei der Ausführungsform der Fig. 1 verwendeten letzten Verarbeitung, die
Fig. 6 ein Diagramm, das ein Beispiel für die Attribute eines Stichworts bei der Ausführungsform der Fig. 1 zeigt, die
Fig. 7 ein Diagramm für die Form einer Textsuchinstruktion, die bei der Ausführungsform der Fig. 1 verwendet wird, die
Fig. 8 ist eine Wahrheitstabelle für den Betrieb von Zähler-Steuer-Logikschaltungen 211 bis 214 und einer Speicher-Steuer-Logikschaltung 215 bei der Ausführungsform der Fig. 1, die
Fig. 9 ist ein Diagramm für ein Beispiel der Historien- Verarbeitung bei der Ausführungsform der Fig. 1, die
Fig. 10 ein Zeitdiagramm für die Pipeline-Verarbeitung bei der Ausführungsform der Fig. 1, die
Fig. 11 ein Flußdiagramm für eine Ausführungsform des zweiten Reduktionsvorganges 32 bei dem erfindungsgemäßen Zeichensuchverfahren, die
Fig. 12 ein Diagramm zur Erläuterung des herkömmlichen FSA-Verfahrens, die
Fig. 13 ein Flußdiagramm für den ersten Reduktionsvorgang bei einer zweiten Ausführungsform, die zur Durchführung auf einem Allzweck- Vektorprozessor gemäß der vorliegenden Erfindung geeignet ist, die
Fig. 14 ein Diagramm, das eine Änderung in den Vektordaten bei der Verarbeitung gemäß Fig. 13 darstellt, die
Fig. 15 ein Flußdiagramm für den zweiten Reduktionsvorgang bei der Ausführung der vektoriellen Verarbeitung des FSA-Verfahrens, die
Fig. 16 ein Diagramm zur Darstellung des Zustandübergangsvektors für ein Zustandübergangsdiagramm und einen Akzeptanzvektor, die bei der Verarbeitung der Fig. 15 verwendet werden, die
Fig. 17 ein Diagramm, das Vektordaten für die Verarbeitung gemäß Fig. 15 und eine Änderung davon zeigt, die
Fig. 18 ein Diagramm, das eine Datenkonfiguration darstellt, die zur Verbesserung des in der Fig. 13 gezeigten Verfahrens zur Zeichenfolgesuche verwendet wird, die
Fig. 19 ein Diagramm, das das Ergebnis einer tatsächlichen Messung der Reduktionsrate beim ersten Reduktionsvorgang zeigt, die
Fig. 20 ein Diagramm für das Ergebnis einer tatsächlichen Messung bei einer zweiten Ausführungsform des erfindungsgemäßen Zeichensuchverfahrens, und die
Fig. 21 ein Diagramm, das das Ergebnis einer tatsächlichen Messung der Reduktionsrate bei dem ersten Reduktionsvorgang der Fig. 13 darstellt.
Bevorzugte Ausführungsformen der Erfindung
Hierbei wird bevorzugt ein erster Schritt des Erfassens von Informationen an einer Kandidatenzeichenfolgegruppe, die eine Stichwortzeichenfolge und eine Zeichenfolge einschließt, die dazu analog ist, aus Textzeichenfolgen, und ein zweiter Schritt des Auswählens von Informationen, die der Stichwortzeichenfolge entsprechen, aus den Informationen über die Kandidatenzeichenfolgegruppe ausgeführt, die im ersten Schritt erhalten wurde. Durch Ausführen des ersten Schrittes in einer pipelineartigen Verarbeitung wird dabei insbesondere eine große Menge von Textzeichenfolgen mit hoher Geschwindigkeit reduziert, so daß die Informationen über die Kandidatenzeichenfolgegruppe mit hoher Geschwindigkeit erzeugt werden, wodurch insgesamt eine Hochgeschwindigkeitsverarbeitung bei der Zeichensuche erhalten wird.
In einem ersten Reduktionsvorgang wird dabei in einer ersten Stufe nach einer Kandidatenzeichenfolge gesucht, die sehr wahrscheinlich eine Stichwortzeichenfolge enthält. In einem zweiten Reduktionsvorgang wird in einer zweiten Stufe dann nach der Stichwortfolge in der obigen Kandidatenzeichenfolgegruppe gesucht.
Der zweite Reduktionsvorgang kann mittels einer herkömmlichen Methode für die Zeichenfolgesuche oder mittels der bekannten FSA-Methode ausgeführt werden, die vektoriell als eine Ausführungsform der vorliegenden Erfindung erläutert wird.
Der erste Reduktionsvorgang dient zur Suche nach einer Kandidatenzeichenfolge, jedoch nicht nach einer Stichwortzeichenfolge selbst. Dieser Vorgang kann mittels einer Pipeline- oder Parallel-Verarbeitung in einem Vektorcomputer oder einer besonderen Vorrichtung zur Pipeline-Verarbeitung ausgeführt werden, wie es in den folgenden Ausführungsformen gezeigt ist, womit eine sehr schnelle Verarbeitung erzielt werden kann.
Der oben erwähnte erste Schritt dient, als Vorverarbeitung, zur Erzeugung einer Erscheinungsforminformation über den Zustand, der durch alle Arten von Zeichen, die in den zu durchsuchenden Textzeichenfolgen erscheinen, in einer Stichwortzeichenfolge angenommen wird.
Nach dieser Vorverarbeitung wird die Information über jedes Zeichen sequentiell aus den Informationen über die Textzeichenfolge gewonnen, gegen die Erscheinungsforminformation geprüft und in eine individuelle Erscheinungsforminformation umgewandelt.
Gleichzeitig wird die Information über die Länge einer Kandidatenzeichenfolge, die der Suche unterliegt, in einem Zähler festgehalten.
Dann wird, unter Verwendung der oben erwähnten individuellen Erscheinungsforminformation und der Information über die Länge bestimmt, ob jedes der sequentiell gewonnenen Zeichen zu der Kandidatenzeichenfolge hinzuzufügen ist, woraufhin die Information über die Länge im Zähler auf der Basis dieser Bestimmung erneuert wird.
Wenn bei diesem Vorgang festgestellt wird, daß die der Suche unterliegende Zeicheninformation aus der individuellen Erscheinungsforminformation diejenige ist, die einer der Kandidatenzeichenfolgen entspricht, werden die Information über die Länge und die Information über die Position davon in den Textzeichenfolgen als Information über die Kandidatenzeichenfolgen erzeugt.
Die Erscheinungsforminformation beinhaltet im einfachsten Fall eine 1-Bit-Information darüber, ob Zeichen in einem oder einer Anzahl von Stichwortzeichenfolgen erscheinen, eine Information über die Position (erste, letzte, dazwischenliegend usw.) in einer Stichwortzeichenfolge, wie es mit Bezug auf die Ausführungsformen noch erläutert wird, und eine Information darüber, ob die Anzahl der Zeichen kleiner ist als im kürzesten Stichwort der Stichwortzeichenfolge.
In einer anderen Ausführungsform der vorliegenden Erfindung zur Ausführung des ersten Schrittes wird die erwähnte Erscheinungsforminformation als Erscheinungsinformationsvektor erzeugt, es wird die jedem Zeichen im Erscheinungsinformationsvektor entsprechende Erscheinungsinformation für jedes Zeichen in der Textzeichenfolge ausgelesen, es wird ein Erfassungszustandsvektor, der ein Element ergibt, in einer hauptsächlich einem jeden Zeichen in der Textzeichenfolge entsprechenden Form erzeugt, und es wird mittels der im Erfassungszustandsvektor gespeicherten Erscheinungsinformation festgestellt, ob jedes entsprechende Zeichen in der Textzeichenfolge eine Kandidatenzeichenfolge ergibt.
Die einer weiteren Ausführungsform entsprechende, erwähnte Methode wird mittels eines Vektorcomputers realisiert, der die vier fundamentalen arithmetischen Funktionen beinhaltet. Bei der Ausführung des ersten Reduktionsvorganges durch den Vektorcomputer wird die Textzeichenfolgeinformation in einen Erfassungsinformationsvektor umgewandelt, der ein Element in der Form einer Information darüber enthält, ob jedes Zeichen eines ist, das in einer Stichwortzeichenfolge erscheint, und aus der Anordnung dieser Erfassungsinformationsvektorelemente wird vektoriell darauf geschlossen, ob daraus eine Kandidatenzeichenfolge aufgebaut wird. Der Erfassungsinformationsvektor kann vorab unabhängig von dieser Entscheidung erzeugt werden, und die vektorielle Verarbeitung der Entscheidung kann parallel sehr einfach durch die Berechnung eines Fehlers zwischen Vektoren und die Verschiebung der Vektorelemente auf der Basis einer indirekten Adresse ausgeführt werden, wodurch eine Hochgeschwindigkeitsverarbeitung möglich ist.
Obwohl im oben erwähnten zweiten Schritt eine herkömmliche bekannte Methode der Zeichenfolgesuche angewendet wird, kann alternativ das vektoriell ausgeführte, herkömmliche FSA-Verfahren zur Lösung des gleichen Problems verwendet werden. Insbesondere wird die Kandidatenzeichenfolgegruppe, die im ersten Schritt erhalten wird, als eine Anzahl von Teilzeichenfolgen betrachtet, und es wird eine Suchpositionsinformation erstellt, die in den Teilzeichenfolgen ein Zeichen angibt, das ein Suchgegenstand ist. Auf der Basis der Suchpositionsinformation werden dann Zeichen aus den Teilzeichenfolgen ausgelesen, die so ausgelesenen Zeichen werden neu als Eingangszeichenvektor angeordnet und es wird ein Zustandsvektor erhalten, der einen Zustand darstellt, der ein Stichwortzeichen in der Stichwortzeichenfolge anzeigt, bis zu dem jede Teilzeichenfolge damit zu einem gegebenen Zeitpunkt während des Suchvorganges übereinstimmt. Für jede der Teilzeichenfolgen werden der Eingangszeichenvektor und der Zustandsvektor dazu verwendet, einen Zustandsübergangsvektor für die Stichwortzeichenfolge für den Übergang zu einem neuen Übereinstimmungszustand zu erzeugen. Unter Verwendung des Zustandsübergangsvektors wird dann der Zustandsübergang für jede Teilzeichenfolge auf der Basis des oben erhaltenen Zustandsvektors und des Eingangszeichenvektors bewirkt, und es erfolgt eine Akzeptanzentscheidung, um zu bestimmen, ob für jedes Element des Zustandsvektors eine Stichwortzeichenfolge festgestellt wurde.
Diese Methode der vektoriellen Verarbeitung des FSA-Verfahrens ist nicht nur auf das Ergebnis des oben erwähnten ersten Reduktionsvorganges anwendbar, sondern auch in dem Fall, daß ein Vektor erzeugt wird, der ein Vektorelement aufweist, das aus jeder aus einer Anzahl von Teilzeichenfolgen herausgenommen wurde, die eine vorgegebene Bedingung erfüllt, in die die Eingangstextzeichenfolge aufgeteilt werden kann, so daß die Verarbeitung nach dem FSA-Verfahren auf jedes Element eines solchen Vektors angewendet wird, wodurch mittels des FSA-Verfahrens eine parallele Pipeline-Verarbeitung realisiert wird.
Eine besondere Einrichtung zur Ausführung des oben erwähnten ersten Schrittes beinhaltet eine Speichereinrichtung zum Speichern der erwähnten Erscheinungsforminformation, eine Eingabeeinrichtung zur Eingabe einer jeden Zeicheninformation der der Suche unterliegenden Textzeichenfolge in regelmäßigen Zeitabständen, eine Adresseneinrichtung zum Ändern einer jeden Zeicheninformation in ein Adressensignal, eine Einrichtung zur Erzeugung einer individuellen Erscheinungsforminformation einer Adresse, die durch die Adresseneinrichtung bezeichnet wird, ein Zähler zum Zählen der Länge der der Suche unterliegenden Kandidatenzeichenfolge, und eine Zählersteuereinrichtung, der der Zählerstand und die individuellen Erscheinungsforminformation zugeführt werden, um zu entscheiden, ob das Textzeichen, das der der Erfassung unterliegenden Kandidatenzeichenfolge folgt, zu der Kandidatenzeichenfolge hinzuzufügen und der Zählerstand entsprechend zu erneuern ist.
Für den Fall, daß der erwähnte erste Reduktionsvorgang durch eine besondere Vorrichtung realisiert wird, erfordert die Verarbeitung eines Zeichens die Schritte des Lesens eines Zeichens aus einer Textzeichenfolge, des Änderns des jeweiligen Zeichens in eine Adresse der Speichereinrichtung und des Lesens einer Erscheinungsartinformation aus den gespeicherten Informationen. Die Erscheinungsartinformation zeigt an, ob ein zu verarbeitendes Zeichen in einer Stichwortzeichenfolge erscheint, und wenn es erscheint, die Position davon in der Stichwortfolge. Diese Information wird daher im wesentlichen gewonnen, ohne daß die Beziehung zu anderen Zeichen in Betracht gezogen wird. Im Ergebnis ist ein Vorab-Auslesen möglich, ohne daß der Zählerstand, der den Suchzustand darstellt, in Betracht gezogen wird, so daß eine Abfolge einer Anzahl von Zeichen teilweise duplexartig verarbeitet werden kann, das heißt daß, während der Zählerstand für ein Zeichen erneuert wird, die Erscheinungsartinformation für das nächste Zeichen ausgelesen wird. Für das übernächste Zeichen kann andererseits die Textzeichenfolge in die Adresseninformationen umgewandelt werden. Auf diese Weise wird eine Pipeline-Verarbeitung ausgeführt und damit eine Hochgeschwindigkeitsverarbeitung realisiert.
(Erste Ausführungsform)
Die Fig. 1 ist ein Diagramm, das den Aufbau einer Ausführungsform einer Datenfolgesuchanordnung zur Verwirklichung des erfindungsgemäßen Verfahrens zeigt.
Die folgende Erläuterung behandelt den Fall der Suche nach einer Teilzeichenfolge, die mit einem Stichwort aus einer Zeichenfolge wie einem Text übereinstimmt.
(A) Übersicht
101 bezeichnet eine Hauptspeichereinheit, 117 eine Textsucheinheit, die die vorliegende Erfindung charakterisiert, und 118 eine Zentraleinheit (CPU).
Die CPU 118 ruft von einem in der Hauptspeichereinheit 101 enthaltenen Textsuchprogramm 106 eine Anweisung ab und führt die jeweilige Anweisung aus, wenn sie von skalarer Art ist, während, wenn die Anweisung von vektorieller Art ist, die Textsucheinheit 117 eingeschaltet wird. In der Hauptspeichereinheit 101 sind verschiedene Vektordaten gespeichert.
Die Vektordaten bzw. ein Vektor sind bzw. ist definiert als eine Anordnung einer Anzahl von Vektorelementen (oder Elementen), die in der Hauptspeichereinheit 101 an vorgegebenen Adressenintervallen angeordnet sind. Bei der vorliegenden Ausführungsform sind in der Hauptspeichereinheit 101 vorab ein Textvektor 102, der als Elemente Zeichen enthält, die einen zu durchsuchenden Text darstellen, und eine Anzahl von Stichwortvektoren 144 bis 146 gespeichert, die als Elemente Zeichen aufweisen, die in einer Anzahl von Stichworten eingeschlossen sind, die als Elemente für die Suche verwendet werden. Die Textsucheinheit 117 unterwirft diese Vektoren einer vektoriellen Verarbeitung. Die vektorielle Verarbeitung ist definiert als eine pipelineartige Verarbeitung von Vektoren.
Bei der vorliegenden Ausführungsform beinhaltet die Verarbeitung durch das Textsuchprogramm 106 zwei Schritte, wie es in der Fig. 3 gezeigt ist.
Zuerst wird in einem ersten Reduktionsvorgang 31 eine Teilzeichenfolge (im folgenden "Kandidatenzeichenfolge" genannt) erfaßt, die wahrscheinlich mit einem der Stichwortvektoren 144 bis 146 aus den Teilzeichenfolgen im Textvektor 102 übereinstimmt, und es wird ein Ergebnisvektor (erster Reduktionsergebnisvektor) 104 erzeugt, der als ein Element die Information enthält, die eine Kandidatenzeichenfolge bezeichnet. Vor dieser Erfassung wird mittels der CPU 118 aus dem Textsuchprogramm 106 ein Erscheinungsartenvektor 103 erstellt. Der erste Reduktionsvorgang 31 wird durch die Textsucheinheit 117 unter Verwendung des Textvektors 102, einer Anzahl von Stichworten 144 bis 146 und eines Erscheinungsartenverzeichnisvektors 107 vektoriell bewirkt.
Im zweiten Reduktionsvorgang 32 wird aus allen Kandidatenzeichenfolgen, die im ersten Reduktionsvorgang 31 erzeugt wurden, eine Kandidatenzeichenfolge ausgewählt, die tatsächlich mit einem der Stichworte übereinstimmt, und es wird ein weiterer Ergebnisvektor (zweiter Reduktionsergebnisvektor) 105 mit der Information als Element erzeugt, die die ausgewählte Kandidatenzeichenfolge bezeichnet.
Dieser zweite Reduktionsvorgang 32 wird auf skalare Weise mittels des herkömmlichen FSA-Verfahrens unter Verwendung der in der Fig. 1 gezeigten CPU 118 ausgeführt. Da der Gegenstand der Verarbeitung begrenzt ist, ist die Verarbeitungsgeschwindigkeit erhöht, obwohl für einen Teil der Verarbeitung die herkömmliche Methode angewendet wird.
Wie beschrieben liegt ein erstes Merkmal der vorliegenden Ausführungform darin, daß im ersten Reduktionsvorgang Kandidatenzeichenfolgen ausgewählt werden und im zweiten Reduktionsvorgang unter den so ausgewählten Kandidaten nach einer Objekt- Zeichenfolge geschaut wird. Ein zweites Merkmal der vorliegenden Ausführungsform liegt darin, daß der erste Reduktionsvorgang mit hoher Geschwindigkeit auf vektorielle Art ausgeführt wird. Ein drittes Merkmal liegt darüberhinaus darin, daß die vektorielle Verarbeitung mit hoher Geschwindigkeit unter Verwendung einer für die vorliegende Erfindung spezifischen Schaltung bewirkt wird.
Die Fig. 2 zeigt ein Beispiel für Werte von verschiedenen Vektorelementen, die in der Hauptspeichereinheit 101 gespeichert sind. Der Textvektor 102 enthält als Elemente die Zeichen, die in "GYOU RETSU KEI SAN HOU O YO BI HEI RETSU KEI SAN KI NO SEI GYO HOU HOU" (Matrix-Berechnungsverfahren und Verfahren zur Steuerung von parallelen Computern)
enthalten sind. Die Stichwortgruppen 144 bis 146 enthalten die Gruppen "HEI RETSU" , "KEI SAN KI" und "SEI GYO HOU HOU" als Elemente. Zur Vereinfachung zeigt das Diagramm den Inhalt dieser Vektorelemente durch Zeichen an. Tatsächlich wird jedoch jede Gruppe in der Form eines 2-Byte-Zeichencodes gespeichert. Die Zahl links im Textvektor zeigt die Nummer eines jeden Elements des jeweiligen Vektors an.
Jedes Element des ersten Reduktionsergebnisvektors 104 besteht aus einem Paar von Informationen, die eine Elementnummer im Textvektor 102 für das führende Zeichen einer Kandidatenzeichenfolge und die Länge der Kandidatenzeichenfolge beinhalten. In der Fig. 2 zeigt beispielsweise das Element (2, 3) an, daß die Zeichenfolge "KEI SAN HOU" mit einer Länge von 3 und beginnend mit dem Zeichen "KEI" mit der Elementnummer 2 im Textvektor 102 eine erste Kandidatenzeichenfolge darstellt. Der erste Reduktionsergebnisvektor 104 zeigt insgesamt an, daß die Kandidatenzeichenfolgegruppe, zusätzlich zu dem oben erwähnten "KEI SAN HOU" , auch noch "HEI RETSU" mit einer Länge von 2 und beginnend mit dem achten Element des Textvektors 102, "KEI SAN KI" mit der Länge von 3 und beginnend mit dem zehnten Element und "SEI GYO HOU HOU" mit der Länge von 4 und beginnend mit dem vierzehnten Element darstellt. Es ist ersichtlich, daß "KEI SAN HOU" nicht mit irgendeinem der Stichworte übereinstimmt, jedoch als eine der Kandidatenzeichenfolgen erfaßt wird.
Die Struktur eines jeden Elementes des zweiten Reduktionsergebnisvektors 105 wird durch das gleiche Bezeichnungsverfahren wie im Falle des ersten Reduktionsergebnisvektors 104 angegeben. In diesem Beispiel mit den oben erwähnten vier Kandidatenzeichenfolgegruppen ist "KEI SAN HOU" nicht in der Stichwortgruppe 144, 145 und 146 enthalten, weshalb die Daten (2, 3) für diesen Kandidaten als falsch entfernt werden. Es ist ersichtlich, daß nur die Daten (8, 2), (10, 3) und (14, 4) für "HEI RETSU" , "KEI SAN KI" und "SEI GYO HOU HOU" die Elemente des zweiten Reduktionsergebnisvektors 105 bilden.
Auf diese Weise wird gemäß dieser Ausführungsform der zweite Reduktionsvorgang 32 nur für diejenigen Kandidatenzeichenfolgen ausgeführt, die im ersten Reduktionsvorgang 31 erzeugt wurden, weshalb die gesamte Textsuche sehr viel stärker als beim Stand der Technik beschleunigt wird, auch wenn der zweite Reduktionsvorgang 32 in skalarer Weise mittels des herkömmlichen FSA-Verfahrens erfolgt.
Wenn die Geschwindigkeit der gesamten Textsuche zu erhöhen ist, ist es erforderlich, die Geschwindigkeit des ersten Reduktionsvorganges 31 anzuheben. Zu diesem Zweck wird erfindungsgemäß dieser Vorgang 31 auf vektorielle Weise ausgeführt. Bei dem herkömmlichen FSA-Verfahren wird der Übergangszustand eines gegebenen Zeichens in einer Textzeichenfolge auf der Basis der Übergangszustände davon gegen das vorhergehende Zeichen bestimmt. Im Ergebnis ist es bei diesem Verfahren unvermeidlich, über eine Kombination von aufeinanderfolgenden Zeichen zu entscheiden. Bei einem solchen Verfahren ist es daher unmöglich, Zeichen im Textvektor 102 aufeinanderfolgend zu verarbeiten.
Deshalb wird als Ausführungsform ein im folgenden beschriebenes Verfahren angewendet, bei dem im Gegensatz zum FSA-Verfahren keine Übergangszustände benutzt werden.
  • (1) Ob ein jedes Zeichen im Textvektor 102 dasjenige ist, das in den Stichwortgruppen 144 bis 146 enthalten ist (ein im Stichwort in Erscheinung tretendes Zeichen), wird unabhängig von den anderen Zeichen entschieden.
  • (2) Eine Folge von aufeinanderfolgenden Zeichen, die im Stichwort im Textvektor 102 in Erscheinung tritt, wie es anhand dieser Entscheidung bestimmt wird, wird als Kandidatenzeichenfolge erfaßt.
Für obigen Schritt (1) oder um diesen Schritt mit hoher Geschwindigkeit auszuführen, macht die vorliegende Ausführungsform von einem Erscheinungsartenvektor 103 Gebrauch.
Dieser Vektor 103 dient zum Festhalten der Erscheinungsart, die anzeigt, ob ein jedes der Zeichen, das wahrscheinlich für den Textvektor 102 verwendet wird, für die Stichwortvektoren 144 bis 146 Verwendung findet.
Für jedes der Zeichen des Textvektors 102 ist es mit Bezug zu einem geeigneten Element im Vektor 103 möglich zu entscheiden, ob das jeweilige Zeichen in den Stichwortvektorgruppen 144 bis 146 enthalten ist oder nicht. Zusätzlich kann diese Entscheidung mit hoher Geschwindigkeit dadurch erfolgen, daß der Vektor 103 vorab erstellt wird. Zu diesem Zweck sollte der Erscheinungsartenvektor 103 die Informatiton enthalten, ob ein gegebenes Zeichen ein Zeichen ist, das in den Stichwortvektorgruppen 144 bis 146 enthalten ist (ein in einem Stichwort erscheinendes Zeichen ist).
Gemäß der vorliegenden Erfindung wird mittels einer 4-Bit- Information, wie es in der Fig. 2 als Erscheinungsart für ein gegebenes Zeichen dargestellt ist, angezeigt, ob ein entsprechendes Zeichen in einem gegebenen Stichwort erscheint und, wenn ja, in welcher Weise es in dem bestimmten Stichwort erscheint.
Von allen diesen Bits wird das nullte Bit a₀ auf "1" gesetzt, wenn ein entsprechendes Zeichen in einem der Stichwortvektoren erscheint und die Position des Erscheinens im jeweiligen Stichwort kleiner ist als die kürzeste Stichwortlänge (m).
Das erste bis dritte Bit (a₁ bis a₃) werden gesetzt, wenn ein entsprechendes Zeichen in einem der Stichwortvektoren erscheint und die Position davon am Anfang, in der Mitte bzw. am Ende des Stichwortes liegt. In der Fig. 2 ist zum Beispiel das 130-te Element "1100" mit "HEI" verknüpft. Da "HEI" am Anfang des kürzesten Stichwortes "HEI RETSU" erscheint, sind beide Bits a₀ und a₁ gleich "1". Unter Verwendung dieser vier Bits wird einerseits eine nicht erforderliche Kandidatenzeichenfolge reduziert, wie es später mit Bezug auf diese vier Bits beschrieben wird, und andererseits wird die Länge der ausgewählten Kandidatenzeichenfolge soweit wie möglich gekürzt.
Obwohl jedes Element des Erscheinungsartenvektors einem Zeichen entsprechen sollte, ergibt übrigens die Verringerung der Länge des Vektors bei der vorliegenden Ausführungsform, daß jedes Element aus vier Bits besteht, die sich für eine Anzahl von Zeichen aus der logischen Summe der Bits des Erscheinungsartenverzeichnisses (vier Bits) ergeben.
Die Übersicht über die Textsucheinheit 117 der Fig. 1 und die detaillierte Arbeitsweise davon wird später erläutert.
Die Verarbeitung bei der obigen Ausführungsform und der Betrieb der Anordnung wird nun im Detail beschrieben.
(B) Erster Reduktionsvorgang
Die Fig. 4 ist ein Flußdiagramm, das den Inhalt der oben erwähnten ersten Reduktionsvorgangsroutine 31 zeigt.
(1) Initialisierung (Schritt 401)
Die CPU 118 führt zuallererst gemäß einem Suchprogramm 106 eine Initialisierung aus. Insbesondere wird die Länge der kleinsten Anzahl von Zeichen von allen Stichwörtern (die kürzeste Stichwortlänge) (im Falle der Fig. 2 ist unter den Stichworten 144, 145 und 146 das kürzeste Stichwort "HEI RETSU" , die Länge davon ist 2) als Programmvariable m festgelegt, es werden alle Eingänge des Erscheinungsartenverzeichnisvektors 103 gelöscht, und die maximale Elementnummer (in diesem Fall 17) des Textvektors 102 wird als Programmvariable N (Schritt 401) festgelegt.
(2) Erzeugung des Erscheinungsverzeichnisvektors 103 (Schritte 402 bis 411)
Im nächsten Schritt wird jedes Zeichen in den Stichwortvektoren 144 bis 146 geprüft, um einen Erscheinungsartenvektor 103 zu erstellen. Wie erwähnt dient dieser Vektor dafür, um festzustellen, ob eines von all den Zeichen, die im Textvektor 102 erscheinen können, tatsächlich in einem von einer Anzahl von Stichwortvektoren 144 bis 146 auftritt und, wenn eines erscheint, zum Festhalten der Art des Erscheinens davon. Das heißt, daß bezüglich jedes Stichwortvektors (Schritt 402) der Code Cq (mit der Bedeutung des q-ten Zeichens im Stichwortvektor) eines Zeichens in jedem der Stichwortvektoren sequentiell gewonnen wird (Schritt 403), und daß Cq (mit 16 Bit) in eine kleinere Anzahl von Bits (10 Bit) umgewandelt wird, womit der Ergebniswert j erhalten wird (Schritt 404). Diese Umwandlung ist eine Technik, die allgemein "Hashing" genannt wird und bei der ein Zeichencode in einen Code umgewandelt wird, der kürzer ist als die Bitlänge eines gegebenen Codes, sie wird im folgenden ebenso genannt. Nach dem Hashing ist die Länge des Erscheinungsartenverzeichnisvektors (Gesamtanzahl von Elementen) kleiner. Der Erscheinungsartenvektor 103 wird, wie später noch erläutert, in der Form verwendet, die ein einem Erscheinungsartenvektor-RAM 109 in der Textsucheinheit 117 gespeichert ist. Das Hashing wird ausgeführt, um die für diesen RAM 109 erforderliche Kapazität zu verringern. Im betrachteten Fall wäre, wenn für jeden der ganzen 16-Bit-Zeichencodes ein Element verwendet würde, ein RAM mit 256 kBit erforderlich. Wenn jedoch nach dem Hashing ein Element für einen 10-Bit-Code vorgesehen ist, verringert sich dieses Erfordernis auf 1/64, obwohl nach Möglichkeit das Hashing natürlich vermieden werden sollte.
Die Fig. 5 ist ein Diagramm zur Darstellung eines Hashing- Verfahrens. Mit B₀ bis B₁₅ sind die 16 Bit des Zeichencodes Cq bezeichnet und mit A₀ bis A₉ die 10 Bit, die durch das Hashing erhalten werden. Von den Bits B₀ bis B₁₅ werden diejenigen, die nicht mit den Ausgängen A₀ bis A₉ verbunden sind, wie gezeigt ignoriert. Das heißt, daß gemäß dem Hashing-Verfahren A₀ die exklusive logische Summe (EOR) der Bits B₂ und B₃ ist; jedes der Bits B₅, B₆ und B₇ ist gleich A₁, A₂ bzw. A₃; und die Bits B₁₀ bis B₁₅ bleiben A₄ bis A₉. Die Fig. 6 ist eine Tabelle, die eine Übersicht über die Zeichencodes, das Ergebnis des Hashings und die Erscheinungsartinformation für jedes Zeichen in den Stichworten 144 bis 146 gibt. Diese Tabelle zeigt Hashingwerte in sedezimaler Darstellung, in Klammern gefolgt von der dezimalen Darstellung. Für das Zeichen "HEI" ist beispielsweise der Zeichencode (der KEIS-Code) CAC2, und das Ergebnis des Hashings, wie es in der Fig. 5 gezeigt ist, ist 82 (sedezimal) (130 in dezimaler Darstellung).
Es wird als nächstes die Erscheinungsart des Zeichens Cq geprüft. Zuerst wird die Erscheinungsposition (q-te) des Zeichens Cq mit der kürzesten Stichwortlänge m verglichen (Schritt 405), und wenn die Erscheinungsposition q im Stichwort vor m liegt, wird am 0-ten Bit a₀ der j-ten Eingabe des Erscheinungsartenverzeichnisvektors 103 "1" gesetzt (Schritt 406). Es wird geprüft, ob das zweite Zeichen Cq am Anfang des Stichwortes erscheint (Schritt 407), und wenn ja, wird das erste Bit a₁ der j-ten Eingabe des Erscheinungsartenverzeichnisses 103 auf "1" gesetzt (Schritt 408). In entsprechender Weise wird geprüft, ob das Zeichen Cq in der Mitte (woanders als am Anfang oder Ende) des Stichwortes erscheint (Schritt 409) oder ob das Zeichen Cq am Ende des Stichwortes erscheint (Schritt 411), wobei das zweite Bit a₂ und dritte Bit a₃ der j-ten Eingabe des Erscheinungsartenverzeichnisses 103 entsprechend auf "1" gesetzt werden (Schritte 410, 412). Auf diese Weise wird das Erscheinungsartenverzeichnis 103 erstellt.
Unter der Annahme, daß beispielsweise das Zeichen "HEI" an einer Stelle vor der kürzesten Stichwortlänge 2 erscheint und das Zeichen am Beginn des Stichwortes "HEI RETSU" ist, wie es in der Fig. 6 gezeigt ist, wird das 0-te Bit und das erste Bit der Erscheinungsartinformation zu "1". Das Zeichen erscheint nicht in der Mitte oder am Ende, weshalb das zweite und das dritte Bit zu "0" werden. Im Ergebnis ist die 130. Eingabe des Erscheinungsartenverzeichnisses 103 gleich "1100". Das gleiche gilt für die anderen Stichwörter, da die Erscheinungsartinformation von vier Bit an einer Stelle im Erscheinungsartenverzeichnis 103 gespeichert ist, die durch den Hashingwert in der Fig. 6 angezeigt wird. Für diejenigen Zeichen, deren Stichworte nicht erscheinen, bleibt der entsprechende Wert für das Erscheinungsartenverzeichnis "0000". Als Ergebnis des erwähnten Hashings können übrigens Zeichen, die in zwei verschiedenen Stichworten erscheinen, den gleichen Hashingwert annehmen. In einem solchen Fall ist die logische Summe des Erscheinungsartenverzeichnisses für zwei solche Zeichen im Eingabewert des dafür gemeinsamen Hashingwertes gespeichert.
(3) Kurze Beschreibung der Textsucheinheit 117 und deren Arbeitsweise
Nach Beendigung des Erstellens des Erscheinungsartenverzeichnisses 103 mit den Schritten 402 bis 412 wird eine Textsuchanweisung ausgegeben (Schritt 413).
Diese Anweisung wird hauptsächlich von der Textsucheinheit 117 ausgeführt. Vor einer Beschreibung der Arbeitsweise dieser Einheit wird die Anordnung dafür kurz erläutert.
In der Fig. 1 bezeichnet 109 ein RAM zum Speichern des Erscheinungsartenvektors und 154 eine Abrufschaltung zum Abrufen aller Elemente des Erscheinungsartenverzeichnisses 103 in die Hauptspeichereinheit 101 und zu deren Übertragung in den RAM 109. 152 bezeichnet eine Abrufschaltung zum sequentiellen Abrufen der Elemente des Textvektors 102, 108 ein Register zum vorübergehenden Festhalten der abgerufenen Elemente für eine Taktperiode und 116 eine Schaltung für das Hashing der im Register 108 festgehaltenen Vektorelemente (das heißt der im Textvektor 102 vorhandenen Zeichencodes) auf die gleiche Weise wie bei der Erstellung des Erscheinungsartenverzeichnisvektors 103 (Fig. 6), wodurch eine Adresse einer Eingabe, die den Zeichencodes entspricht, für den Erscheinungsartenvektor-RAM 109 erstellt wird, wobei von dieser Eingabe eine entsprechende Erscheinungsart ausgelesen wird. Unter Verwendung dieses Verzeichnisses entscheiden die Steuerlogik-Schaltungsgruppe 111 und die Zähler 112 bis 115, ob das erwähnte Zeichen eines ist, das als eine der Kandidatenzeichenfolgen erfaßt wird, oder schreiben es für eine bereits erfaßte Kandidatenzeichenfolge als ein Element des ersten Reduktionsergebnisvektors in die Hauptspeichereinheit ein.
Der Textzähler 112 zählt die Elementnummer i des gerade verarbeiteten Zeichens im Textvektor 102, und der Koinzidenzlängenzähler 113 stellt die Länge l der gerade verarbeiteten Kandidatenzeichenfolge fest. Der Effektivlängenzähler 114 zählt die Länge v einer effektiven Kandidatenzeichenfolge, die gerade verarbeitet wird, in dem Fall, daß das nächste Zeichen nicht zu der gerade verarbeiteten Kandidatenzeichenfolge hinzugefügt werden kann, und der Ergebniszähler 115 stellt die Nummer k der bis dahin erfaßten Kandidatenzeichenfolge fest.
Der Subtrahierer 141 bestimmt die Elementnummer des führenden Elementes der erfaßten Kandidatenzeichenfolge aus der Differenz i-l zwischen dem Wert i des Textzählers 112 und dem Wert l des Koinzidenzlängenzählers 113. Diese Nummer stellt, zusammen mit dem Wert v des Effektivlängenzählers 114, das Ergebnis der ersten Reduktion für die jeweilige Zeichenfolge dar und wird durch die Vektorspeicherschaltung 151 in die Hauptspeichereinheit eingeschrieben.
Die Fig. 10 ist ein Diagramm, das die chronologischen Beziehungen der verschiedenen Abschnitte beim ersten Reduktionsvorgang durch die Textsucheinheit der Fig. 1 zeigt. Die Arbeitsweise der Textsucheinheit ist derart, daß der Schritt T des Lesens des Textzeichens (das heißt das Übergeben vom Ausgang der Abrufschaltung 153 zum Eingang des Registers 108), die Adressenerzeugung A des RAMs 109 durch die Hashingschaltung 116, der Schritt R des Lesens der Erscheinungsartinformation vom RAM 109, der Vorgang C des Erneuerns des Zählers und Schritt S des Einschreibens in die Hauptspeichereinheit für eine bereits erfaßte Kandidatenzeichenfolge für ein eingegebenes Zeichen in zeitlicher Folge ausgeführt wird. Der Schritt S wird nicht in jedem Zyklus ausgeführt und ist im Diagramm deshalb gestrichelt dargestellt. Wie in der Fig. 10 gezeigt, werden die verschiedenen Vorgänge für die verschiedenen Zeichen für eine Anzahl von aufeinanderfolgenden Zeichen in Maschinenzyklen C-2, C-1, C₀, C₁ . . . im Duplexbetrieb ausgeführt und einer Pipeline-Verarbeitung unterworfen, so daß die Verarbeitung eines Textzeichens im Ergebnis innerhalb eines Maschinenzyklusses ausgeführt wird.
(4) Textsuchanweisung
Die Fig. 7 ist ein Diagramm, das den Inhalt einer Textsuchanweisung darstellt. Die Anweisung umfaßt 32 Bit. Die ersten 16 Bit stellen einen Code 71 dar, der die Art der Anweisung angibt, die nächsten 8 Bit werden ignoriert, und die folgende 4-Bit-Registernummer R1 bezeichnet drei Allzweckregister 74, 75 und 76 in der (nicht gezeigten) Allzweck-Registergruppe der CPU 118, die mit R1, R1+1 und R1+2 bezeichnet werden. Die letzte Registernummer R2 mit 4 Bit bezeichnet zwei Allzweckregister 76 und 78, die mit R2 und R2+1 bezeichnet werden. Im Allzweckregister 74 ist die Adresse des führenden Zeichens des Textvektors 102 (Textkopfadresse), im Allzweckregister 75 eine Kopfadresse des Erscheinungsartenverzeichnisvektors 103 und im Allzweckregister 76 eine Kopfadresse des ersten Reduktionsergebnisvektors 104 gespeichert. Im Allzweckregister 77 ist die erwähnte kürzeste Stichwortlänge (der Wert der Programmvariablen m, der bei der vorliegenden Ausführungsform gleich 2 ist) und im Allzweckregister 78 die maximale Elementnummer N (17 bei der vorliegenden Ausführungsform) des Textvektors 102 gespeichert.
Die Verarbeitungseinheit 118 sendet nach Feststellung der Textsuchanweisung die Werte der Allzweckregister 74, 75, 76, 77 und 78 über Signalleitungen 139c, 139b, 139a, 139e und 139d zu einer Vektorelementabrufschaltung 152, einer Abrufschaltung 154, einer Vektorelementspeicherschaltung 151 und einer Steuerlogikschaltungsgruppe 111 der Textsucheinheit 117, die dadurch eingeschaltet wird. Danach nimmt die Verarbeitungseinheit 118 bis zur Ankunft eines Abschlußreportsignales 140 aus der Textsteuerlogikschaltung 211 in der Steuerlogikschaltungsgruppe 111 einen Bereit-Zustand an.
(5) Einzelheiten des Textsuchvorganges
Die Textsucheinheit setzt die Zähler 112 bis 115 nach ihrer Einschaltung zurück und bewirkt, daß der Erscheinungsartenvektor 103 von der Hauptspeichereinheit 101 durch die Abrufschaltung 154 vollständig in den Erscheinungsartenvektorspeicher-RAM 109 gelesen wird. Im nächsten Schritt beginnt die Verarbeitung des Textvektors 102 an der Hauptspeichereinheit 101.
Jedes Element des Textvektors 102 wird sequentiell durch die Vektorelementabrufschaltung 152 abgerufen, und die in den abgerufenen Daten enthaltenen Zeichen werden sequentiell in das Register 108 gegeben. Die Textzeichen (2 Bytes) im Register 108 werden zu der Hashingschaltung 116 geführt (die den in der Fig. 6 gezeigten Aufbau hat) und durch Hashing auf einen Wert gebracht, der aus zehn Bits besteht. Dieser Hashingwert wird als Leseadresse zu dem RAM 109 gegeben und, nach einer den Textzeichen entsprechenden Erscheinungsart, über die Signalleitung 129 zu der Steuerlogikschaltungsgruppe 111 weitergegeben. Die Steuerlogikschaltungsgruppe 111 beinhaltet Zählersteuerlogikschaltungen 211 bis 214 und eine Speichersteuerlogikschaltung. Die Zählersteuerlogikschaltungen 211 bis 214 legen auf der Basis der Werte der Zähler 112, 113, 114 und 115 und der Erscheinungsart auf der Signalleitung 129 fest, ob die ausgelesenen Textzeichen (der Inhalt des Registers 108) als eine neue Kandidatenzeichenfolge behandelt werden sollen oder zu der gerade verarbeiteten Kandidatenzeichenfolge hinzugefügt werden sollen. Auf der Basis des Ergebnisses dieser Entscheidung werden Erneuerungsanweisungssignale 156, 132, 134 und 136 zu den jeweiligen Zählern gesendet. Die Speichersteuerlogikschaltung 215 stellt auf der Basis der Werte der Zähler 112, 113, 114 und 115 und der Erscheinungsart 129 die Vervollständigung einer Kandidatenzeichenfolge fest und sendet ein Anforderungssignal 122 an die Vektorelementspeicherschaltung 151, so daß die Nummer des führenden Elementes der erfaßten und im Register 110 gespeicherten Kandidatenzeichenfolge und die Länge der jeweiligen Zeichenfolge paarweise zu der Vektorelementspeicherschaltung 151 gegeben werden kann. Das Paar von Daten wird vom Register 110 über den Weg 150 zu der Vektorelementspeicherschaltung 151 gesendet. Die Vektorelementspeicherschaltung 151 sendet die so erhaltenen Daten über den Datenweg 121 zu der Hauptspeichereinheit 101, und die Daten werden an einer Stelle gespeichert, die durch den Ergebniszähler 115 im ersten Reduktionsergebnisvektor 104 angezeigt wird.
Die Textzählersteuerlogikschaltung 211, die Koinzidenzlängenzählersteuerlogikschaltung 212, die Effektivlängenzählersteuerlogikschaltung 213, die Ergebniszählersteuerlogikschaltung 214 und die Speichersteuerlogikschaltung 215 der Fig. 1 stellen eine Kombinationsschaltung zur Ausführung der Operationen dar, die durch die in den Fig. 8A bis 8E gezeigten Wahrheitstabellen 211A, 212A, 213A, 214A und 215A angezeigt werden. Zur Vereinfachung werden die Einzelheiten dieser Schaltungen, die sich aus den Wahrheitstabellen ohne weiteres ergeben, nicht dargestellt. Bei den obigen Wahrheitstabellen ist zur Erläuterung der Wert des Textzählers 112 mit l bezeichnet, der Wert des Effektivlängenzählers 114 mit v, der Wert des Ergebniszählers 115 mit k, die ausgelesenen 0-ten bis 3-ten Bits des Erscheinungsartenverzeichnisses 129 mit a₀ bis a₃, die kürzeste Stichwortlänge mit m und die maximale Elementnummer des Textvektors 102 mit N. Mit diesen Eingangszuständen bezeichnen N < i, l = 0, l < m ∧ ₀ und V < m Eingangsbedingungen für diese Schaltungen, und "1" und "0" in diesen Wahrheitstabellen zeigt an, ob die Bedingung erfüllt ist oder nicht. "x" zeigt an, daß die Bedingung ignoriert wird, ∧ ein logisches Produkt und ₀ die Negation von a₀.
Die Ausgangssignale +1, NOP, "auf 0 gesetzt" und "auf 1 gesetzt" stellen jeweils dar, daß der Zählerwert um eins erhöht, nicht geändert, auf Null oder auf Eins gesetzt wird. Die Eingangsbedingung N < i ist eine Bedingung, die erfüllt wird, bis die Elementnummer i des verarbeiteten Zeichens für das letzte Element zu N wird, das heißt solange das verarbeitete Zeichen nicht das letzte Zeichen des Textvektors 102 ist.
l = 0 ist eine Bedingung, die erfüllt ist, wenn das dem gerade verarbeiteten Zeichen vorhergehende Zeichen nicht als zu der Kandidatenzeichenfolge gehörend bestimmt wird.
l < m ∧ ₀ ist eine Bedingung, die nur dann erfüllt ist, wenn das Ergebnis der Verarbeitung, die dem gerade verarbeiteten Zeichen vorausgeht, l < m ist (das heißt wenn kein zu der Kandidatenzeichenfolge gehörendes Zeichen festgestellt wird, oder wenn es festgestellt wird, jedoch die Länge l davon kleiner ist als die kürzeste Stichwortlänge) und wenn es gleichzeitig a₀ für das gerade verarbeitete Zeichen gleich 0 ist (das heißt wenn das gerade verarbeitete Zeichen in keinem der Stichwörter vorkommt oder an einer Stelle vorkommt, die größer ist als die kürzeste Stichwortlänge).
Die Bedingung v < m ist nur dann erfüllt, wenn die Länge v einer effektiven Kandidatenzeichenfolge, die schon bestimmt ist, kleiner als die kürzeste Stichwortlänge m ist.
Wie aus der Fig. 8A ersichtlich ist, erhöht die Textzählersteuerlogik 211 den Textzähler 112 um +1, so lange das gerade verarbeitete Zeichen nicht das letzte Zeichen des Textvektors 102 ist. Im Ergebnis zeigt der Inhalt i des Textzählers 112 jedesmal dann die Elementnummer für das nächste Zeichen an, wenn ein Erscheinungsartenverzeichnis aus dem RAM 109 ausgelesen wird.
Als nächstes wird die Arbeitsweise einer jeden der Steuerlogikschaltungen 211 bis 215 und der Zähler 112 bis 115 beim Suchen nach einer Kandidatenzeichenfolge in dem gegebenen Textvektor 102, der in der Fig. 2 gezeigt ist, genauer erläutert.
Die Fig. 9 zeigt eine Änderung im Signal oder jeden Zähler zu verschiedenen Zeiten, wenn das Erscheinungsartenverzeichnis für jedes Zeichen des Textvektors 102 sequentiell vom Zeitpunkt 0 an gelesen wird. Das erste Zeichen selbst wird natürlich zwei Zyklen vor dem Zeitpunkt 0 aus der Hauptspeichereinheit 101 ausgelesen.
(Zeitpunkt 0)
Zum Zeitpunkt 0 werden zuerst alle Zähler 112 bis 115 zur Initialisierung auf 0 gesetzt.
Zum Zeitpunkt 1 wird der Vorgang für das erste Zeichen "GYO" auf der Basis des Erscheinungsartenverzeichnisses gestartet.
Die Erscheinungsart für dieses Zeichen "GYO" ist "0000", und es ist daher kein Zeichen, das in diesem Stichwort erscheint. Als Ergebnis wird zum Zeitpunkt 1, wie es in der Zeile für den Zeitpunkt 1 in der Fig. 9 gezeigt ist, nur der Wert i des Textzählers 112 auf die Elementnummer 1 für das nächste Zeichen erneuert, jedoch nicht die anderen Zählerstände l, v und k.
Dieser Zählervorgang wird in der unten angegebenen Weise ausgeführt.
(Zeitpunkt 1)
Die Eingangsbedingungen der Steuerlogiken 211 bis 215 zum Zeitpunkt 1 sind wie folgt: (1) N = 17 und i = 0, weshalb die Bedingung N < i zutrifft ("1"), (2) die Bedingung l trifft ebenfalls zu ("1"), (3) die Bedingung v < m trifft zu, da v = 0 und m = 2 ist ("1"), (4) die Bedingung l < m ∧ ₀ trifft zu, da l = 0 < m = 2 und ₀ = 1 ist ("1"), und (5) a₁a₂a₃ ist gleich "000".
Als Folge gibt die Textzählersteuerlogik 211 eine Arbeitsanweisung aus, die Punkt 2 der Wahrheitstabelle 211A entspricht, die Koinzidenzlängenzählersteuerlogik 212 die Anweisung, die Punkt 1 der Wahrheitstabelle 212A entspricht, die Effektivlängenzählersteuerlogik 213 die Anweisung, die Punkt 1 der Wahrheitstabelle 213A entspricht, die Ergebniszählersteuerlogik 214 gibt die Punkt 1 der Wahrheitstabelle 214A und die Speicherlogik 215 die Punkt 1 der Wahrheitstabelle 215A entsprechende Anweisung aus. Das heißt, daß die Arbeitsanweisung, die i darstellt, um +1 erhöht wird, l, v, das Speichersignal 122 und das Abschlußreportsignal 140 auf "0" gesetzt sowie k ohne Erneuerung gelassen wird. Als Ergebnis der Verarbeitung des Textzeichens "GYO" zum Zeitpunkt 1 wird somit eine +1-Erneuerungs- Anweisung über die Signalleitung 156 an den Textzähler i ausgegeben, und über die Signalleitungen 132 und 134 ein 0-Rücksetz- Signal an den Koinzidenzlängenzähler l und den Effektivlängenzähler v. Die Werte i, l, v und k der jeweiligen Zähler werden zu 1, 0, 0 und 0, wie es zum Zeitpunkt 1 in der Fig. 9 dargestellt ist.
(Zeitpunkt 2)
Zum Zeitpunkt 2 wird der Zählerbetrieb auf der Basis der Erscheinungsart des nächsten Zeichens "RETSU" ausgeführt. Das Zeichen "RETSU" hat die Erscheinungsart "1001". "RETSU" ist ein Zeichen, das in einem Stichwort erscheint, wobei es jedoch ein Zeichen ist, das am Ende eines Stichwortes auftritt, wie es durch die Erscheinungsart "1001" angezeigt wird. Da die Koinzidenzlänge l nun 0 ist, ist, auch wenn ein Zeichen in einem Stichwort erscheint, dies nicht ein Zeichen, das in einer Zeichenfolge enthalten ist, die mit einem Stichwort übereinstimmt, es sei denn, es ist ein führendes Zeichen des Stichwortes. Im Ergebnis wird "RETSU" nicht als ein Zeichen betrachtet, das zu einer Kandidatenzeichenfolge gehört. Wie es in der Zeile zum Zeitpunkt 2 der Fig. 9 gezeigt ist, bleiben die Zählerwerte l, v und k bei 0, und nur der Zähler i wird auf 2 erhöht.
Auf diese Weise enthält erfindungsgemäß die Erscheinungsart die Information, die die Stelle des Erscheinens eines Zeichens anzeigt, das in einem Stichwort auftritt, und es weist das Merkmal auf, daß auch ein Zeichen, das in einem Stichwort erscheint, als nicht zu einer Kandidatenzeichenfolge gehörend behandelt wird, wenn es nicht in der gleichen Zeichenfolge wie ein Stichwort erscheint. Überflüssige Kandidatenzeichenfolgen können so vermieden werden.
Die erwähnten Zähleroperationen zum Zeitpunkt 2 werden gemäß den Wahrheitstabellen der Fig. 8 in der unten beschriebenen Weise festgelegt.
Die Eingangsbedingungen zum Zeitpunkt 2 sind wie folgt: Die Bedingungen N<i, l=0 und v<m treffen wie zum Zeitpunkt 1 zu, jedoch nicht die Bedingung l<m∧₀, da a₀ gleich 1 ist ("0"). a₁a₂a₃ ist gleich "001". Im Ergebnis wird, in Übereinstimmung mit den Punkten 2, 3, 4, 2 und 2 der Wahrheitstabellen 211A, 212A, 213A, 214A und 215A nur der Zähler i um +1 erhöht, wodurch die Zählerwerte i, l, v und k zu 2, 0, 0 und 0 werden.
(Zeitpunkt 3)
Zum Zeitpunkt 3 wird die Zähleroperation auf der Basis des Erscheinungsartenverzeichnisses "1100" des Zeichens "KEI" ausgeführt.
Zu diesem Zeitpunkt wurde noch keine Kandidatenzeichenfolge erfaßt (l=0), und "KEI" kann der Kopf einer Kandidatenzeichenfolge sein, da es ein Zeichen ist, das am Kopf eines Stichwortes erscheint (a₁=1). Der Wert l des Koinzidenzlängenzählers wird um +1 auf 1 erhöht, um festzuhalten, daß die Erfassung einer Kandidatenzeichenfolge begonnen hat. Der Zählwert i wird ebenfalls auf 3 erhöht, v und k jedoch bleiben 0.
Bei der Verarbeitung wird die Steuerung der Zähleroperationen auf die Weise festgelegt, wie es im folgenden in Übereinstimmung mit den Eingangsbedingungen beschrieben ist. Die Eingangsbedingungen N<i, l=0, v<m und l<m∧a₀ sind die gleichen wie für das Zeichen "RETSU" zum Zeitpunkt 2, während a₁a₂a₃ gleich 100 ist. Es werden daher die Vorgänge der Punkte 4, 2, 2 und 2 der Wahrheitstabellen 212A, 213A, 214A und 215A ausgeführt. Folglich wird der Zählwert l um +1 angehoben, v bleibt jedoch unverändert.
Auf diese Weise werden die Zählwerte i, l und v zum Zeitpunkt 3 zu 3, 1 und 100.
(Zeitpunkt 4)
Zum Zeitpunkt 4 wird die Zähloperation für die Erscheinungsart "1010" des Zeichens "SAN" ausgeführt. Dieses Zeichen kann in der Mitte eines Stichwortes vorhanden sein, a₂=1. Zum Zeitpunkt 3 befand sich eine Kandidatenzeichenfolge in der Erfassung (l=1), das Zeichen "SAN" , das in der Mitte eines Stichwortes erscheint, wird daher zu der Kandidatenzeichenfolge hinzugefügt. Zum Zeitpunkt 3 werden daher nur i und l um +1 erhöht.
Auf diese Weise werden die Zählerwerte i, l, v und k zu 4, 2, 0 und 0. Somit wurde die Kandidatenzeichenfolge in der Form von "KEISAN" erfaßt. Die Steuerung dieser Zähleroperation ist in der im folgenden beschriebenen Weise festgelegt.
Zum Zeitpunkt 4 treffen die Eingangsbedingungen N<i und v<m wie zum Zeitpunkt 3 zu, jedoch nicht die Bedingungen l<m∧₀ und l=0.
Andererseits ist a₁a₂a₃ gleich 010. Die Steuerung wird wie oben in Übereinstimmung mit den Punkten der Wahrheitstabellen 212A, 213A, 214A und 215A bewirkt.
(Zeitpunkt 5)
Zum Zeitpunkt 5 wird die Zähleroperation für die Erscheinungsart "0001" des Zeichens "HOU" ausgeführt.
Das Zeichen "HOU" erscheint am Ende eines Stichwortes (a₃=1), und es sollte die der Erfassung unterliegende Kandidatenzeichenfolge, zu der das Zeichen "HOU" hinzugefügt wird, als Kandidat ("KEISAN HOU" in dem betrachteten Fall) vervollständigt werden. Auf diese Weise wird, wenn ein Zeichen verarbeitet wird, das am Ende eines Stichwortes erscheint, während eine Kandidatenzeichenfolge der Erfassung unterliegt (l≠0), ein Wert für den Wert v verwendet, der durch Addieren von 1 zu der Länge l der insoweit erfaßten Kandidatenzeichenlänge erhalten wird. Unter dieser Bedingung wird l auch auf 0 zurückgesetzt.
Die Zählwerte i, l, v und k werden daher zu 0030 erhalten.
Die erwähnte Zähleroperation ist in der unten beschriebenen Weise festgelegt. Zum Zeitpunkt 5 treffen die Eingangsbedingungen N<i und v<m zu, während die Bedingungen l<m∧₀ und l=0 nicht zutreffen, wie im Zeitpunkt 4. a₁a₂a₃ ist gleich 001.
Folglich wird die Zähleroperation in der Weise gesteuert, wie sie oben durch die Punkte 2, 7, 6 und 6 in den Wahrheitstabellen 212A, 213A, 214A und 215A gegeben ist.
(Zeitpunkt 6)
Zum Zeitpunkt 6 wird die Zähleroperation für die Erscheinungsart "0000" des Zeichens "O" ausgeführt. Angesichts der Tatsache, daß eine Kandidatenzeichenfolge mit einer effektiven Länge v (=3) größer als der kürzesten Stichwortlänge m (=2) bereits zum Zeitpunkt 5 und daß das vorliegende Zeichen nicht in den Stichworten enthalten ist (a₁=a₂=a₃=0), wird die Information über die bereits erhaltene Kandidatenzeichenfolge ("KEISAN HOU" ) als erstes Element des ersten Reduktionsergebnisvektors 104 in der Hauptspeichereinheit 101 gespeichert. Zu diesem Zweck wird das Speichersignal 122 durch die Speichersteuerlogik 215 auf "1" gesetzt und der Ergebniszählerwert k auf "1". l und v werden auf 0 gesetzt. Die gespeicherten Daten stellen daher ein Paar dar, das die Elementnummer 2 des führenden Zeichens ("KEI" ) dieser Kandidatenzeichenfolge und die Länge 3 dieser Kandidatenzeichenfolge beinhaltet.
Die erwähnte Steuerung wird in der unten beschriebenen Weise ausgeführt. Zum Zeitpunkt 6 gelten die Eingangsbedingungen N<i, l=0 und l<m∧₀, während die Bedingung v<m nicht erfüllt ist, und a₁a₂a₃ bleibt 000. Im Ergebnis wird die erwähnte Operation durch die Punkte 1, 1, 8 und 8 der Wahrheitstabellen 212A, 213A, 214A und 215A ausgeführt.
Die erwähnten gespeicherten Daten werden zum Zeitpunkt 6 in das Register 110 eingegeben. Das heißt, daß parallel zu der Zähleroperation zu jedem der oben angegebenen Zeitpunkte die Differenz zwischen dem Textzählwert i vor der Erneuerung zum jeweiligen Zeitpunkt und der Koinzidenzlänge l durch einen Subtrahierer 141 berechnet wird, wobei diese Differenz in das Register 110 eingegeben wird, nachdem sie für eine Zeiteinheit durch das Register 147 festgehalten wurde.
Einer der Werte, die zu dem Register 110 gegeben werden, ist daher i-l von zwei Zeiteinheiten vorher. Zu einem Punkt zwei Zeiteinheiten vor der Erzeugung des Speichersignals 122 zeigt, wie auch aus der Fig. 9 ersichtlich, l eine Koinzidenzlänge für das vorletzte Zeichen in der der Erfassung unterliegenden Kandidatenzeichenfolge an und i die Elementnummer des jeweiligen Zeichens. Die Differenz i-l stellt daher eine Elementnummer für das führende Element der jeweiligen Kandidatenzeichenfolge dar. Andererseits wird die effektive Länge v von einer Zeiteinheit vorher im Rest des Registers 110 gesetzt, die gleich der Länge dieser Kandidatenzeichenlänge ist.
In dem betrachteten Fall ist im Register 110 bei den ersten halben vier Bytes davon die Differenz (=2) zwischen dem Textzählerwert i (=4) zwei Zeiteinheiten vor dem gegenwärtigen Zeitpunkt und der zugehörigen Koinzidenzlänge l (=2) gespeichert und bei den letzten halben vier Bytes davon der Wert v (=3) des Effektivlängenzählers 114 zum Zeitpunkt 5 eine Zeiteinheit vor dem gegenwärtigen Zeitpunkt. Auf diese Weise wird das 0-te Element des ersten Reduktionsergebnisvektors 104 zu (2, 3). Die Vektorelementspeicherschaltung 151 berechnet eine Hauptspeicheradresse zum Speichern der Elemente des primären Reduktionsergebnisvektors 104, die durch den Ergebniszählerwert k angezeigt werden, aus der Kopfadresse des Ergebnisvektors 104, die auf der Signalleitung 139a angezeigt wird, und dem Ergebniszählerwert k, der auf der Signalleitung 136 angezeigt wird, und die Daten, die auf der Signalleitung 150 angezeigt werden, werden über die Signalleitung 121 unter der jeweiligen Adresse gespeichert.
Daraufhin wird in ähnlicher Weise und synchron zur fortschreitenden Zeit die Erfassung der anderen Kandidatenzeichenfolgen "HEI RETSU" und "KEISAN KI" fortgeführt, wie es in der Fig. 9 gezeigt ist, so daß die Zählerwerte i, l, v und k zum Zeitpunkt 18 zu 18, 0, 4 und 3 werden. Unter dieser Bedingung werden die Daten (14, 4), die die letzte Kandidatenzeichenfolge "SEIGYO HOUHOU" bezeichnen, als drittes Element des ersten Reduktionsergebnisvektors 104 gespeichert, und ein Abschlußreportsignal 140 geht auf "1", so daß die Beendigung der Operation der Textsucheinheit zu der CPU 118 gemeldet wird.
Das 0-te Bit a₀ der Erscheinungsart hat bisher angezeigt, ob das jeweilige Zeichen vor der kürzesten Stichwortlänge m im Stichwort erscheint. Da ein solches Bit verwendet ist, ist es möglich, daß eine Zeichenfolge "SEI HOU" , die beispielsweise im Textvektor erscheinen kann, aus den Kandidaten entfernt wird. Der Grund dafür ist, daß "HOU" an einer Stelle (der dritten Stelle) hinter der kürzesten Stichwortlänge 2 erscheint, und es ist daher ersichtlich, daß es für "HOU" unmöglich ist, in der Stufe der Erfassung von "SEI" als Kandidatenzeichenfolge zu erscheinen. Auf diese Weise ist die Erscheinungsart gemäß der vorliegenden Ausführungsform so festgelegt, daß nur eine Kandidatenzeichenfolge, die dem Stichwort so nahe wie möglich kommt, als Kandidatenzeichenfolge mit einer minimalen Anzahl von Bits erfaßt wird.
Die Verarbeitungseinheit 118 vervollständigt nach Erhalt des Abschlußreportsignals 140 die Verarbeitung der Textsuchanweisung, wodurch die erste Reduktionsvorgangsroutine 31 (Fig. 3) abgeschlossen wird.
(C) Zweiter Reduktionsvorgang
Im nächsten Schritt wird vom Textsuchprogramm 106 eine zweite Reduktionsvorgangsroutine 32 abgerufen.
Die Fig. 11 ist ein Flußdiagramm, das die Konfiguration der Verarbeitungsroutine 32 zeigt. Mit der Routine 32 für den zweiten Reduktionsvorgang wird bezüglich eines jeden Elementes des ersten Reduktionsvorgangsergebnisvektors 104 (Schritt 11) eine Kandidatenzeichenfolge, die durch jedes Element bezeichnet ist, durch eine Programmvariable Tc ersetzt (Schritt 12), die Stichworte 144 bis 146 werden als Stichworte mit Tc als eine der der Suche unterliegenden Textzeichenfolge behandelt, mittels einer herkömmlichen Methode wie dem FSA-Verfahren, das im vorliegenden Fall verwendet wird, wird nach einer Zeichenfolge gesucht (vgl. Fig. 12C) (Schritt 13), Störquellen wie "KEISAN HOU" , die im ersten Reduktionsergebnisvektor 104 enthalten sind, werden entfernt, und es wird der zweite Reduktionsergebnisvektor 105 erstellt, gefolgt von einem Rücksprung (Schritt 14). Die Suche nach einer Zeichenfolge mittels des FSA-Verfahrens ist allgemein bekannt, und der Ablauf davon ist beispielsweise in CACM, 18, 6 (Juni 1975), Seiten 333 bis 340 beschrieben. Es erfolgt daher hier nur eine kurze Erläuterung.
Die Fig. 12 ist ein Diagramm zur Erläuterung des bekannten herkömmlichen FSA-Verfahrens, und die Fig. 12A ein Beispiel eines Zustandsübergangsdiagramms für Stichworte, das die Übergänge von Zeichenfolgen als Zustand (Zahlen in Kreisen) im Falle der Stichworte "HEI RETSU" , "KEISAN KI" und "SEIGYO HOUHOU" darstellt. Der anfängliche Zustand sei "0". Wenn das eingegebene Zeichen "HEI" ist, ändert sich der Zustand "0" zu "1"; wenn das Zeichen "KEI" ist, ändert sich der Zustand zum Zustand "3"; und wenn das Zeichen "SEI" ist, erfolgt eine Änderung zum Zustand "6". Wenn im Zustand "1" das nächste Zeichen "RETSU" ist, ändert sich der Zustand zu "2". In dem Fall, daß das eingegebene Zeichen in einer Form vorliegt, die in den Stichworten nicht vorkommt, oder in einer Reihenfolge, die sich von der Stichwortzeichenfolge unterscheidet, wird der Zustand natürlich auf "0" gesetzt.
Die Fig. 12B ist eine Zustandsübergangstabelle, die es ermöglicht, das Zustandsübergangsdiagramm der Fig. 12A bei der Signalverarbeitung anzuwenden.
Wie in der Fig. 12C gezeigt, wird bei dem FSA-Verfahren zur Initialisierung (1203) eine Zustandsübergangstabelle erstellt, es wird zu jedem Zeitpunkt, zu dem ein Textzeichen angelegt wird (1204), geprüft, ob der vorliegende Zustand der endgültige ist (die letzte Zeicheneingabe für ein Stichwort ist) (1205), und wenn es der endgültige Zustand ist, wird die Position des Textzeichens und die Stichwortlänge erzeugt (1206), es wird eine Zustandsübergangstabelle gemäß Fig. 12B aus dem vorliegenden Zustand und einem Textzeichen geprüft, um den Zustand zu bestimmen, zu dem zum nächsten Zeitpunkt ein Übergang zu erfolgen hat (1207, 1208, 1209, 1210 und 1211), der Zustand und die Textposition werden auf den neuen Stand gebracht (1112), und die entsprechenden Schritte werden für das nächste Textzeichen wiederholt, bis die Textzeichen alle verarbeitet sind.
Bei der Anwendung des erwähnten bekannten FSA-Verfahrens auf den zweiten Reduktionsvorgang der erfindungsgemäßen Zeichenfolgensuchmethode werden führende Zeichen von Kandidatenzeichenfolgen, die mit der Elementnummer und der Länge einer Kandidatenzeichenfolge (Anzahl von Zeichen: s) im Textvektor 102 verbunden sind, das heißt das Element des ersten Reduktionsergebnisvektors 104, als Programmvariable Tc verwendet, und die Zeichen von t bis t+s-1 werden aufeinanderfolgend vorgelegt. Die Verarbeitung bei der Zeichenfolgesuche für jedes Zeichen wird durch Ausführen der Programmschritte 1205 bis 1212 der Fig. 12C bewirkt.
Nach Vervollständigung der Routine 32 für den zweiten Reduktionsvorgang wird das beabsichtigte Endergebnis 105 erhalten, wodurch das Textsuchprogramm 106 abgeschlossen ist (Schritt 33).
(D) Modifikationen
(1) Obwohl erfindungsgemäß die Hauptspeichereinheit 101 als Einrichtung zum Speichern des Textvektors 102 verwendet wird, kann natürlich alternativ auch eine Magnetplatteneinheit oder eine Magnetbandeinheit verwendet werden, da der Text sequentiell ausgelesen wird.
(2) Auch kann der Zeichencode aus einem Byte anstelle von zweien wie bei der vorliegenden Ausführungsform bestehen. Im Falle eines Ein-Byte-Codes (wie z. B. dem EBCDIC-Code) steigt jedoch die Menge der beim ersten Reduktionsvorgang erfaßten Kandidatenzeichenfolgen an, wodurch die Belastung im zweiten Reduktionsvorgang erhöht werden kann. Der Grund dafür ist, daß es nur 26 englische Zeichen gibt, die in einem Ein-Byte-Code ausgedrückt werden können, weshalb mit einem Ansteigen von Stichwörtern die meisten englischen Zeichen unerwünschterweise in den Stichwörtern auftreten (Kanji-Zeichen, die einen Zwei- Byte-Code erfordern, erscheinen in den Stichwörtern im Vergleich zu der Anzahl aller Kanji-Zeichen in einem geringeren Ausmaß, auch wenn die Anzahl der Stichwörter ansteigt) und die Wahrscheinlichkeit sehr groß wird, daß viele Zeichenfolgen im Text als den Stichworten ähnlich erfaßt werden.
Dieses Problem wird dadurch vermieden, daß im Falle eines Ein-Byte-Code-Zeichens eine Folge von zwei Bytes als ein Zeichen behandelt wird. Das englische Wort "parallel" kann beispielsweise als Folge der sieben Zeichen "pa", "ar", "ra", "al", "ll", "le" und "el" betrachtet und in genau der gleichen Weise wie bei der vorliegenden Ausführungsform verarbeitet werden, wie es später noch erläutert wird.
Die Hashingschaltung 116 dient zur Verdichtung einer Eingabe mit zwei Byte auf 10 Bit. Eine Verdichtung auf eine kleinere Anzahl von Bits kann zwar die für den RAM 109 erforderliche Kapazität weiter verringern, es besteht jedoch dann eine höhere Wahrscheinlichkeit, daß die Ergebnisse des Hashings von verschiedenen Zeichen zum gleichen Wert führen (was im allgemeinen "Bump" genannt wird), woraus sich auch eine erhöhte Anzahl von Störquellen im ersten Reduktionsergebnis 104 ergibt.
(3) Obwohl die Erscheinungsartinformation bei der vorliegenden Ausführungsform vier Bit aufweist, kann sie zur Vereinfachung der Schaltung vereinfacht werden. Das 0-te Bit kann beispielsweise weggelassen werden (natürlich mit dem Risiko einer erhöhten Anzahl von Störquellen). Bei einer minimalen Konfiguration kann nur ein Bit vorgesehen werden, um anzuzeigen, ob das jeweilige Zeichen in einem Stichwort erscheint oder nicht. In einem solchen Fall wird der Effektivlängenzähler 114 nicht benötigt. Andererseits sollte in der Steuerlogikschaltungsgruppe 111 eine Anordnung getroffen werden, um den Koinzidenzlängenzähler 113 jedesmal beim Erscheinen von aufeinanderfolgenden Zeichen in einem Stichwort um +1 zu erhöhen, und um mit dem Auftreten eines Zeichens, das nicht in einem Stichwort erscheint, eine der Erfassung unterliegende Zeichenfolge als Kandidat zu erstellen, wenn der Koinzidenzlängenzähler 113 größer als die kürzeste Stichwortlänge m ist, oder um im entgegengesetzten Fall nichts zu erzeugen. Im Ergebnis ist die Schaltung wesentlich vereinfacht, was auch allgemein das Ausmaß von Störquellen erhöht.
(Zweite Ausführungsform)
Es erfolgt nun eine Erläuterung einer zweiten Ausführungsform zum Bewirken einer vektoriellen Operation bei einer Stichwortsuche gemäß der vorliegenden Erfindung.
(A) Übersicht
Auch bei der vorliegenden Ausführungsform beinhaltet die Verarbeitung die erste und zweite Reduktion. Die vektorielle Operation erfolgt derart, daß die einzelnen Vektordaten, das heißt jedes von den in gleichmäßigen Intervallen in einer Hauptspeichereinheit angeordneten Elementen mit hoher Geschwindigkeit pipelineartig auf die gleiche Weise verarbeitet werden. Das heißt, daß die Verarbeitung in eine Anzahl von Stufen aufgeteilt ist, und daß jedes Element sequentiell durch die Stufen verarbeitet wird. Wenn bei der Verarbeitung ein gegebenes Element durch eine gegebene Stufe läuft, wird das nächste Element parallel dazu einer unmittelbar vorhergehenden Bearbeitungsstufe unterworfen. Auf diese Weise wird eine Anzahl von Elementen parallel verarbeitet. Diese vektorielle Operation wird mittels eines normalen Vektorcomputers (wie einem S810 Array-Prozessor- System von Hitachi Ltd.) (nicht gezeigt) mit den Möglichkeiten der vier fundamentalen arithmetischen Operationen und einer Verschiebungsanweisung ausgeführt. Ein solches System umfaßt eine Anzahl von Vektorregistern, und die Vektordaten von einer Hauptspeichereinheit werden in einem geeigneten der Vektorregister gespeichert, so daß die jeweiligen Vektordaten einer vektoriellen Berechnung oder anderen Operationen unterworfen werden. Das System ist ferner dafür geeignet, verschiedene Bearbeitungen an verschiedenen Vektordaten parallel auszuführen, um eine weiter erhöhte Operationsgeschwindigkeit zu erzielen. In der folgenden Beschreibung werden Vektordaten verwendet, die Elementdaten aufweisen, die auf die einzelnen Zeichen einer Zeichenfolge in einem Text bezogen sind. Das kann beispielsweise Vektordaten beinhalten, die für jedes Zeichen jeweils einen Zeichencode und die Erscheinungsinformation oder die Position eines jeden Zeichens in der Zeichenfolge als Element aufweisen.
Die Fig. 13 ist ein PAD-Flußdiagramm (Programmanalyse-Diagramm) zur Darstellung der Abfolge beim ersten Reduktionsvorgang 1300 bei der Suche nach einer Kandidatenzeichenfolge gemäß der vorliegenden Ausführungsform. Die Erläuterung erfolgt unter Bezug auf die Fig. 14, die ein Beispiel für Vektordaten zeigt, die wie erforderlich verarbeitet werden. Die Vektordaten in der Fig. 14 werden entweder in der Hauptspeichereinheit oder einem Vektorregister gehalten. In dem Diagramm stellt jede longitudinale Abfolge von Quadraten einen Vektor dar, wobei jedes Quadrat ein Element angibt. Der Inhalt der einzelnen Elemente bezeichnet in dem unten erläuterten Beispiel einen Wert, und die Zahl an der linken Seite davon stellt die Elementnummer dar (Index genannt). Die folgende Erläuterung erfolgt an einem Fall, bei dem "SEARCH", "ALGORITHM" und "TEXT" als Stichworte und "SEARCH AND SORT ALGORITHM" als Text verwendet werden.
Es wird angenommen, daß im Diagramm die Nummer jedes einzelnen Elementes von 0 oder 1 beginnt, um das Verständnis zu erleichtern. Anstelle dessen kann die Elementnummer für alle Vektoren bei 0 beginnen.
(B) Erster Reduktionsvorgang (1) Übersicht
Im ersten Reduktionsvorgang wird ein Stichwortvektor KEY mit dem Code eines jeden Zeichens einer Stichwortgruppe der Fig. 14 als Element und ein Textvektor TEXT mit einem Zeichencode für jedes Symbol außer für Zeichen wie einem Leerzeichen und jedem Zeichen im Text als Element dazu verwendet, mittels vektorieller Verarbeitung des Textvektors TEXT eine Teilzeichenfolge ("Kandidatenzeichenfolge" genannt) zu finden, die wahrscheinlich mit einem der Stichwörter übereinstimmt, um dadurch einen Kandidatenlängenvektor LNG mit dem Kopfpositionsvektor TOP zu erzeugen, der als ein Element die Position (Index genannt) des führenden Zeichens einer jeden Teilzeichenfolge im Textvektor TEXT enthält, wobei der Kandidatenlängenvektor LNG als ein Element die Länge einer jeden Kandidatenzeichenfolge enthält. Das Programm für die Verarbeitung und jeder der zu verarbeitenden Vektoren sind in der Hauptspeichereinheit gespeichert und werden in die Vektorregister geladen, wie es zur Ausführung einer vektoriellen oder einer anderen Operation erforderlich ist.
In dem unten beschriebenen Fall werden als Kandidatenzeichenfolgen eine Anzahl von Zeichenfolgen erfaßt, von denen nur ein bestimmtes Zeichen im Stichwortvektor KEY enthalten ist, und von diesen Folgen werden jene entfernt, die eine Stichwortlänge haben, die kleiner als die kürzeste Stichwortlänge ist, um die Anzahl von Kandidatenzeichenfolgen zu verringern.
Im Falle der Fig. 14 werden zuerst die Zeichenfolgen "SEARCH", "A" (A von "AND"), "SORT" und "ALGORITHM" als Kandidatenzeichenfolgen aus dem Textvektor TEXT extrahiert, wobei die kürzeste Kandidatenzeichenfolge "A" eliminiert wird.
Wie bei der ersten Ausführungsform wird bei der vorliegenden Ausführungsform die erste Reduktion durch eine vektorielle Verarbeitung bewirkt. Da jedoch ein normaler Vektorcomputer verwendet wird, der keine besondere Suchschaltung wie der bei der ersten Ausführungsform verwendete Computer aufweist, unterscheidet sich die vorliegende Ausführungsform von der ersten Ausführungsform darin, daß zur ersten Reduktion verschiedene Vektorverarbeitungsvorgänge kombiniert werden, um von den bei einem solchen Computer ausführbaren verschiedenen Vektoranweisungen vorteilhaft Gebrauch zu machen. Die Verarbeitungsvorgänge in diesem Computer werden im folgenden kurz beschrieben.
Zuerst wird festgestellt, ob die einzelnen Zeichen im Textvektor TEXT im Stichwortvektor KEY enthalten sind. Diese Entscheidung kann für jedes Zeichen unabhängig von den anderen Zeichen erfolgen. Um diese Entscheidung durch eine vektorielle Verarbeitung zu bewirken, wird vorab auch ein Erscheinungsartvektor KWD, der das jeweilige, in einem Stichwort enthaltene Zeichen anzeigt, erstellt und geeignet verwendet. Zweck und Vorteil der Verwendung dieses Vektors sind jeweils die gleichen wie bei der ersten Ausführungsform. Als Ergebnis dieser Entscheidung wird in einem Erfassungszustandsvektor MSK1, der so erstellt wird, durch einen Wert "1" oder "0" angezeigt, ob die einzelnen Zeichen im Textvektor im Stichwortvektor KEY enthalten sind. Eine Folge von Werten "1" in diesem Erfassungszustandvektor MSK1 zeigt die Zeichenpositionen einer Zeichenfolge (Kandidatenzeichenfolge) an, die mit einem gegebenen Stichwort im Textvektor TEXT übereinstimmt. Unter Verwendung dieses Erfassungszustandvektors MSK1 wird die Elementnummer des Kopfzeichens einer jeden Kandidatenzeichenfolge erfaßt und als ein Element des Kopfpositionsvektors verwendet. Auf ähnliche Weise wird die Elementnummer des letzten Zeichens einer jeden Kandidatenzeichenfolge erfaßt und als Element eines Endpositionsvektors BTM verwendet. Im nächsten Schritt wird die Länge einer jeden Kandidatenzeichenfolge aus diesen beiden Vektoren TOP und BTM bestimmt, und Kandidatenzeichenfolgen, die kleiner als die kürzeste Stichwortlänge der Stichwortgruppe sind, werden beseitigt, wodurch der Kopfpositionsvektor TOP für die verbleibenden Kandidatenzeichenfolgen und der Kandidatenlängenvektor LNG mit der Länge einer jeden Kandidatenzeichenfolge als Element erstellt werden. Dies stellt das Ergebnis der ersten Reduktion dar.
Gemäß dieser Ausführungsform wird jeder der erwähnten Verarbeitungsschritte vektoriell mittels einer Vektorverarbeitungsanweisung (Pipeline-Verarbeitung) ausgeführt. Einige verschiedene dieser Verarbeitungsschritte werden des weiteren parallel zu den anderen ausgeführt. Das heißt, daß als Ergebnis der ersten vektoriellen Verarbeitung eines ersten Vektors ein zweiter Vektor erzeugt wird. Bei dem Vorgang des Bewirkens der zweiten vektoriellen Verarbeitung für den zweiten Vektor wird andererseits der zweite Vektor der zweiten vektoriellen Verarbeitung unterworfen, nachdem alle Elemente des zweiten Vektors ermittelt wurden, daß jedoch, sobald wenigstens eines der Elemente des zweiten Vektors erzeugt wurde, für das jeweilige Element mit der zweiten vektoriellen Verarbeitung begonnen wird. Diese Technik ist als "Verkettung" der vektoriellen Verarbeitung bekannt. Die Operation einer dritten vektoriellen Verarbeitung eines dritten Vektors, der sich vom ersten und zweiten Vektor total unterscheidet, parallel zu der ersten und zweiten vektoriellen Verarbeitung ist mit manchen Vektorcomputern möglich.
Die betrachtete Ausführungsform weist das Merkmal auf, daß der erste Reduktionsvorgang durch eine parallele Verarbeitung, die vektorielle Verarbeitung genannt wird, in der Geschwindigkeit grundlegend erhöht ist. Gemäß der vorliegenden Ausführungsform ist daher die Geschwindigkeit des ersten Reduktionsvorganges durch die parallele Verarbeitung der verschiedenen vektoriellen Verarbeitungsschritte als weiteres Merkmal erhöht.
Das Erhöhen der Geschwindigkeit der vektoriellen Verarbeitung in der oben erwähnten Weise ist auch auf den zweiten Reduktionsvorgang anwendbar.
(2) Detaillierte Verarbeitung
Die Verarbeitung wird nun im Detail beschrieben.
(2-1) Initialisierungsroutine 1301
Nach dem Einschalten einer Routine für den ersten Reduktionsvorgang wird eine Initialisierung des Systems bewirkt. Dabei wird die Länge des kürzesten der Stichwörter (4 für "TEXT", das im Falle der Fig. 14 das kürzeste Stic 49273 00070 552 001000280000000200012000285914916200040 0002003991231 00004 49154hwort ist) in die kürzeste Stichwortlänge MINK eingesetzt, die als Programmvariable vorgesehen ist, es werden alle Eingaben des Erscheinungsinformationsvektors KWD auf Null gesetzt und es wird die Länge des Textvektors TEXT (25 im vorliegenden Fall) in die Textlänge N eingesetzt, die als Programmvariable vorgesehen ist (Schritt 1301).
Diese Längendaten werden zum Zeitpunkt des Anlegens der Textzeichen und der Stichwortzeichen erhalten und in (nicht gezeigten) Registern gespeichert.
Des weiteren wird das 0-te Element MSK1(0) am Kopf des Erfassungszustandsvektors MSK1 und das (N+1)-te Element MSK1(N+1) davon auf Null gesetzt. Dies bezieht sich auf einen Schritt (1306) zur Identifizierung einer Kandidatenzeichenfolge aus dem Erfassungszustandvektor MSK1, wie es genauer später erläutert wird. Damit ist der Initialisierungsschritt beendet (Schritt 1301).
(2-2) Registrierung von Zeichen, die für Stichwörter verwendet werden (Schritte 1302 bis 1304)
Im nächsten Schritt wird ein Erscheinungsartvektor KWD erstellt, der die Identifizierung eines der alphanumerischen Zeichen angibt, die im Stichwortvektor KEY enthalten sind. Gemäß der vorliegenden Ausführungsform wird angenommen, daß jedes Zeichen durch einen 8-Bit-EBCDIK-Code dargestellt wird. Der Erscheinungsartvektor KWD beinhaltet so viele Elemente wie es alphanumerische Zeichen gibt (Gesamtzahl (= 256) der Zeichen, die im vorliegenden Beispiel durch einen 8-Bit-Code dargestellt werden). Jedes Zeichen weist entsprechend dazu ein Element mit der gleichen Nummer als Code auf, das mit dem Zeichen verknüpft ist. Der Wert eines solchen Elementes ist 1, wenn das entsprechende Zeichen im Stichwortvektor KEY enthalten ist, und 0, wenn es nicht enthalten ist. Auf diese Weise wird ein Zeichen registriert, das in einem der Stichwörter erscheint. Das heißt, daß sequentiell ein Zeichencode Cq (mit der Bedeutung des Codes des q-ten Zeichens in einem Stichwort) im Stichwortvektor KEY für jedes Stichwort (Schritt 1302) abgerufen wird (Schritt 1303), und daß im Erscheinungsartvektor KWD in einer dem Code Cq entsprechenden Eingabe 1 eingesetzt wird. Dieser Vorgang wird mit Bezug auf ein bestimmtes Beispiel in der Fig. 14 untersucht. Bezüglich des ersten Zeichens S des ersten Stichwortes "SEARCH" des Stichwortvektors weist das Zeichen S "E2(16)" als Zeichencode (EBCDIK-Code) oder 226 in dezimaler Darstellung auf. Im Ergebnis wird das Element des 226-ten Einganges des Erscheinungsartvektors KWD auf "1" gesetzt. Dies ist auch der Fall für die anderen Stichwortzeichen, für die "1" in einer jedem Zeichen entsprechenden Eintragung eingesetzt wird. Wie oben erläutert werden alle Elemente des Erscheinungsartvektors KWD im Initialisierungsschritt 1301 initialisiert, weshalb die entsprechende Information für ein Zeichen, das nicht in einem Stichwort erscheint, "0" bleibt. Auch bleibt der Wert des entsprechenden Elementes im Erscheinungsartvektor KEY bei diesem Verfahren "1", unabhängig davon, ob ein gegebenes Zeichen gleichzeitig an zwei Stellen im gleichen Stichwort oder in verschiedenen Stichworten auftritt.
(2-3) Feststellung über das Auftreten eines Textzeichens in den Stichwörtern (Schritt 1305)
Nach der vollständigen Erstellung des Erscheinungsartvektors KWD im Schritt 1302 erfolgt eine Entscheidung, um zu bestimmen, ob ein im Erscheinungsartvektor KWD registriertes Zeichen mit den Zeichen im Text übereinstimmt, wodurch ein Erfassungszustandvektor MSK1 erzeugt wird. Das heißt, daß jedes der Elemente TEXT(I) des Textvektors TEXT ausgelesen wird, daß auf der Basis des Wertes (Zeichencodes) des so ausgelesenen Elementes (jedes Element bildet einen Ein-Zeichen-Code des Textes) ein entsprechendes Element im Erscheinungsartvektor KWD ausgelesen wird, und daß die Elementnummer I des jeweiligen Zeichens (das Element MSK1(I) entsprechend dem Element im Textvektor TEXT) im Erfassungszustandvektor MSK1 gespeichert wird (Schritt 1305). Dieser Vorgang stellt die Verschiebung eines Elementes des Erscheinungsartvektors zu einem Element des Erfassungszustandvektors auf der Basis einer indirekten Adresse dar, er wird durch eine vektorielle Verarbeitung unter Verwendung von Anweisungen realisiert, die in einem normalen Vektorcomputer enthalten sind. Als Ergebnis dieses Vorganges ist im I-ten Element des Erfassungszustandvektors MSK1 die Information gespeichert, ob das Zeichen des I-ten Elementes des Textvektors TEXT im Stichwortvektor KEY erscheint (im vorliegenden Fall "1", wenn es erscheint, und "0", wenn es nicht erscheint), in der Form einer Gegenüberstellung der Elemente. Im Falle der Fig. 14 weist beispielsweise die Zeichenfolge "SEARCH", die die ersten bis sechsten Elemente des Textvektors TEXT darstellt, Zeichen auf, von denen jedes im Stichwort enthalten ist, weshalb die in den ersten bis sechsten Elementen des Erfassungszustandsvektors MSK1 gespeicherten Werte gleich "1" sind. Auf ähnliche Weise wird festgestellt, daß das achte Element "A", die zwölften bis fünfzehnten Elemente "SORT" und die 17-ten bis 25-ten Elemente "ALGORITHM" des Textvektors TEXT nur aus Zeichen bestehen, die im Stichwortvektor KEY enthalten sind. Bei dem Vorgang werden auch Zeichenfolgen ausgewählt, die nicht in den Stichworten enthalten sind, wie "A" und "SORT". MSK1 wird übrigens aus später noch erwähnten Gründen mit 0-ten und (N+1)-ten Elementen erstellt, die nicht den Elementen des Textvektors TEXT entsprechen.
(2-4) Erfassung von Kandidatenzeichenfolgen, die nur Zeichen enthalten, die in Stichwörtern erscheinen (Schritte 1306 bis 1314)
In den folgenden Schritten wird dieser Erfassungszustandvektor MSK1 abgetastet, und es wird eine Kandidatenzeichenfolge erfaßt, die wahrscheinlich mit einem der Stichwörter übereinstimmt, in denen die Zeichen, die im Stichwortvektor KEY auftreten, eine sukzessive Form annehmen (das heißt jene Elemente mit dem Wert 1 des Erfassungszustandvektors, die in Folge auftreten), wodurch ein Ergebnisvektor (TOP, LNG) mit einem Zahlenpaar für die Nummer TOP und die Länge LNG des Kopfelementes davon als Element erzeugt wird. In dem unten beschriebenen, betrachteten Fall werden zur Verringerung der Anzahl von Kandidatenzeichenfolgen jene erfaßten Kandidatenzeichenfolgen, die eine Länge haben, die kleiner ist als die kürzeste Stichwortlänge (im betrachteten Fall 4), aus den Kandidaten ausgeschlossen. Dieser Vorgang wird genauer im folgenden erläutert.
(2-4-1) Erfassung der Begrenzung von Kandidatenzeichenfolgen (Schritt 1306)
Zuerst werden jene Elemente des Erfassungszustandvektors MSK1 erfaßt, die gegenüber benachbarten Elementen einen davon verschiedenen Wert haben. Das heißt, daß die Differenz zwischen einem Element MSK1(I) (I: Elementnummer) des Erfassungszustandvektors MSK1 und einem unmittelbar vorhergehenden Element MSK1(I-1) festgestellt und dieser Wert im I-ten Element MSK2(I) eines Begrenzungspositionsvektors MSK2 gespeichert wird. Dieser Vorgang wird vektoriell mittels einer normalen Vektoranweisung bewirkt, die die Differenz zwischen dem Erfassungszustandvektor MSK1 und einem Vektor MSK1′ (Fig. 14) mit dem Element MSK1(I-1) als I-tem Element feststellt. Im Initialisierungsschritt (1305) wird auch angenommen, daß die Werte des 0-ten und (N+1)-ten Elementes des Erfassungszustandvektors MSK1 Null sind, um auf den Schritt 1306 vorzubereiten. Wie oben erläutert werden die Elemente des Erfassungszustandvektors 1306 und des Begrenzungspositionsvektors MSK2 im wesentlichen einander gegenüber verarbeitet. In dem Fall, daß eine Folge von Elementen im Erfassungszustandvektor MSK1 nur einen einzigen Wert aufweist, sind die Werte der Elemente MSK2(I) des Begrenzungspositionsvektors MSK2, die dem führenden Element MSK1(I) (I: Elementnummer) der Folge von aufeinanderfolgenden Elementen entsprechen, gleich 1. Auf ähnliche Weise ist das Element MSK2(J+1), das unmittelbar auf das Element MSK2(J) des Begrenzungspositionsvektors MSK2 folgt und dem Endelement MSK1(J) (J: Elementnummer) entspricht, in einer Folge von aufeinanderfolgenden Elementen gleich -1. Im Falle der Fig. 14 ist die Nummer des gespeicherten Elementes des führenden Zeichens "S" im Wort "SEARCH" des Textvektors TEXT gleich 1, während das erste Element des Begrenzungspositionsvektors MSK2 den Wert 1 annimmt. Die Nummer des (6+1)-ten Elementes des Begrenzungspositionsvektors MSK2 ist -1. Im Falle der Fig. 14 zeigt demnach der Begrenzungspositionsvektor MSK2 an, daß das erste, achte und zwölfte Element des Textvektors TEXT die vier Kandidatenzeichenfolgen (SEARCH, A, SORT und ALGORITHM) anführen, und daß das sechste, achte und 25-te Element jeweils am Ende der vier Kandidatenzeichenfolgen steht.
(2-4-2) Erfassung der Position von führenden und letzten Elementen von Kandidatenzeichenfolgen (Schritte 1307 bis 1310)
Wie aus obigem ersichtlich, ist die Position eines Elementes, dessen Wert im Begrenzungspositionsvektor MSK2 nicht Null ist, auf die Position des führenden und abschließenden Elementes einer Folge mit einer Abfolge von Elementen des Wertes 1 bezogen, die im Erfassungszustandvektor MSK1 erscheinen. Wie oben erläutert, entsprechen gegenüberliegend auch die Elemente des Erfassungszustandvektors und des Textvektors TEXT offensichtlich einander. Wenn der Wert eines jeden Elementes MSK2(I) des Begrenzungspositionsvektors MSK2 gleich 1 ist, ist daher das I-te Element des Textvektors TEXT, das dem entspricht, das führende Element einer Kandidatenzeichenfolge. Unter Ausnutzung dieser Tatsache wird die Elementnummer I, die die Position des führenden Elementes der Kandidatenzeichenfolge anzeigt, durch die Vorgänge in den Schritten 1307 und 1309 in der Hauptspeichereinheit als Element des Kopfpositionsvektors TOP gespeichert.
Im nächsten Vorgang ist, wenn der Wert des I-ten Elementes des Begrenzungspositionsvektors MSK2 gleich -1 ist, das (I-1)-te Element des Textvektors TEXT das abschließende Element der Kandidatenzeichenfolge. Unter Ausnutzung dieser Tatsache werden die später noch beschriebenen Schritte 1308 und 1310 ausgeführt, um die Elementnummer I, die die Position eines Elementes angibt, das unmittelbar auf das abschließende Element der Kandidatenzeichenfolge folgt, in der Hauptspeichereinheit als Element des Endpositionsvektors BTM zu speichern.
Im Falle der Fig. 14 ist beispielsweise das erste Element des Begrenzungspositionsvektors MSK2 gleich 1, weshalb "1" im ersten Element des Kopfpositionsvektors TOP gespeichert wird, während das siebte Element des Begrenzungspositionsvektors MSK2 gleich -1 ist und daher im ersten Element des Endpositionsvektors BTM "7" gespeichert wird. Im Falle der Fig. 14 zeigt der Kopfpositionsvektor TOP als Ergebnis davon an, daß das erste Element (S), das achte Element (A), das zwölfte Element (S) und das 17-te Element des Textvektors TEXT die Nummern der führenden Elemente der vier Kandidatenzeichenfolgen (SEARCH, A, SORT und ALGORITHM) darstellen. Auf ähnliche Weise zeigt der Endpositionsvektor BTM an, daß das sechste, achte, 15-te und 25-te Element des Textvektors TEXT jeweils die Nummer der nachfolgenden Elemente der vier Kandidatenzeichenfolgen darstellt.
Mit Bezug auf die Schritte 1307 und 1309 werden die diesbezüglich tatsächlich ausgeführten vektoriellen Verarbeitungsvorgänge erläutert. Der Erfassungszustandvektor MSK1 wird gemäß einer Vektorvergleichsanweisung mit einem Skalarwert 1 verglichen, um einen Kopfpositionsmaskenvektor M1 zu erzeugen (Schritt 1307). Im Kopfpositionsmaskenvektor M1 ist an einer Stelle, die dem Element mit dem Wert 1 im Erfassungszustandvektor MSK1 entspricht, eine "1" gespeichert. Unter Verwendung des Kopfpositionsmaskenvektors M1 werden dann die Elemente des Positionsvektors POS, deren Maskenwert 1 ist, im Kopfpositionsvektor TOP gespeichert (Schritt 1309). Dieser Schritt kann ebenfalls mittels einer normalen Vektoranweisung zum Verschieben von Vektorelementen auf der Basis einer indirekten Adresse realisiert werden. Auch die Schritte 1308 und 1310 sind durch eine normale Vektoranweisung ausführbar.
Als ein Ergebnis der obigen Schritte wird die Elementnummer des führenden Zeichens einer jeden Kandidatenzeichenfolge im Textvektor TEXT im Kopfpositionsvektor TOP gespeichert, und die Elementnummer, die der letzten Nummer in der jeweiligen Zeichenfolge folgt, im Endpositionsvektor BTM. Dieser Schritt des Erfassens der Kopf- und Endpositionen einer Kandidatenzeichenfolge dient zum Feststellen eines bestimmten Elementwertes (das heißt "1" oder "-1") mittels Durchsuchen des Begrenzungspositionsvektors MSK2, und es wird durch unabhängige Vektoranweisungen parallel eine Anzahl von solchen Schritten für bestimmte Elemente ausgeführt. Auch können bei der Verarbeitung der Vektoranweisung zur Erzeugung eines Begrenzungsvektors MSK2 aus einem Erfassungszustandvektor MSK1 (Schritt 1306) die Schritte 1307, 1308, 1309 und 1310, die aufeinanderfolgende Vektoranweisungen ergeben, jedesmal bei der Erzeugung eines Elementwertes des Begrenzungspositionsvektors MSK2 ausgeführt werden. Im Ergebnis ist es möglich, die Vektoranweisungsfolge für den Schritt 1306 mit denjenigen für die Schritte 1307 bis 1310 zu überlappen (verketten), wodurch eine Hochgeschwindigkeitsverarbeitung realisiert wird.
(2-4-3) Elimination von Kandidatenzeichenfolgen mit weniger als der kürzesten Stichwortlänge (Schritte 1311 bis 1314)
Von den in den vorhergehenden Schritten erhaltenen Kandidatenzeichenfolgen werden jene Zeichenfolgen eliminiert, die kürzer sind als die kürzeste Stichwortlänge MINKL (im vorliegenden Fall 4). Zuerst wird dazu jedes Element des Endpositionsvektors BTM und das entsprechende Element des Kopfpositionsvektors TOP voneinander subtrahiert (Schritt 1311, der durch eine normale Vektoranweisung ausführbar ist). Wenn die sich ergebende Differenz einen Wert annimmt, der größer ist als die kürzeste Stichwortlänge MINKL (Schritt 1312), wird sie als eine Kandidatenzeichenfolgenlänge zu einem Kandidatenlängenvektor LNG übertragen und gleichzeitig die Kopfposition der entsprechenden Kandidatenzeichenfolge zum Kopfpositionsvektor TOP′ (Schritt 1313). Wenn die Differenz zwischen dem Element des Endpositionsvektors BTM und dem des Kopfpositionsvektors TOP kleiner ist als die kürzeste Stichwortlänge MINKL, wird andererseits die entsprechende Kandidatenzeichenfolge nicht verwendet, da sie offensichtlich mit dem Stichwort nicht übereinstimmt (Schritt 1314). Folglich werden beispielsweise im Falle der Fig. 14 die Elementnummern 1, 12 und 17 für die Wörter "SEARCH", "SORT" und "ALGORITHM" im Textvektor TEXT im Vektor TOP′ gehalten, wobei die Längen 6, 4 und 9 der jeweiligen Kandidatenzeichenfolgen im Kandidatenlängenvektor LNG festgehalten werden. Bezüglich der Zeichenfolge "A" im Textvektor TEXT, die durch die zweiten Elemente des Endpositionsvektors BTM und des Kopfpositionsvektors TOP bezeichnet wird, ist jedoch deren Länge gleich 1 und damit kleiner als die kürzeste Stichwortlänge MINKL (= 4), weshalb der Wert für die Elementnummer, die diese Zeichenfolge anzeigt, nicht zu dem Kopfpositionsvektor TOP′ oder dem Kandidatenlängenvektor LNG geführt wird. Auf diese Weise macht die Vorgabe der kürzesten fortlaufenden Länge MINKL zur Prüfung die Erfassung einer Kandidatenzeichenfolge möglich, die einem Stichwort am nächsten kommt. Damit ist der erste Reduktionsvorgang beendet.
(C) Zweiter Reduktionsvorgang (1) Übersicht
Auch bei der vorliegenden Ausführungsform wird nach dem ersten Reduktionsvorgang der zweite Reduktionsvorgang ausgeführt. Bei der vorliegenden Ausführungsform wird jedoch zur Erhöhung der Verarbeitungsgeschwindigkeit im Vergleich zur ersten Ausführungsform das herkömmliche bekannte FSA-Verfahren vektoriell ausgeführt. Im allgemeinen erfordert die Anwendung vektorieller Verarbeitungsschritte die Erfüllung der im folgenden genannten Bedingungen.
Zuallererst ist es erforderlich, daß jedes Element desselben Vektors unabhängig von den anderen Elementen verarbeitbar ist. Insbesondere muß ein gegebenes Element verarbeitbar sein, bevor das Ergebnis der Verarbeitung anderer Elemente erhalten wird.
Es ist möglich, in der unten beschriebenen Weise das FSA- Verfahren in vektorieller Art auszuführen, wenn eine Textzeichenfolge derart in eine Anzahl von Teilzeichenfolgen aufgeteilt wird, daß ein gegebenes Stichwort, das in der Textzeichenfolge enthalten ist, nicht aufgeteilt in verschiedenen Teilzeichenfolgen enthalten ist, und daß ein gegebenes Zeichen in der Textzeichenfolge nicht gleichzeitig in zwei oder mehr verschiedenen Teilzeichenfolgen enthalten ist. Jede Kandidatenzeichenfolge, die als Ergebnis der oben beschriebenen ersten Reduktion gemäß der ersten Ausführungsform erhalten wird, erfüllt diese Teilungsbedingung.
Das heißt, daß in einem ersten Eingangsvektor, der als Element das Kopfelement dieser Teilzeichenfolgen aufweist, und in einem zweiten Eingangsvektor, der als Element ein zweites Element der Teilzeichenfolgen enthält, der Bestimmungszustand des Überganges für ein Element in jedem Vektor unabhängig von den anderen Elementen im gleichen Vektor bestimmt werden kann. Im Ergebnis erfüllen diese Eingangsvektoren die oben erwähnte Bedingung. Es ist somit möglich, den Übergangs-Endzustand mittels des FSA-Verfahrens vektoriell zu erfassen.
Diese Verarbeitung wird im folgenden kurz erläutert.
Zuerst wird aus den Stichworten ein Übergangszustandbestimmungsvektor FSATBL (Fig. 17) erstellt, der die Daten in Vektorform enthält, die einer Zustandsübergangstabelle entsprechen. Wenn bei der Verarbeitung ein gegebenes Zeichen als Eingabe zugeführt wird und jede Teilzeichenfolge in einem gegebenen Zustand ist, wird die Bestimmungsnummer des Zustandes für die jeweilige Teilfolge an einer Position gespeichert, die durch eine Kombination des jeweiligen Bestimmungszustandes und des jeweiligen Eingangszeichens festgelegt ist. Dann wird ein Zustandsvektor STATE erstellt, der als Elemente die Nummern der Zustände einer jeden Teilzeichenfolge (Kandidatenzeichenfolge) enthält. Im nächsten Schritt wird ein Eingabezeichenvektor erzeugt, der das erste Zeichen einer jeden Teilzeichenfolge (Kandidatenzeichenfolge) enthält. Auf der Basis dieser drei Vektoren wird der Vorgang zur Festlegung der Bestimmung eines Zustandsüberganges für jede Teilzeichenfolge mit einem der Teilzeichenfolge (Kandidatenzeichenfolge) zugeführten Zeichen in vektorieller Weise ausgeführt. Das heißt, daß in Übereinstimmung mit dem Wert des Elementes (Zustandsnummer) des Zustandsvektors STATE für jede Teilzeichenfolge und einen einzigen Zeichencode jede Teilzeichenfolge auf den Zustandsübergangsbestimmungsvektor FSATBL Bezug genommen wird, und daß die ausgelesene Nummer des Bestimmungszustandes zum Wiedereinschreiben der Zustandsnummer für jede Teilzeichenfolge im Zustandsvektor verwendet wird. Auf diese Weise wird die Zustandsübergangsverarbeitung für ein Zeichen einer jeden Teilzeichenfolge (Kandidatenzeichenfolge) in vektorieller Art realisiert. Nach der Zustandsübergangsverarbeitung eines Zeichens wird ein zweites Zeichen einer jeden Teilzeichenfolge (Kandidatenzeichenfolge) dazu verwendet, einen Eingabezeichenvektor zu erstellen, und die Zustandsübergangsverarbeitung wird wiederholt. Diese Verarbeitungsschritte werden wiederholt, bis das letzte Zeichen einer Teilzeichenfolge erreicht ist.
(2) Details der Verarbeitung
Es wird nun die Verarbeitung 1501 zur zweiten Reduktion gemäß der vorliegenden Ausführungsform in Übereinstimmung mit dem in PAD-Form gezeigten Flußdiagramm der Fig. 15 und auch mit Bezug auf den gemäß Fig. 17 erforderlichen Vektordatenfluß im Detail erläutert. Der Inhalt der Vektordaten in der Fig. 17 entspricht den in der Fig. 14 gezeigten Textzeichenfolgen und Stichwortzeichenfolgen.
Die Details dieser Operation werden wie folgt beschrieben:
(2-1) Zuführung der Parameter
Zuerst wird, wie in der Fig. 15 gezeigt, eine vektorisierte FSA-Verfahrensbearbeitungsroutine 1501 von einem Textsuchprogramm (nicht gezeigt) aufgerufen und gestartet. In der Fig. 17A ist eine Anzahl von Parametern dargestellt, die beim Starten der vektorisierten FSA-Verarbeitungsroutine von der aufrufenden Seite geliefert werden. Insbesondere schließen die so gelieferten Daten einen Stichwortvektor KEY, einen Textvektor TEXT, einen Kopfpositionsvektor TOP und einen Kandidatenvektor LNG ein, die die Position bzw. die Länge einer Kandidatenzeichenfolge darstellen, und auch einen Zustandsvektor STATE mit einer Zustandsnummer für jede Teilzeichenfolge als Elemente. In dem Prozeß werden die beiden Vektoren TOP und LNG, die eine Kandidatenzeichenfolge angeben, in der Form der Kopfelementnummer und der Zeichenfolgelänge für jede der drei Teilzeichenfolgen "SEARCH", "SORT" und "ALGORITHM" gespeichert, die das Ergebnis des ersten Reduktionsvorganges darstellen. Ebenso wird der Initialwert 0 für jedes Element des Zustandsvektors STATE gespeichert.
Des weiteren werden als Vektoren zum Speichern der Position bzw. Länge einer Zeichenfolge (die mit einem Stichwort übereinstimmt), die als Ergebnis des zweiten Reduktionsvorganges erhalten werden, ein Suchergebnispositionsvektor RTOP und ein Suchergebnislängenvektor RLNG vorgegeben. In der Fig. 17 sind die Werte für das auf der vorliegenden Ausführungsform basierende Endergebnis für die Elemente der Vektoren RTOP und RLNG dargestellt, obwohl diese Werte zum Zeitpunkt des Startens der Verarbeitungsroutine 1501 auf Null stehen. Es wird zwecks Vereinfachung angenommen, daß die vorliegende Ausführungsform eine ausreichende Länge zum Festhalten der Ergebnisse des Verarbeitens anderer Vektoren hat.
Von den in der Fig. 17A gezeigten Parametern sind der Zustandsübergangsvektor FSATBL und der Akzeptanzvektor ACCPT interne Variable der vorliegenden Routine 1501 und werden nicht als Parameter ausgegeben.
(2-2) Erzeugung des Zustandsübergangsbestimmungsvektors, des Akzeptanzvektors usw. (Schritt 1502)
Die vektorisierte FSA-Verfahrensbearbeitungsroutine 1501, in der die obigen Parameter zugeführt wurden, bewirkt zuerst eine Initialisierung (Schritt 1502). Der Zustandsübergangsbestimmungsvektor FSATBL und der Akzeptanzvektor ACCPT werden durch das Stichwort KEY erzeugt. Des weiteren wird die Vektorlänge des Kopfpositionsvektors TOP als Programmvariable L eingesetzt. Das heißt, daß die Programmvariable L auf der Nummer (bei der vorliegenden Ausführungsform L=3) der Kandidatenzeichenfolgen (Teilzeichenfolgen) eingestellt wird, die den Gegenstand der Reduktion darstellen.
Die Fig. 16 ist ein Diagramm zur Erläuterung des erwähnten Zustandsübergangsbestimmungsvektors FSATBI und des Akzeptanzvektors ACCPT.
Die Fig. 16A zeigt ein Zustandsübergangsdiagramm, das für die drei Stichwörter "SEARCH", "ALGORITHM" und "TEXT" vorgesehen ist. Die Fig. 16B und C stellen Tabellen dar, die auf der Basis des Zustandsübergangsdiagrammes 16A erstellt wurden, um die Beziehungen zwischen dem Zustand, den Eingangszeichen und dem Bestimmungswert des Zustandsüberganges darzustellen. In diesen Tabellen bilden die Bestimmungswerte der Zustandsübergänge die Vektordaten FSATBL. Der Zustandsübergangsbestimmungsvektor FSATBL wird mit sovielen Eintragungen vorgesehen, wie Einstellungen der Eingabezeichencodes für jeden Zustand möglich sind (im vorliegenden Fall 2⁸ = 256 Möglichkeiten, da der Eingabezeichencode jener von 1B ist), wie in der Fig. 16B gezeigt. Im Ergebnis ist die Anzahl der Elemente des Zustandsübergangsbestimmungsvektors FSATBL gleich der Anzahl von Zuständen (im vorliegenden Fall 20 × 256 = 5120). Wenn die Zeichencodes als ganzzahlige 8-Bit-Zahlen dargestellt werden, entspricht in aufsteigender Ordnung jede von ihnen der Eintragung für den jeweiligen Zustand. In jedem Element des Vektors FSATBL ist die Bestimmungsnummer eines Überganges für ein entsprechendes Zeichen, das unter einem entsprechenden Zustand zugeführt wird, gespeichert. Zum Beispiel ist im 193. Element (der EBCDIC-Code von "A" ist in sedezimaler Darstellung C1 und in dezimaler Darstellung 193) des Zustandsübergangsbestimmungsvektors FSATBL die Übergangsbestimmungsnummer 7 für das Zeichen "A", das im Zustand 0 zugeführt wird, gespeichert. Auch der Akzeptanzvektor ACCPT der Fig. 16C dient zur Prüfung, ob ein Zustand als Stichwort- Erfassungszustand akzeptabel ist. Das heißt, daß der Akzeptanzvektor ACCPT mit Eintragungen versehen ist, die verschiedenen Zuständen zugeordnet sind, und daß darin die festgestellte Länge eines Stichwortes in einem akzeptablen Zustand und in einem nicht akzeptablen Zustand "0" gespeichert ist. Mit Bezug zu der Fig. 16 ist zum Beispiel der Wert eines Elementes des Akzeptanzvektors ACCPT, der dem Zustand 6 für das erfaßte Stichwort "SEARCH" entspricht, gleich 6, wodurch angezeigt wird, daß eine Zeichenfolge mit einer Anzahl von 6 Zeichen als Stichwort erfaßt wurde. Auf ähnliche Weise werden die Werte des 15. und 19. Elementes auf die Längen 9 und 6 von ALGORITHM bzw. TEXT eingestellt.
(2-3) Zur Festlegung des Übergangsbestimmungszustandes einer Kandidatenzeichenfolge für jedes Zeichen in der jeweiligen Kandidatenzeichenfolge
Gemäß Fig. 15 werden die Schritte 1503 und darunter zum obigen Zweck für jede Kandidatenzeichenfolge wiederholt.
(2-3-1) Zur Feststellung des Zustandes nach dem Übergang für die erste Eingabe für jede Kandidatenzeichenfolge
Im ersten Schritt wird ein Eingabezeichenvektor INC11 erstellt, der das führende Zeichen einer jeden der drei Kandidatenzeichenfolgen im Textvektor TEXT enthält (Schritt 1504). Im betrachteten Fall enthält der Vektor INC11 die führenden Zeichen S, S und A der drei Kandidatenzeichenfolgen. Dieser Vorgang wird auf der Basis einer indirekten Adresse durch eine Vektorverschiebungsanweisung realisiert. Im nächsten Schritt wird jedes Element des sich ergebenden Eingabezeichenvektors INCH und des entsprechenden Elements des Zustandsvektors STATE (im betrachteten Fall haben beide den Wert Null) dazu verwendet, um das entsprechende Element des Zustandsvektors STATE mit der Nummer (im vorliegenden Fall 1, 1 und 7) des Bestimmungszustandes einer jeden Kandidatenzeichenfolge mit Bezug auf den Zustandsübergangsbestimmungsvektor FSATBL auf den neuesten Stand zu bringen (Schritt 1505). Dieser Schritt ist durch eine normale Vektoranweisung ausführbar (eine Verschiebungsprozedur oder dergleichen auf der Basis einer Integration oder Summenberechnung oder indirekten Adresse).
Im nächsten Schritt wird angesichts der Tatsache, daß der Zustandsübergang für das führende Zeichen durch die Schritte 1504 und 1505 für jede Kandidatenzeichenfolge beendet ist, der Wert für jedes Element des Kopfpositionsvektors TOP um eins erhöht, während der Wert für jedes Element des Kandidatenlängenvektors LNG um eins herabgesetzt wird (Schritt 1506). Das heißt, daß jedes Element des Kopfpositionsvektors TOP die Elementnummer (2, 13 und 18) des zweiten Zeichens in der entsprechenden er­ sten, zweiten und dritten Kandidatenzeichenfolge im Text angibt. Auf ähnliche Weise zeigt jedes Element des Kandidatenlängenvektors LNG die Anzahl der verbleibenden Zeichen (5, 3 und 8 im vorliegenden Fall) der entsprechenden Kandidatenzeichenfolgen an, die der Suche unterliegen. Gemäß dem obigen Beispiel zeigt die Fig. 17B die Werte des Kopfpositionsvektors TOP, des Eingabezeichenvektors INCH, des Zustandsvektors STATE und die Kandidatenlänge LNG zum Zeitpunkt der Ausführung der obigen Schritte (der durch in der Fig. 15 angezeigte Zeitpunkt). In diesem Fall ist der Wert des Kopfpositionsvektors TOP um eins größer als der anfängliche Wert, wodurch angezeigt wird, daß das zweite Zeichen einer jeden Kandidatenzeichenfolge Gegenstand einer Übergangsprozedur ist (Schritte 1504 und 1505). Auch im Eingabezeichenvektor INCH ist das führende Zeichen einer jeden Kandidatenzeichenfolge gespeichert, und im Zustandsvektor STATE die Zustandsnummer für jede Kandidatenzeichenfolge nach dem Übergang auf der Basis des Eingabezeichenvektors INCH. Wenn die Aufmerksamkeit auf die erste Kandidatenzeichenfolge gelenkt wird, ist ersichtlich, daß durch Anlegen des Zeichens "S" im Zustand 0 ein Übergang zum Zustand 1 erfolgt. Bezüglich des Kandidatenlängenvektors LNG wird jedes Element mit einem Wert gespeichert, der um 1 kleiner als der anfängliche Zustand ist, da die Übergangsprozedur für ein Zeichen ausgeführt wurde.
(2-3-2) Zur Entscheidung darüber, ob die einzelnen Kandidatenzeichenfolgen akzeptabel sind (Schritt 1507)
Nach der Vervollständigung des Zustandsüberganges wird jede Kandidatenzeichenfolge geprüft, um zu sehen, ob der neue Zustand nach dem Übergang akzeptabel ist oder nicht. Zunächst erfolgt ein Bezug auf die Elemente des Akzeptanzvektors ACCPT, die durch den Wert der einzelnen Elemente des Zustandsvektors STATE nach dem Übergang angegeben werden. Dann wird festgestellt, ob die einzelnen so bezogenen Werte eine positive Zahl sind, die die Endzustandsnummer angeben (Schritt 1507). Wenn sie gegen jede Kandidatenzeichenfolge positiv ist, ist die jeweilige Zeichenfolge akzeptabel, und es werden daher die Kopfposition und die Länge davon in den Elementen gespeichert, die den Ausgangsvektoren RTOP und RLNG entsprechen (Schritt 1508). Wenn der Wert eines ausgelesenen Wertes im Akzeptanzvektor ACCPT bezüglich einer gegebenen Kandidatenzeichenfolge Null ist, ist die jeweilige Zeichenfolge nicht akzeptabel, und die Prozedur geht daher zum nächsten Schritt über, ohne etwas zu tun. In dem in der Fig. 17B gezeigten Beispiel sind die beiden Zustände 1 und 7, die die einzelnen Elemente des Zustandsvektors STATE darstellen, nicht akzeptabel, weshalb kein Ausgangssignal für die sich ergebende Zeichenfolge erzeugt wird.
(2-3-3) Elimination von nicht akzeptablen Kandidatenzeichenfolgen mit der Restlänge Null (nicht geeignete Kandidaten) (Schritte 1509 bis 1512)
Eine Modifikation des Vektors zum Zwecke dieser Elimination wird in der folgenden Beschreibung "Verdichtung" genannt. Zuerst wird eine Programmvariable j, die die Position zur Erzeugung eines Verdichtungsergebnisses anzeigt, auf 1 gesetzt (Schritt 1509). Im nächsten Schritt werden alle Kandidatenzeichenfolgen nach dem Wert des Elements des Kandidatenlängenvektors LNG geprüft, das die Restlänge der einzelnen Kandidatenzeichenfolgen angibt (Schritt 1510). Wenn die Länge größer als 0 ist, ist es erforderlich, den verbleibenden Abschnitt der Kandidatenzeichenfolge erneut der Zustandsübergangsprozedur zu unterwerfen (Schritte 1504 bis 1506), so daß die Elemente für die Kandidatenzeichenfolge im Kopfpositionsvektor TOP, dem Kandidatenlängenvektor LNG und dem Zustandsvektor STATE nicht beseitigt werden (Schritt 1511). Wenn die Länge jedoch 0 ist, wird andererseits angezeigt, daß die Zustandsübergangsprozedur für das letzte Zeichen der jeweiligen Kandidatenzeichenfolge ausgeführt wurde, so daß die Elemente, die die Kopfposition, die Kandidatenlänge und die Zustandsnummer für die jeweilige Kandidatenzeichenfolge darstellen, aus dem Vektoren TOP, LNG und STATE entfernt werden. Schließlich wird die Anzahl der verbleibenden Kandidatenzeichenfolgen als Programmvariable N eingestellt (Schritt 1512). Unter Bezug auf das Beispiel der Fig. 17B hat jede Kandidatenzeichenfolge einen Wert größer Null für das Element des Kandidatenlängenvektors, der die Länge des verbleibenden Abschnittes angibt, weshalb die Anzahl der Kandidatenzeichenfolgen nicht erforderlich ist.
Wie später erläutert, wird jedoch bei diesem Verdichtungsvorgang der Kandidat "SORT", der im ersten Reduktionsvorgang erhalten wurde, eliminiert.
Bezüglich der Schritte 1504 bis 1511 stehen die Elemente der Vektoren (Kopfpositionsvektor TOP, Kandidatenlängenvektor LNG, Eingangszeichenvektor INCH und Zustandsvektor STATE), die die Eigenschaften der jeweiligen Kandidatenzeichenfolgen darstellen, nicht in Verbindung zueinander. Bezüglich einer Vektoranweisungsfolge, die diese Schritte bewirkt, ist es daher bei einem Vektor, der durch eine gegebene Vektoranweisung erstellt wird, möglich, die Berechnung der nächsten Vektoranweisung mit dem vorherigen Vektor als Eingabe zu dem Zeitpunkt zu beginnen, zu dem der Wert des Elementes feststeht. Die Ausführung kann daher zwischen den Vektoranweisungsfolgen überlappend ausgeführt werden (wie es durch das sogenannte "Verketten" erfolgt), wodurch eine hohe Geschwindigkeit erhalten wird. Auf diese Weise ergibt das vektorisierte FSA-Verahren gemäß dieser Ausführungsform einen Algorithmus, der für einen Vektorcomputer geeignet ist.
(2-3-4) Wiederholung der Verarbeitungsvorgänge (2-3-1) bis (2-3-3) für die verbleibenden Zeichen der verbleibenden Kandidatenzeichenfolgen
Die Verarbeitung für ein Zeichen der einzelnen Kandidatenzeichenfolgen ist nun vorüber. Unter Rückkehr zum Schritt 1503 wird nun geprüft, ob die Variable N, die die Anzahl von Kandidatenzeichenfolgen angibt, größer als 0 ist. Wenn der Wert N größer als 0 ist, das heißt solange eine Kandidatenzeichenfolge übrigbleibt, werden die obigen Schritte 1504 bis 1512 wiederholt. Wenn keine Kandidatenzeichenfolgen mehr vorhanden sind, ist die Prozedur 1501 des vektorisierten FSA-Verfahrens beendet.
(3) Beispiel für die Verarbeitung
Es soll nun die Verdichtung einer Kandidatenzeichenfolge und die Ausgabe einer sich ergebenden Zeichenfolge mit Bezug auf das Beispiel der Fig. 17 erläutert werden. In der Schleife der Schritte 1504 bis 1512 der Fig. 15 sind die Werte der einzelnen Vektoren am Punkt wie in der Fig. 17B gezeigt. Am Punkt der Fig. 17B ist der Wert des zweiten Elementes des Kandidatenlängenvektors LNG Null, wodurch angezeigt wird, daß die Suche bezüglich der Kandidatenzeichenfolge "SORT" beendet ist. In den Vorgängen der Schritte 1510 bis 1511 werden daher die Daten weggelassen, die sich auf die Kandidatenzeichenfolge "SORT" beziehen, so daß die Kandidatenlänge nach dem Punkt der Fig. 17 zu 2 (N = 2) wird. Im Punkt der Fig. 17B ist der Wert des ersten Elementes des Zustandsvektors STATE gleich 6. Für den Zustand 6 ist der Wert des sechsten Elementes des Akzeptanzvektors ACCPT (1502) gleich 6, wodurch angezeigt wird, daß der Zustand akzeptabel ist. In den Schritten 1507 bis 1508 wird damit für die Vektoren RTOP und RLNG ein Ausgangssignal erzeugt (die Position und Nummer der Kopfzeichen der Textzeichenfolge eines Stichwortes), um mit Bezug auf die Kandidatenzeichenfolge "SEARCH" als eine Kandidatenzeichenfolge, die mit dem Stichwort übereinstimmt, als Ergebnis gespeichert zu werden.
Als eine Folge der obigen Prozeduren wird die Kandidatenzeichenfolge "SORT", die unter allen Kandidatenzeichenfolgen "SEARCH", "SORT" und "ALGORITHM", die das Ergebnis der ersten und zweiten Reduktionsvorgänge mittels des vektorisierten FSA- Verfahrens darstellen, ein Störelement ist, dadurch entfernt, um die vollständige Suche als ein Ganzes zu realisieren.
Nach Beendigung der Routine 1501 für den zweiten Reduktionsvorgang wird das beabsichtigte Endergebnis erhalten, womit das (nicht gezeigte) Textsuchprogramm abgeschlossen ist.
(D) Modifikationen
Obwohl in der zweiten Ausführungsform ein Zeichencode mit einem Byte als Gegenstand des primären Reduktionsvorganges verwendet wird, kann dieser Code alternativ auch ein 2-Byte-Code sein. Mit Bezug auf einen 1-Byte-Code-Text ist, wenn der erste Reduktionsvorgang der zweiten Ausführungsform mit zwei Bytes auf die gleiche Weise wie für aufeinanderfolgende zwei Bytes, die einen Code für ein Zeichen darstellen, ausgeführt wird, die Anzahl der im ersten Reduktionsvorgang erfaßten Kandidatenzeichenfolgen im Vergleich zu einer Erfassung mit einem Byte verringert, wodurch die Belastung im zweiten Reduktionsvorgang herabgesetzt ist.
Dieses Verbesserungsverfahren wird mit Bezug auf die Fig. 18 kurz erläutert. Es wird der betroffene Text und das betroffene Stichwort durch einen 1-Byte-Code (EBCDIK-Code) dargestellt, und die Zeichen, die erscheinen, sind zur Vereinfachung von 27 Arten, nämlich insgesamt 26 Buchstaben und ein Leerzeichen. Des weiteren sind die Eintragungen des Erscheinungsinformationsvektors KWD (181) auf 729 (= 27 × 27) begrenzt. Wie in der Fig. 18B gezeigt, werden aufeinanderfolgende zwei Bytes des Stichwortes als ein Zeichen behandelt und so im Erscheinungsinformationsvektor KWD (181) registriert, im Gegensatz zu dem in der Fig. 14 gezeigten Erscheinungsinformationsvektor KWD. Es werden, wie in der Fig. 18A gezeigt, beispielsweise TEXT und SEARCH als Stichworte verwendet. Das Stichwort "TEXT" wird als Folge mit vier Zeichen "TE", "EX", "XT" behandelt, und in der entsprechenden Eintragung des Erscheinungsinformationsvektors KWD′ wird 1 gespeichert. Auch in der Textzeichenfolge werden aufeinanderfolgende zwei Byte als ein Zeichen behandelt. In dem Fall des illustrativ in der Fig. 18B gezeigten Textes wird der Textvektor TEXT zu einem Vektor 182, wie er in der Fig. 18B gezeigt ist. Bezüglich des Algorithmusses für den ersten Reduktionsvorgang ist nur die Verarbeitungseinheit anders, und es können für den Rest genau die gleichen Prozeduren ausgeführt werden wie bei den vorstehenden Ausführungsformen. Gemäß der vorliegenden Verbesserung tritt keine Störung "HASH" auf, die im Falle der Verarbeitung eines Bytes als Zeichen in der Kandidatenzeichenfolge erscheint. Der Grund dafür ist, daß jedes der Zeichen in der Gruppe "HA", "AS" und "SH" im Erscheinungsinformationsvektor KWD (181) den Wert 0 hat. Im Ergebnis ist die Anzahl der Kandidatenzeichen, die das Ergebnis des ersten Reduktionsvorganges darstellten, verringert, wodurch die Verarbeitungsanforderungen für den zweiten Reduktionsvorgang für eine insgesamt höhere Geschwindigkeit verringert sind.
(Dritte Ausführungsform)
Die erste und die zweite Ausführungsform werden beide mittels eines Computers ausgeführt, der zur vektoriellen Verarbeitung (Pipeline-Verarbeitung) fähig ist.
Das Merkmal der vorliegenden Erfindung liegt jedoch darin, daß die Verarbeitung für ein Zeichen parallel zu der für andere Zeichen ausgeführt wird.
Dieser Effekt kann daher auch mittels einer Anzahl von Prozessoren erhalten werden, die in der gleichen Weise parallel arbeiten können wie ein Computer mit der Fähigkeit zur Pipeline- Verarbeitung. Das heißt, daß verschiedene Elemente der in der zweiten Ausführungsform beschriebenen Vektoren von verschiedenen Prozessoren verarbeitet werden können.
(Vierte Ausführungsform)
Gemäß der zweiten Ausführungsform wird bei der zweiten Reduktion die Verarbeitung mittels des FSA-Verfahrens vektoriell ausgeführt. Diese vektorielle Verarbeitung kann ohne die erste Reduktion direkt auf einen Text angewendet werden. Der Text wird aufgeteilt, um die Aufteilungsbedingungen zu erfüllen, die am Anfang des Abschnittes beschrieben sind, der bei der zweiten Ausführungsform den zweiten Reduktionsvorgang behandelt.
Im einfachsten Fall kann ein Begrenzungssymbol verwendet werden, das kein Stichwort in einem Text darstellen kann. In einem japanischen Text ist das beispielsweise eine Periode oder ein Komma und in einem englischen Text ein Leerzeichen.
Die so erhaltenen Teilzeichenfolgen werden für die zweite Reduktion einer vektoriellen Verarbeitung unterworfen, wie sie in der zweiten Ausführungsform auf die Kandidatenzeichen angewendet wird.
Bei diesem Verfahren ist die Anzahl von Kandidatenzeichenfolgen im ersten Reduktionsvorgang erhöht. Da jedoch das FSA-Verfahren mittels vektorieller Verarbeitung mit hoher Geschwindigkeit ausgeführt werden kann, ist die Verarbeitungsgeschwindigkeit wesentlich höher als bei dem herkömmlichen FSA-Verfahren, das auf skalare Weise ausgeführt wird.
Gemäß der ersten bis dritten Ausführungsform der vorliegenden Erfindung umfaßt die Suche nach Zeichenfolgen für eine Anzahl von Stichworten zwei Stufen. In einer ersten Stufe wird ein Text zu Stichworten und dazu analoge Zeichenfolgen reduziert, gefolgt von einer zweiten Stufe, in der jede der so erzeugten Zeichenfolgen auf ein Stichwort geprüft wird. Wie oben mit Bezug auf die Fig. 10 erläutert, erlaubt die erste Stufe eine Hochgeschwindigkeits-Pipeline-Verarbeitung, und in der zweiten Stufe ist die Menge der zu verarbeitenden Zeichen verringert, was zu einer höheren Geschwindigkeit der Gesamtoperation führt. Es sei die Verarbeitungsgeschwindigkeit bei der herkömmlichen Suche nach einer Zeichenfolge gleich Eins, die Verarbeitungsgeschwindigkeit in der ersten Stufe α, die Reduktionsrate (das heißt "Menge an Kandidatenzeichenfolgen ./. Menge an Text") in der ersten Stufe β und es werde in der zweiten Stufe das gleiche Verfahren wie bei der herkömmlichen Zeichenfolgesuche angewendet. Die Verarbeitungszeit ist in der ersten Stufe dann durch N/α gegeben, wobei N die Menge an Text ist, und die Verarbeitungszeit in der zweiten Stufe zu Nβ, da die Menge an Kandidaten gleich Nβ und die Geschwindigkeit 1 ist.
Im Ergebnis ist das Verhältnis der Verarbeitungszeit zwischen den Verfahren der ersten und zweiten Ausführungsform und dem herkömmlichen Verfahren gegeben zu
(N/α+Nβ) : N = (1/α+β) : 1.
Wenn z. B. α = 10 und β = 0,1 ist, ist das Verfahren nach der zweiten erfindungsgemäßen Ausführungsform fünfmal schneller als das herkömmliche Verfahren.
Die tatsächlichen Werte von α und β werden etwas genauer erläutert. Dazu erfolgt ein Bezug auf die erste Ausführungsform, bei der die vorliegende Erfindung durch eine besondere Hardware realisiert wird.
Es werde zuerst α betrachtet. Die Verarbeitung eines Textzeichens in der ersten Stufe der ersten Ausführungsform beinhaltet die Schritte des Auslesens eines Textzeichens, des Erzeugens einer RAM-Adresse durch Hashing, des Lesens der Erscheinungsartinformation aus dem RAM und des Erneuerns eines Zählers. Wie in der Fig. 10 gezeigt, wird die Verarbeitung für ein Textzeichen, die pipelineartig erfolgt, im wesentlichen innerhalb einer Einheitszeit (Maschinenzyklus) ausgeführt. Gemäß dem auf dem FSA-Verfahren basierenden Programm, das in der Fig. 12 gezeigt ist, erfolgt demgegenüber die Verarbeitung eines Textzeichens durch die Schleife der Schritte 1204 bis 1212, wozu mindestens zehn Maschinenzyklen erforderlich sind. Damit ist α 10.
Nun wird β erläutert. Wie oben beschrieben, ist β ein Verhältnis, das das Ausmaß anzeigt, in dem ein Text in der ersten Stufe reduziert wird. Dieses Verhältnis hängt im großen Maße vom Text und dem Stichwort ab. Das Ergebnis für tatsächliche Messungen von β an verschiedenen Kombinationen von Text und Stichwort ist in der Fig. 19 gezeigt. In der Fig. 19 wird eine gegebene Kombination aus einem Text und einem Stichwort als ein Fall betrachtet, und β wurde für neun Fälle mit reduzierten Kandidaten gemessen, die weiter in Störelemente und Zeichenfolgen mit einem übereinstimmenden Stichwort aufgeteilt wurden. Die Fälle 0 bis 2 stehen für einen Text und ein Stichwort auf dem gleichen Gebiet, das heißt für eine Situation, bei der beispielsweise ein technischer Term für einen Computer als Stichwort und eine auf Computer bezogene Literaturstelle als Text gegeben ist. Die Fälle 3 bis 8 stellen andererseits Text-Stichwort- Kombinationen zwischen verschiedenen Gebieten dar. Wie aus der Fig. 19 hervorgeht, beträgt β im gleichen Gebiet etwa 0,1 bis 0,15, und zwischen verschiedenen Gebieten etwa 0 bis 0,01 oder im betrachteten Beispiel im Schnitt etwa 0,05.
Im Ergebnis ist das Verfahren und die Anordnung zur Zeichenfolgesuche gemäß der vorliegenden Ausführungsform im Falle der Fig. 19 etwa 6,7mal schneller als das FSA-Verfahren.
Es wird nun die Auswirkung der zweiten Ausführungsform erläutert, bei der die vorliegende Erfindung mittels eines normalen Vektorcomputers realisiert wird. In diesem Fall wird die Routine für den ersten Reduktionsvorgang dadurch ausgeführt, daß dem Flußdiagramm der Fig. 13 gefolgt wird, und die für den zweiten Reduktionsvorgang, daß dem Flußdiagramm der Fig. 15 gefolgt wird. Bei der Verarbeitung eines vektorisierten Programmes ändert sich jedoch die Fähigkeit zur parallelen Ausführung jener Vektoranweisungsfolgen, die überlappt (verkettet) werden können, gewöhnlich von einem Typ von Vektorcomputer zum anderen. Im Ergebnis kann für den obigen Parameter α keine solche Fähigkeit definitiv bestimmt werden. Die Wirkung der zweiten Ausführungs­ form wird im folgenden auf der Basis des Ergebnisses der Ausführung der Vorgänge beschrieben, die erhalten werden, wenn der Algorithmus der zweiten Ausführungsform, der in der Programmsprache FORTRAN beschrieben ist, auf dem S810-Array-Prozessorsystem von Hitachi Ltd. ausgeführt wird bzw. der erhalten wird, wenn das herkömmliche FSA-Verfahren durch eine skalare Verarbeitungseinheit des S810-Array-Prozessorsystems ausgeführt wird. Die Fig. 20 zeigt Werte, die durch die Messung der Leistungsfähigkeit der erwähnten beiden Verfahren durch das Vorgeben von zwei Stichwörtern zu einem Text von 16386 Zeichen erhalten werden. Wie erläutert, beeinflußt bei dem erfindungsgemäßen Textsuchverfahren der Wert des Parameters β die Leistungsfähigkeit wesentlich. Durch die Vorgabe von zwei Arten von Stichwörtern wurde deshalb die Leistungsfähigkeit für Werte von β von 0,015 und 0,8 tatsächlich gemessen. Berechnungen in der entgegengesetzten Richtung aus diesen Werten zeigen, daß das Leistungsverhältnis der vektorisierten Routine des ersten Suchvorganges zu dem skalaren FSA-Verfahren gleich 13,2 ist, und daß das Leistungsverhältnis des vektorisierten FSA-Verfahrens zum skalaren FSA-Verfahren gleich 6,56 ist. Das Verhältnis der Verarbeitungszeit zwischen der Textsuchmethode gemäß der zweiten Ausführungsform und dem skalaren FSA-Verfahren ist daher gegeben zu
(N/13,2+β · N/6,56) : N = (1/13,2+β/6,56) : 1
(wobei N die Textmenge ist).
Das Ergebnis der tatsächlichen Messung der Reduktionsrate β, die für einen Satz in der englischen Sprache vorgesehen ist, ist in der Fig. 21 gezeigt. In der Fig. 19 beziehen sich die Fälle 0 bis 2 auf Kombinationen eines Textes und Stichworts auf dem gleichen Gebiet und die Fälle 3 bis 8 auf Kombinationen zwischen verschiedenen Gebieten. Im Gegensatz zur Fig. 19 ist jedoch keine bestimmte Beziehung zwischen den Informationen, ob ein Text mit einem Stichwort übereinstimmt oder nicht, oder der Reduktionsrate β gegeben. Dies hat seinen Grund in der Tatsache, daß Störelemente in einem großen Ausmaß vorliegen, da ein Stichwort mit dem Erscheinungsinformationsvektor in Einheiten von 1B registriert wird. In dem betrachteten Beispiel ist der durchschnittliche Wert von β etwa 0,61.
Im Ergebnis ist bei dem in der Fig. 21 gezeigten Beispiel die Leistungsfähigkeit des vorliegenden Algorithmusses auf dem Vektorcomputer gegenüber dem FSA-Verfahren in der Geschwindigkeit etwa 9,5mal höher.
Es wird erwartet, daß eine Modifikation der zweiten Ausführungsform der vorliegenden Erfindung eine noch größere Auswirkung hat als die zweite Ausführungsform selbst. Auch ist zu erwarten, daß die vierte Ausführungsform etwa die gleiche Auswirkung hat wie die zweite Ausführungsform.

Claims (31)

1. Vektorprozessor zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge, mit
einer Speichereinrichtung (101, 109) zur Aufnahme eines die Textzeichenfolge enthaltenden Textvektors (102), eines die Stichwortzeichenfolge enthaltenden Stichwortvektors (144, 145, 146), eines Erscheinungsartvektors (103), dessen Elemente den einzelnen Textzeichen zugeordnet sind und angeben, ob das jeweilige Textzeichen in dem Stichwortvektor (144, 145, 146) auftritt, und eines Ergebnisvektors (104),
einer Textvektor-Leseschaltung (152) zum Lesen der Elemente des Textvektors (102),
einer Erscheinungsartvektor-Leseschaltung (116) zum Lesen desjenigen Elements des Erscheinungsartvektors (103), das jeweils dem von der Textvektor-Leseschaltung (152) gelesenen Textzeichen entspricht,
einer Steuerlogik (111), die aufgrund der aus dem Erscheinungsartvektor (103) ausgelesenen Information in der Textzeichenfolge eine Kandidatenzeichenfolge feststellt, die aus Textzeichen besteht, die auch in dem Stichwortvektor (144, 145, 146) auftreten,
einer Vektorelement-Speicherschaltung (151) zum Einschreiben von Information, die die Kandidatenzeichenfolge festlegt, in den Ergebnisvektor (104), und
einer Verarbeitungseinrichtung (CPU, 118) zum Feststellen, ob die mittels des Ergebnisvektors (104) festgelegte Kandidatenzeichenfolge mit der Stichwortzeichenfolge übereinstimmt.
2. Vektorprozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Textvektor-Leseschaltung (152), die Erscheinungsartvektor- Leseschaltung (116), die Steuerlogik (111) und die Vektorelement-Speicherschaltung (151) in zeitlich überlappender Weise arbeiten.
3. Vektorprozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Verarbeitungseinrichtung (CPU, 118) dafür vorgesehen ist, zunächst in die Elemente des Erscheinungsartvektors (103) einzutragen, ob das dem jeweiligen Element zugeordnete Textzeichen in dem Stichwortvektor (144, 145, 146) auftritt.
4. Vektorprozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Verarbeitungseinrichtung (CPU, 118) mittels der Vektorelement-Speicherschaltung (151) die Position, an der die Stichwortzeichenfolge in der Textzeichenfolge auftritt, in einen weiteren Ergebnisvektor (105) einschreibt.
5. Vektorprozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß der Erscheinungsartvektor (103) zu den jeweiligen Textzeichen Information darüber erhält, in welchem einer Vielzahl von vorgegebenen Abschnitten der Stichwortzeichenfolge das Textzeichen auftritt und daß die Steuerlogik (111) aufgrund dieser Information das jeweilige Textzeichen als nicht zur Kandidatenzeichenfolge gehörig behandelt, wenn die genannte Information des Erscheinungsartvektors (103) mit der Erscheinungsart dieses Zeichens in der Textzeichenfolge im Gegensatz steht.
6. Vektorprozessor nach Anspruch 5, dadurch gekennzeichnet, daß die Vielzahl der vorgegebenen Abschnitte drei Positionen, nämlich eine Kopfposition, eine Endposition und eine dazwischenliegende Position in der Stichwortzeichenfolge beinhaltet.
7. Vektorprozessor nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß der Stichwortvektor (144, 145, 146) die Zeichenfolgen mehrerer Stichworte enthält.
8. Vektorprozessor nach Anspruch 7, dadurch gekennzeichnet, daß der Erscheinungsartvektor (103) zu jedem Textzeichen eine Information enthält, ob die Länge vom Kopf eines Stichwortes, das dieses Textzeichen enthält, bis zur Erscheinungsposition des Textzeichens größer ist als die Länge des kürzesten Stichwortes.
9. Vektorprozessor nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß ein Längenzähler (114) vorgesehen ist, der die Länge (v) der jeweiligen Kandidatenzeichenfolge bestimmt und daß die Steuerlogik (111) die Vektorelement-Speicherschaltung (151) veranlaßt, die Position, an der die Kandidatenzeichenfolge in der Textzeichenfolge auftritt, und die genannte Länge (v) in den Ergebnisvektor (104) zu schreiben.
10. Vektorprozessor nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß die Zahl der Elemente des Erscheinungsartvektors (103) geringer ist als die Zahl der in der Textzeichenfolge verwendeten verschiedenen Textzeichen und daß die Erscheinungsartvektor-Leseeinrichtung (116) einen aus dem Textvektor (102) ausgelesenen Zeichenkode zum Zugriff auf den Erscheinungsartvektor (103) in einen Kode mit reduzierter Bitzahl umwandelt.
11. Vektorprozessor nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß zum Bilden der Elemente des Ergebnisvektors (104; TOP, BTM) die gelesenen Elemente des Erscheinungsartvektors (103; KWD) in einen Erfassungszustandsvektor (MSK1) geschrieben werden, und daß die Elemente des Erfassungszustandsvektors (MSK1) jeweils mit ihren unmittelbar vorhergehenden Elementen verglichen werden, um die Position des führenden und des letzten Zeichens der Kandidatenzeichenfolge in der Textzeichenfolge zu bestimmen.
12. Vektorprozessor nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, daß die Steuerlogik (111) dann,
wenn ein gegebenes Zeichen in der Stichwortzeichenfolge erscheint, und das vorhergehende Zeichen nicht Teil der Kandidatenzeichenfolge ist, die Position des gegebenen Zeichens im Textvektor (102) als Kopfposition dieser Kandidatenzeichenfolge feststellt,
wenn ein gegebenes Zeichen in der Stichwortzeichenfolge erscheint und das vorhergehende Zeichen als zu der Kandidatenzeichenfolge gehörend festgestellt wird, das gegebene Zeichen zu dieser Kandidatenzeichenfolge hinzufügt, oder
wenn ein gegebenes Zeichen nicht in der Stichwortzeichenfolge erscheint und das vorhergehende Zeichen in der Kandidatenzeichenfolge enthalten ist, die Position des vorhergehenden Zeichens im Textvektor (102) als die Endposition dieser Kandidatenzeichenfolge feststellt.
13. Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge, mittels eines Vektorprozessors mit
einer Speichereinrichtung (101, 109) zur Aufnahme eines die Textzeichenfolge enthaltenden Textvektors (102), eines die Stichwortzeichenfolge enthaltenden Stichwortvektors (144, 145, 146), eines Erscheinungsartvektors (103), dessen Elemente den einzelnen Textzeichen zugeordnet sind und angeben, ob das jeweilige Textzeichen in dem Stichwortvektor (144, 145, 146) auftritt, und eines Ergebnisvektors (104), wobei das Verfahren die folgenden Schritte umfaßt:
  • - Lesen jeweils eines Elements des Textvektors (102),
  • - Lesen desjenigen Elements des Erscheinungsartvektors (103), das jeweils dem aus dem Textvektor (102) gelesenen Textzeichen entspricht,
  • - Feststellen einer Kandidatenzeichenfolge innerhalb der Textzeichenfolge aufgrund der aus dem Erscheinungsartvektor (103) ausgelesenen Information, wobei die Kandidatenzeichenfolge aus Textzeichen besteht, die alle auch in dem Stichwortvektor (144, 145, 146) auftreten,
  • - Einschreiben einer Information, die die Kandidatenzeichenfolge festlegt, in den Ergebnisvektor (104), und
  • - Feststellen, ob die mittels des Ergebnisvektors (104) festgelegte Kandidatenzeichenfolge mit der Stichwortzeichenfolge übereinstimmt.
14. Verfahren nach Anspruch 13, dadurch gekennzeichnet, daß das Lesen des Textvektors (102), das Lesen des Erscheinungsartvektors (103), das Feststellen der Kandidatenzeichenfolge und das Speichern des Ergebnisvektors (104) in zeitlich überlappender Weise durchgeführt werden.
15. Verfahren nach Anspruch 13 oder 14, dadurch gekennzeichnet, daß zunächst in die Elemente des Erscheinungsartvektors (103) eingetragen wird, ob das dem jeweiligen Element zugeordnete Textzeichen in dem Stichwortvektor (144, 145, 146) auftritt.
16. Verfahren nach einem der Ansprüche 13 bis 15, dadurch gekennzeichnet, daß die Position, an der die Stichwortzeichenfolge in der Textzeichenfolge auftritt, in einen weiteren Ergebnisvektor (105) eingeschrieben wird.
17. Verfahren nach einem der Ansprüche 13 bis 16, dadurch gekennzeichnet, daß dem Erscheinungsartvektor (103) zu den jeweiligen Textzeichen Information darüber zugeführt wird, in welchem einer Vielzahl von vorgegebenen Abschnitten der Stichwortzeichenfolge das Textzeichen auftritt und daß das jeweilige Textzeichen als nicht zur Kandidatenzeichenfolge gehörig behandelt wird, wenn die genannte Information des Erscheinungsartvektors (103) mit der Erscheinungsart dieses Textzeichens in der Textzeichenfolge im Gegensatz steht.
18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, daß die Vielzahl der vorgegebenen Abschnitte drei Positionen, nämlich eine Kopfposition, eine Endposition und eine dazwischenliegende Position in der Stichwortzeichenfolge beinhaltet.
19. Verfahren nach einem der Ansprüche 13 bis 18, dadurch gekennzeichnet, daß der Stichwortvektor (144, 145, 146) aus den Zeichenfolgen mehrerer Stichworte zusammengesetzt wird.
20. Verfahren nach Anspruch 19, dadurch gekennzeichnet, daß der Erscheinungsartvektor (103) zu jedem Textzeichen eine Information enthält, ob die Länge vom Kopf eines Stichwortes, das dieses Textzeichen enthält, bis zur Erscheinungsposition des Textzeichens größer ist als die Länge des kürzesten Stichwortes.
21. Verfahren nach einem der Ansprüche 13 bis 20, dadurch gekennzeichnet, daß die Länge (v) der jeweiligen Kandidatenzeichenfolge und die Position, an der die Kandidatenzeichenfolge in der Textzeichenfolge auftritt, in den Ergebnisvektor (104) geschrieben werden.
22. Verfahren nach einem der Ansprüche 13 bis 21, dadurch gekennzeichnet, daß die Zahl der Elemente des Erscheinungsartvektors (103) geringer ist als die Zahl der in der Textzeichenfolge verwendeten verschiedenen Textzeichen und daß ein aus dem Textvektor (102) ausgelesener Zeichenkode zum Zugriff auf den Erscheinungsartvektor (103) in einen Kode mit reduzierter Bitzahl umgewandelt wird.
23. Verfahren nach einem der Ansprüche 13 bis 22, dadurch gekennzeichnet, daß zum Bilden der Elemente des Ergebnisvektors (104; TOP, BTM) die gelesenen Elemente des Erscheinungsartvektors (103; KWD) in einen Erfassungszustandsvektor (MSK 1) geschrieben werden, und daß die Elemente des Erfassungszustandsvektors (MSK 1) jeweils mit ihren unmittelbar vorhergehenden Elementen verglichen werden, um die Position des führenden und des letzten Zeichens der Kandidatenzeichenfolge zu bestimmen.
24. Verfahren nach einem der Ansprüche 13 bis 23, dadurch gekennzeichnet, daß dann,
wenn ein gegebenes Zeichen in der Stichwortzeichenfolge erscheint, und das vorhergehende Zeichen nicht Teil der Kandidatenzeichenfolge ist, die Position des gegebenen Zeichens im Textvektor (102) als Kopfposition dieser Kandidatenzeichenfolge festgestellt wird,
wenn ein gegebenes Zeichen in der Stichwortzeichenfolge erscheint und das vorhergehende Zeichen als zu der Kandidatenzeichenfolge gehörend festgestellt wird, das gegebene Zeichen zu dieser Kandidatenzeichenfolge hinzugefügt wird, oder
wenn ein gegebenes Zeichen nicht in der Stichwortzeichenfolge erscheint und das vorhergehende Zeichen in der Kandidatenzeichenfolge enthalten ist, die Position des vorhergehenden Zeichens im Textvektor (102) als die Endposition dieser Kandidatenzeichenfolge festgestellt wird.
25. Verfahren nach einem der Ansprüche 13 bis 24, mit
  • (a) einem Schritt des Registrierens von Bestimmungszuständen von Übergängen von einem Textzeichen zu dem jeweils nachfolgenden Textzeichen der Stichwortzeichenfolge,
  • (b) einem Schritt des Feststellens, ob der Bestimmungszustand des für das führende Textzeichen einer jeden Kandidatenzeichenfolge registrierten Überganges einen Zustand (Endzustand) darstellt, der durch das Lesen des letzten Zeichens der Stichwortzeichenfolge entsteht,
  • (c) einem Schritt des Feststellens, ob der Bestimmungszustand des in einer Kandidatenzeichenfolge folgenden Textzeichens den Endzustand bildet,
  • (d) einem Schritt des Wiederholens des Schrittes (c) für die Textzeichen, die in der Anzahl der Kandidatenzeichenfolgen einander folgen, und
  • (e) einem Schritt, bei dem die so weit in der Kandidatenzeichenfolge verarbeitete Zeichenfolge, die als Ergebnis der Feststellung im Schritt (b) oder (c) als der Endzustand erfaßt wurde, als Zeichenfolge festgestellt wird, die mit der Stichwortzeichenfolge übereinstimmt.
26. Verfahren nach Anspruch 25, wobei die Schritte (b), (c) und (d) in überlappender Weise ausgeführt werden.
27. Verfahren nach Anspruch 25, wobei der Schritt (a) einen Schritt des Registrierens eines Übergangsbestimmungsvektors (FSATBL), der als Elemente die Übergangsbestimmungszustände enthält, die den einzelnen Textzeichen entsprechen, die in der Textzeichenfolge verwendbar sind,
der Schritt (b) einen Schritt (b1) des sequentiellen Auslesens der Elemente des Übergangsbestimmungsvektors, die den führenden Textzeichen aus der Anzahl von Kandidatenzeichenfolgen entsprechen, und einen Schritt (b2) des Feststellens, ob die ausgelesenen Elemente im Übergangsbestimmungsvektor den Endzustand darstellen oder nicht, enthält und
der Schritt (c) einen Schritt (c1) des sequentiellen Auslesens der Elemente des Übergangsbestimmungsvektors, die den Textzeichen entsprechen, die jeweils den ausgelesenen Textzeichen der Kandidatenzeichenfolgen vorhergehen, und einen Schritt (c2) des Feststellens, ob die ausgelesenen Elemente den Endzustand darstellen oder nicht, beinhaltet.
28. Verfahren nach Anspruch 27, wobei der Schritt (b1) beinhaltet
  • (1) einen Schritt des Erzeugens eines Eingabevektors, der als Elemente die führenden Textzeichen der Kandidatenzeichenfolgen enthält,
  • (2) einen Schritt des sequentiellen Auslesens der Elemente des Eingabevektors, und
  • (3) einen Schritt des sequentiellen Auslesens der Elemente des Übergangsbestimmungsvektors (FSATBL), die den ausgelesenen Elementen des Eingabevektors entsprechen,
und wobei der Schritt (c1) beinhaltet
  • (4) einen Schritt des Erzeugens eines Eingabevektors, der als Elemente die Zeichen enthält, die in den Kandidatenzeichenfolgen einander folgen,
  • (5) einen Schritt des sequentiellen Auslesens der Elemente des Eingabevektors, und
  • (6) einen Schritt des sequentiellen Auslesens der Elemente des Übergangsbestimmungsvektors, die den ausgelesenen Elementen des Eingabevektors entsprechen.
29. Verfahren nach Anspruch 25, wobei der Schritt (b) beinhaltet
  • (b1) einen Schritt des Erzeugens eines Akzeptanzvektors (ACCPT) mit Elementen, die zu jedem der Übergangsbestimmungszustände angeben, ob sie den Endzustand darstellen,
  • (b2) einen Schritt des Auslesens der Elemente eines Übergangsbestimmungsvektors (FSATBL), die den führenden Zeichen der Kandidatenzeichenfolgen entsprechen,
  • (b3) einen Schritt des Auslesens der Elemente des Akzeptanzvektors, die den ausgelesenen Elementen des Übergangsbestimmungsvektors entsprechen, und
  • (b4) einen Schritt des Feststellens, ob die ausgelesenen Elemente des Akzeptanzvektors den Endzustand darstellen.
30. Verfahren nach Anspruch 29, wobei die Elemente des Akzeptanzvektors (ACCPT) die Länge der Stichwortzeichenfolge darstellen, wenn sie den Endzustand angeben.
DE3991231A 1988-10-18 1989-10-17 Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge Expired - Fee Related DE3991231C2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP63260616A JP2790466B2 (ja) 1988-10-18 1988-10-18 文字列検索方法及び装置
PCT/JP1989/001064 WO1990004826A1 (fr) 1988-10-18 1989-10-17 Procede et dispositif d'extraction de sequences de mots-cles pour le traitement concurrent

Publications (1)

Publication Number Publication Date
DE3991231C2 true DE3991231C2 (de) 1995-06-08

Family

ID=17350401

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3991231A Expired - Fee Related DE3991231C2 (de) 1988-10-18 1989-10-17 Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge

Country Status (4)

Country Link
US (1) US5604910A (de)
JP (1) JP2790466B2 (de)
DE (1) DE3991231C2 (de)
WO (1) WO1990004826A1 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819291A (en) * 1996-08-23 1998-10-06 General Electric Company Matching new customer records to existing customer records in a large business database using hash key
EP0968478A1 (de) * 1997-03-18 2000-01-05 Siemens Aktiengesellschaft Verfahren zur automatischen generierung einer zusammenfassung von einem text durch einen rechner
US5999925A (en) * 1997-07-25 1999-12-07 Claritech Corporation Information retrieval based on use of sub-documents
US7143350B2 (en) * 1999-06-30 2006-11-28 Microsoft Corporation Method and system for character sequence checking according to a selected language
US6738779B1 (en) 2001-02-21 2004-05-18 Telecom Italia S.P.A. Apparatus for and method of multiple parallel string searching
US7552385B2 (en) * 2001-05-04 2009-06-23 International Business Machines Coporation Efficient storage mechanism for representing term occurrence in unstructured text documents
US7737134B2 (en) * 2002-03-13 2010-06-15 The Texas A & M University System Anticancer agents and use
GB2399900B (en) * 2003-03-27 2005-10-05 Micron Technology Inc Data reording processor and method for use in an active memory device
US7496662B1 (en) 2003-05-12 2009-02-24 Sourcefire, Inc. Systems and methods for determining characteristics of a network and assessing confidence
US7539681B2 (en) * 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US8046833B2 (en) * 2005-11-14 2011-10-25 Sourcefire, Inc. Intrusion event correlation with network discovery information
US7733803B2 (en) * 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
US7735090B2 (en) * 2005-12-15 2010-06-08 International Business Machines Corporation On demand software contract modification and termination in running component assemblies
US7948988B2 (en) * 2006-07-27 2011-05-24 Sourcefire, Inc. Device, system and method for analysis of fragments in a fragment train
US7701945B2 (en) 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
CA2672908A1 (en) * 2006-10-06 2008-04-17 Sourcefire, Inc. Device, system and method for use of micro-policies in intrusion detection/prevention
JP5141560B2 (ja) * 2007-01-24 2013-02-13 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
US8069352B2 (en) * 2007-02-28 2011-11-29 Sourcefire, Inc. Device, system and method for timestamp analysis of segments in a transmission control protocol (TCP) session
EP2156290B1 (de) * 2007-04-30 2020-03-25 Cisco Technology, Inc. Echtzeit-bewusstsein für ein computernetzwerk
US7991987B2 (en) * 2007-05-10 2011-08-02 Intel Corporation Comparing text strings
JP4568320B2 (ja) * 2007-11-19 2010-10-27 株式会社日立製作所 処理手順生成装置及び処理手順生成方法
US8474043B2 (en) * 2008-04-17 2013-06-25 Sourcefire, Inc. Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
WO2010045089A1 (en) 2008-10-08 2010-04-22 Sourcefire, Inc. Target-based smb and dce/rpc processing for an intrusion detection system or intrusion prevention system
WO2011130510A1 (en) 2010-04-16 2011-10-20 Sourcefire, Inc. System and method for near-real time network attack detection, and system and method for unified detection via detection routing
US8433790B2 (en) 2010-06-11 2013-04-30 Sourcefire, Inc. System and method for assigning network blocks to sensors
US8671182B2 (en) 2010-06-22 2014-03-11 Sourcefire, Inc. System and method for resolving operating system or service identity conflicts
JP5601123B2 (ja) * 2010-09-28 2014-10-08 カシオ計算機株式会社 Nグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラム
US8601034B2 (en) 2011-03-11 2013-12-03 Sourcefire, Inc. System and method for real time data awareness
JP6393960B2 (ja) * 2013-06-04 2018-09-26 日本電気株式会社 文字列抽出装置、方法及びプログラム
CN108182221B (zh) * 2017-12-26 2022-05-31 北京乐蜜科技有限责任公司 数据处理的方法以及相关设备
US11232132B2 (en) * 2018-11-30 2022-01-25 Wipro Limited Method, device, and system for clustering document objects based on information content
US11409533B2 (en) * 2020-10-20 2022-08-09 Micron Technology, Inc. Pipeline merging in a circuit

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3447530A1 (de) * 1983-12-26 1985-07-11 Hitachi, Ltd., Tokio/Tokyo Vektorprozessor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4094001A (en) * 1977-03-23 1978-06-06 General Electric Company Digital logic circuits for comparing ordered character strings of variable length
US4423206A (en) * 1981-06-16 1983-12-27 The Dow Chemical Co. Vicinal alkylene oxide polymerization
JPH0724055B2 (ja) * 1984-07-31 1995-03-15 株式会社日立製作所 単語分割処理方法
US5146539A (en) * 1984-11-30 1992-09-08 Texas Instruments Incorporated Method for utilizing formant frequencies in speech recognition
GB8517918D0 (en) * 1985-07-16 1985-08-21 British Telecomm Recognition system
JPH0797373B2 (ja) * 1985-08-23 1995-10-18 株式会社日立製作所 文書フアイリングシステム
US5051947A (en) * 1985-12-10 1991-09-24 Trw Inc. High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream
JPS62210538A (ja) * 1986-03-12 1987-09-16 Hitachi Ltd 記号列サ−チ方法および装置
JPS62241026A (ja) * 1986-04-11 1987-10-21 Nec Corp 文字列検索方式
US4972349A (en) * 1986-12-04 1990-11-20 Kleinberger Paul J Information retrieval system and method
JPH07120387B2 (ja) * 1987-03-13 1995-12-20 キヤノン株式会社 文字検索方法
US5014327A (en) * 1987-06-15 1991-05-07 Digital Equipment Corporation Parallel associative memory having improved selection and decision mechanisms for recognizing and sorting relevant patterns
US5060143A (en) * 1988-08-10 1991-10-22 Bell Communications Research, Inc. System for string searching including parallel comparison of candidate data block-by-block

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3447530A1 (de) * 1983-12-26 1985-07-11 Hitachi, Ltd., Tokio/Tokyo Vektorprozessor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Communications of ACM, 18, 6 (Juni 1975), S. 333-340 *

Also Published As

Publication number Publication date
JPH02109167A (ja) 1990-04-20
WO1990004826A1 (fr) 1990-05-03
JP2790466B2 (ja) 1998-08-27
US5604910A (en) 1997-02-18

Similar Documents

Publication Publication Date Title
DE3991231C2 (de) Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge
DE60318722T2 (de) Eine programmierbare regelverarbeitungsvorrichtung für hochgeschwindigkeits-kontextsuchen und -erkennung von mustern in daten
DE2934971C2 (de) Nach dem Fließbandprinzip arbeitender Zentralprozessor
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2712575C2 (de) Assoziatives Speichersystem in hochintegrierter Halbleitertechnik
DE2421130C2 (de)
DE4334294C1 (de) Prozessor für Zeichenketten variabler Länge
DE2000340A1 (de) Verfahren und Vorrichtung zum Suchen verdichteter gespeicherter Informationen
DE112020004295T5 (de) Plausibilitätsgesteuerte defekterkennung in ergebnislogik und zustandscodes für schnellen genauen teilzeichenfolgenabgleich
DE1197650B (de) Parallel-Addierer
DE2405858A1 (de) Normalisierendes verschiebezaehlernetzwerk
DE3518818A1 (de) Datenverarbeitungsvorrichtung und verfahren und vorrichtung zur umsetzung von datenelementen
DE2458331A1 (de) Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
DE102014105218A1 (de) Suchvorrichtung mit Verwendung von endlichen Automaten für Teilworte
EP1330740B1 (de) Verfahren zum zugriff auf eine speichereinheit bei der suche nach teilzeichenfolgen sowie zugehörige speichereinheit
DE2049581B2 (de) Vorrichtung zur zeichenerkennung
DE2617485A1 (de) Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen
DE2952072C2 (de) Rechenschaltung zum Addieren oder Subtrahieren binär codierter Dezimalzahlen
DE3104256C2 (de)
DE1096086B (de) System zum Zusammenfassen vorsortierter Informationen
EP0662226B1 (de) Verfahren zur bearbeitung eines anwenderprogramms auf einem parallelrechnersystem
EP2682866B1 (de) Verfahren zur Umsetzung von Datenformaten
DE3923727A1 (de) Verfahren zum auffinden eines vorgegebenen bitmusters in einer bitfolge
DE2159884A1 (de) Verfahren zur maschinellen Erkennung von Zeichen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee