![]() |
Sonderzeichen in text finden
Ich möchte ein kleines programm schreiben, dass eine textdatei einliest und dabei herausfindet, in welcher sprache der text geschrieben ist. Dies soll durch das suchen nach zeichen geschehen, die nur in der entsprechenden sprache vorkommen. Vorerst mal mit den Sprachen Deutsch, Englisch, Französisch, Spanisch, Italienisch und Türkisch.
Beispiel: "ß" gibts nur in Deutsch "é" gibts in Französchisch, Spanisch, Italienisch "ñ" gibts nur in Spanisch Am ende wird geschaut, welche zeichen vorkommen und welche sprachen daraus in Frage kommen ("der text ist wahrschienlich deutsch (D: 67%, E: 12%, S: 3%)"). Jetzt ist meine Frage, was der beste weg ist, sich die entsprechenden zeichen aus dem text zu suchen. Der Suchalgorithmus soll quasi alles von A-Z, 0-9 und alle Satzzeichen ignorieren und den rest auf die sprache prüfen. Kurz: wie suche ich nach allem außer A-Z, 0-9 und satzzeichen? Sollte ich die ausgeschlossenen Zeichen in einen array packen, etwa in der art: (Pseudo code)
Delphi-Quellcode:
Upper/Lowercase ist klar, eventuell mache ich mir auch eine Lern routine, bei der ich einen text einlese und dann sage "das war spanisch".
ignored:=false;
for i:=0 to 30 do begin if zeichen=Ausgeschlossen[i] then ignored:=true; end; if ignored=false then ListBox.Items.Add(zeichen); Außerdem frage ich mich, ob es eventl. probleme mit verschiedenen zeichensätzen geben könnte :gruebel: |
Re: Sonderzeichen in text finden
Naja, es gibt da mehrere Möglichkeiten. Alleridngs wäre es schon gut zu wissen, ob du die Textdatei zuerst in eine memo lädst oder direkt auswertest. Aber zu den Möglichkeiten:
1. Du gehst den Text Zeichenweise durch (besonders praktisch, wenn du die Datei direkt von der Platte einliest, weil du die Datei dann gleich Zeichenweise einlesen kannst). Dann entscheidest du bei jedem Zeichen, welche Sprache das ist. Wobei du auch mehrfachvergebeungen einplanen muss. Also es gibt Sonderzeichen, die Französisch und Spanisch sein können. Naja, jedenfalls hast du dann einen array of Cardinal und jedes arrayitem steht für eine Sprache. Und bei jedem arrayitem, in dessen Sprache das Zeichen vorkommt, erhöhst du die Zahl um 1. 2. Du versuchst mit Hilfe von pos() die Menge von Zeichen zu ermitteln. Alleridings bezweifel ich, dass das schneller ist... Ok, waren doch nur 2 Möglichkeiten, die mir gerade so eingefallen sind. Du musst dann alleridng noch bedenken, dass, wenn in einem Text garkeine Sonderzeichen sind, dieser wahrscheinlich englisch ist und so Sachen... |
Re: Sonderzeichen in text finden
Moin emteg,
welche Texte willst Du denn überprüfen? Ich kann mir nämlich denken, dass Dein Verfahren durch fremdsprachliche Zitate oder auch Eigennamen stark verfälscht wird. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz