DE3991231C2 - Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge - Google Patents
Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer TextzeichenfolgeInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 130
- 239000013598 vector Substances 0.000 claims abstract description 537
- 238000000034 method Methods 0.000 claims description 126
- 230000007704 transition Effects 0.000 claims description 77
- 238000001514 detection method Methods 0.000 claims description 32
- 101000945096 Homo sapiens Ribosomal protein S6 kinase alpha-5 Proteins 0.000 claims description 31
- 102100033645 Ribosomal protein S6 kinase alpha-5 Human genes 0.000 claims description 31
- 108010076504 Protein Sorting Signals Proteins 0.000 abstract 1
- 238000011946 reduction process Methods 0.000 description 62
- 230000009467 reduction Effects 0.000 description 36
- 238000010586 diagram Methods 0.000 description 34
- 230000008569 process Effects 0.000 description 31
- 101000945093 Homo sapiens Ribosomal protein S6 kinase alpha-4 Proteins 0.000 description 20
- 102100033644 Ribosomal protein S6 kinase alpha-4 Human genes 0.000 description 20
- 230000000694 effects Effects 0.000 description 6
- 238000005259 measurement Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 101150041731 CAC2 gene Proteins 0.000 description 1
- 241000772415 Neovison vison Species 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000008719 thickening Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query 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
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.
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.
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.
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.
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.
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.
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.
Die Fig. 4 ist ein Flußdiagramm, das den Inhalt der oben
erwähnten ersten Reduktionsvorgangsroutine 31 zeigt.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
(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.
Es erfolgt nun eine Erläuterung einer zweiten Ausführungsform
zum Bewirken einer vektoriellen Operation bei einer Stichwortsuche
gemäß der vorliegenden Erfindung.
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.
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.
Die Verarbeitung wird nun im Detail beschrieben.
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).
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
Gemäß Fig. 15 werden die Schritte 1503 und darunter zum
obigen Zweck für jede Kandidatenzeichenfolge wiederholt.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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)
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)
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)
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 |
-
1988
- 1988-10-18 JP JP63260616A patent/JP2790466B2/ja not_active Expired - Lifetime
-
1989
- 1989-10-17 US US07/499,424 patent/US5604910A/en not_active Expired - Fee Related
- 1989-10-17 WO PCT/JP1989/001064 patent/WO1990004826A1/ja active Application Filing
- 1989-10-17 DE DE3991231A patent/DE3991231C2/de not_active Expired - Fee Related
Patent Citations (1)
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)
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 |