Wort in Text mit >100.000 Wörter finden

D

DerMitWörtern

Gast
Hallo Leute

Ich habe ein Textfile mit Synonymen. Insgesamt sind es etwa ca. 120.000 Wörter die durch ; getrennt sind.
Ein kleiner Auszug:
Buchführung;Buchhaltung
Metabolismus (fachsprachlich);Stoffwechsel
schütteln;rütteln
Konferenzraum;Sitzungszimmer

Nun möchte ich, dass der Anwender ein Wort eingibt und ihm dann die Synonyme dazu angezeigt werden. Ich bin mir aber nicht sicher wie ich das nun am besten angehe.
Die einfachste Möglichkeit wäre jedes mal wenn ein Wort eingegeben wird das File einzulesen bis das Wort gefunden wird. Also etwa so:
Code:
while (Wort nicht gefunden){
   String wort = nächstes Wort einlesen
   if(wort = gesuchtesWort)
       break;
}
Allerdings habe ich die Befürchtung, dass das bei der Menge an Worten relativ lange dauern kann.

Eine andere Möglichkeit die mir eingefallen ist wäre beim Programmstart einen Trie wie hier beschrieben aufzubauen. Damit würde es wohl schneller gehen ein Wort zu finden, der Implementierungsaufwand steigt aber deutlich.

Was meint ihr dazu?
 

parabool

Bekanntes Mitglied
Das einfachste wäre, das Textfile in eine (embedded) Datenbank einzulesen und dann
per SQL die Synonyme zu suchen.

z.B.
Eine Tabelle für die Wörter -> id | Wort
Eine Tabelle für die Verknüpfungen id | id_synonym

Warum ein Trie? Die Synonyme sind doch fest eineinder zugeordnet, eine Ähnlichkeitssuche
greift hier gar nicht.
 
Zuletzt bearbeitet:

timbeau

Gesperrter Benutzer
Warum sollte Trie schneller sein? Ist ja nur die Speicherverwaltung.

Außerdem braucht man dann immernoch Synonyme.

Die schlechteste Möglichkeit ist es, ein File jedes Mal neu einzulesen.

1x einlesen. Die Synonyme in einer HashMap z.B. unter dem Wort speichern.

Um Platz zu sparen, könnte man auch jedes Wort mit einem int kodieren und dann hast du nur noch sowas wie
K<>Values
schütteln <> 356, 4590, ....

und guckst in einer 2. Map nach.

Ich weiß nicht, was die JVM mit gleichen Strings in diesem Fall macht. Ich nehme an, jeder wird einzeln gespeichert. Durch die Kodierung kann man alle gleichen Strings auf einen int mappen.


@SQL: Willst du schnell nach was suchen, nimm keine DB.
 

Ark

Top Contributor
Ich tendiere grundsätzlich ebenfalls zu Tries: Radix tree - Wikipedia, the free encyclopedia

Aber mal ein paar grundsätzliche Fragen, die sehr wesentlichen Einfluss auf Verwendbarkeit, Speicherverbrauch und Geschwindigkeit haben können:
  • Zeigt immer ein Wort auf genau eine Menge von Synonymen? Oder gibt es für ein Wort mehrere mögliche Synonymemengen? So gibt es ja z.B. einmal das Wort "umfahren" und dann noch das Wort "umfahren", dass so ziemlich das krasse Gegenteil zu ersterem bedeutet. :D
  • Können alle Wörter jeweils sowohl Schlüssel als auch Wert sein? Oder gibt es Wörter, auf die nur verwiesen wird, die man aber nicht nachschlagen kann?
  • Was ist wichtiger: Geschwindigkeit beim Nachschlagen oder Geschwindigkeit beim Ändern? Muss sich so ein Wörterbuch überhaupt ändern können, nachdem es erstellt wurde?

Ark
 

parabool

Bekanntes Mitglied
ok, Radix tree soll ev. verwendet werden um ein Wort, dem Synonyme zugeordnet sind, erstmal zu finden.
Falsch verstanden.

Können alle Wörter jeweils sowohl Schlüssel als auch Wert sein?

id|wort
-------
1 |domizil
2 |haus
3 |buchführung
4 |wohnung
..

id|id_synonym
--------------
1 |2
1 |4
..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Ein bestimmtes Wort in einem Text zählen (String in String) Allgemeine Java-Themen 9
buchfrau Anagram für beliebiges Wort Allgemeine Java-Themen 2
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
The Pi Wie oft wird ein Buchstabe in einem Wort wiederholt? Allgemeine Java-Themen 16
4a61766120617274697374 PDF iText Wort Koordinaten auslesen Allgemeine Java-Themen 1
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Regex: Komplettes Wort bekommen Allgemeine Java-Themen 3
M Methode um ein Wort raus zu schneiden? Allgemeine Java-Themen 3
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
B Gesplittetes Wort zusammenfügen Allgemeine Java-Themen 7
F Char-Array nach einem Wort durchsuchen! Allgemeine Java-Themen 11
G Wort am Bildschirm -- Koordinaten suchen Allgemeine Java-Themen 2
D readChar; wort abspeichern :( Allgemeine Java-Themen 5
A Wort in seine Buchstaben zerlegen Allgemeine Java-Themen 37
E Wort kodieren mit bit shifting? Allgemeine Java-Themen 6
T bestimmtes wort aus string lesen Allgemeine Java-Themen 12
O Mit jsoup Text aus HTML-Datei rausgrabben Allgemeine Java-Themen 29
C EML Email Text in String wandeln Allgemeine Java-Themen 11
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
M Thymeleaf th value und th text Allgemeine Java-Themen 1
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
_user_q Eingegebenen Text wiederholt schreiben lassen Allgemeine Java-Themen 9
G Darstellung von Text auf MapContext von GeoTools Allgemeine Java-Themen 2
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
Mozart53 JLabel nur meinen Text verschieben ohne Image Allgemeine Java-Themen 3
izoards Bestimmter Text aus PDF extrahieren Allgemeine Java-Themen 3
B Scanner erkennt keinen Text in Textdatei, obwohl welcher drinsteht Allgemeine Java-Themen 10
K HTMLEditor HTML Text in Rich Text umwandeln Allgemeine Java-Themen 14
kodela JDialog zeigt Text nicht an Allgemeine Java-Themen 5
L Text filtern Allgemeine Java-Themen 1
Bluedaishi TEXT Kodierung Allgemeine Java-Themen 3
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
S Ini Text aus String parsen Allgemeine Java-Themen 1
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
E CSV mit Text und Binärdaten auslesen Allgemeine Java-Themen 7
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
I Text suchen und ersetzen im Word Dokument Allgemeine Java-Themen 3
windl Text mining / deep learning Allgemeine Java-Themen 0
I Text aus Input-Box entnehmen und zuweisen Allgemeine Java-Themen 1
KeexZDeveoper Text Mining Allgemeine Java-Themen 3
L Input/Output Wie kann man in der Konsole einen Text farbig ausgeben z.b in grün Allgemeine Java-Themen 6
B Arrays mit Text und Zahlen füllen Allgemeine Java-Themen 3
A Datenexport (Text und Draw) Allgemeine Java-Themen 1
L Text von txt auf JTextArea Allgemeine Java-Themen 4
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
I Apache POI Word Text einfügen Allgemeine Java-Themen 26
T itext: text in ein textfeld hinzufügen Allgemeine Java-Themen 2
B Farbiger Text in der Konsole Allgemeine Java-Themen 1
K Pdf mit dynamischem Text mit iText Allgemeine Java-Themen 0
D Text Analyzer Allgemeine Java-Themen 2
RalleYTN Audiodatein(.ogg/.wav) in Text konvertieren Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
X Löschen von einer Zeile in einer Text Datei. Klappt nicht. Allgemeine Java-Themen 4
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
S Text in mehreren Sprachen korrekt darstellen? Wie waehle ich die Fonts aus..? Allgemeine Java-Themen 0
J Java - Zeile aus Text datei löschen Allgemeine Java-Themen 13
M Text in erstelltes Excelfile schreiben Allgemeine Java-Themen 6
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
P HTML Text bearbeiten Allgemeine Java-Themen 1
B JFrame Text Ausgabe Allgemeine Java-Themen 7
G Makierter Text in Arbeitsspeicher Allgemeine Java-Themen 2
B Text in die Mitte der Konsole schreiben. Allgemeine Java-Themen 1
M Variablen Variablen in Text einbinden Allgemeine Java-Themen 5
P iText Text zentrieren Allgemeine Java-Themen 3
J Verschlüsselung von Text? Allgemeine Java-Themen 2
M Text datei in java jar datei einbinden Allgemeine Java-Themen 4
S Swing Text in eine JTextArea schreiben Allgemeine Java-Themen 17
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
S Robuste Methode um Text von HTML code zu extrahieren..? Allgemeine Java-Themen 6
achillesat Rich Text Editor Allgemeine Java-Themen 2
M CMD-Text anzeigen Allgemeine Java-Themen 10
G Text Mining Allgemeine Java-Themen 7
B Text auf Standarddrucker drucken Allgemeine Java-Themen 3
S Library fuer Internet-Text-Daten-Quellen..? Allgemeine Java-Themen 8
nrg Find and replace Text docx Allgemeine Java-Themen 6
S Text in for Schleife in Label einfügen Allgemeine Java-Themen 4
M Funktion gesucht: Text vektorisieren Allgemeine Java-Themen 20
B Text wird nicht richtig angezeigt Allgemeine Java-Themen 9
Q Text Datei einlesen Allgemeine Java-Themen 27
N .doc text ändern Allgemeine Java-Themen 12
R Komponente hat nicht die gesetzten Eingeschaften (Text, Farbe) Allgemeine Java-Themen 3
M NOA an den Source Text des Dokumentes kommen Allgemeine Java-Themen 7
A Text via RegEx durchsuchen und teile ersetzten Allgemeine Java-Themen 5
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
A Umwandlung von Text/Zeichen in Polynome Allgemeine Java-Themen 8
Y Eclipse ppt Folie erzeugen + text plazieren Allgemeine Java-Themen 4
cedi Eingegebenen Text in der Konsole nicht sichtbar machen oder nur in Sternchen anzeigen Allgemeine Java-Themen 2
D markierten Text kopieren Allgemeine Java-Themen 2
P Doppeltverkettete Listen + Text Allgemeine Java-Themen 5
DEvent embedded Object Database in Text Format Allgemeine Java-Themen 5
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
R Texterkennung - Text aus einem/r Bild/Grafik auslesen Allgemeine Java-Themen 2
M String in Html Text umwandeln Allgemeine Java-Themen 2
T eingefügter Text nach dem rendern spiegelverkehrt Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben