Autor |
Beitrag |
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Fr 21.09.07 12:40
Ich überlege mir gerade einen Suchalgorithmus. Beispiel:
Titel: Hansa nach Niederlage abgestiegen
Suchbegriff: Hansa Abstieg
Wie kann ich nun per Software klar machen, dass das Wort abgestiegen mit Abstieg sinngemäß gleichzusetzen ist? Per Stringvergleich würde ja herauskommen, dass nur Hansa gefunden wurde.
Kurz: Wie bekommt man das hin, dass man z.B. aus abgestiegen das Wort Abstieg macht (gleiche Wortfamilie) um dann per Stringvergleich abzugleichen.
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Calculon
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: Fr 21.09.07 12:46
Eine Idee:
Wenn du mehrdimensionale arrays of string benutzen würdest, könnte man allen Einträgen eines Indexes die selbe Bedeutung zuweisen:
Quelltext 1: 2:
| [gehen] [Gang].. [Abstieg] [absteigen] [abgestiegen].. |
Wäre aber viel Arbeit alle Wortbedeutungen für jedes deutsche Wort zu finden...
Gruß
Calculon
--
|
|
Marco D. 
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Fr 21.09.07 12:50
Danke für deine Hilfe.
Jedoch ist die programmiertechnische Umsetzung nicht das Problem.
Ich bräuchte eine Datei, in der zu jedem Wort alle Wörter der gleichen Wortfamilie auftauchen. Sowas gibt's wohl nicht, oder? Wer erstellt sowas freiwillig? Das muss man ja den gesamten Duden durcharbeiten.
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 21.09.07 12:56
Ach, für Geld machen die Leute eine ganze Menge freiwillig.
Dein Problem wäre damit ja nicht gelöst. Du bräuchtest auch noch eine Synonym-Verwaltung. Man kann zum Beispiel nach Auszubildender oder Lehrling (auch wenn es heute nicht mehr gebräuchlich ist) suchen.
|
|
TProgger
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: Fr 21.09.07 13:00
Vielleicht nützt dir folgender Link was: home.arcor.de/pdxstuff/SoundEx.rar
Dort wird eine SoundEx.Pas verwendet, die Algorithmen beinhaltet, um ähnliche Wörter zu finden. Das habe ich vor einigen Jahren mal bei Datenbankabfragen benutzt. Wenn man "Meier" eingab, dann wurde auch "Maier", "Meyer", "Mayer" etc. gefunden.
Kurz gesagt, bekommt jedes Wort eine bestimmte Wertigkeit, und die, die die gleiche Wertigkeit haben, sind ähnlich.
Zieh dir mal den Code der uSoundEx.pas rein, vielleicht hilft dir das.
|
|
Calculon
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: Fr 21.09.07 13:25
TProgger hat folgendes geschrieben: | Kurz gesagt, bekommt jedes Wort eine bestimmte Wertigkeit, und die, die die gleiche Wertigkeit haben, sind ähnlich. |
Aber Phoneme bringen ihn hier auch nicht weiter, da "Abstieg" und "abgestiegen" nicht als das gleiche Wort erkannt werden würden.
[edit]Aber bei Rechtschreibfehlern würde dich das schon weiterbringen  [/edit]
Gruß
Calculon
--
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 21.09.07 13:45
Hm. Das geht stark in die Richtung Semantik, oder? Ist afaik ein recht aktuelles Forschungsgebiet. SoundEx bringt da so ziemlich gar nichts, würde ich behaupten. Es geht dir ja nicht nur darum, den Text selbst auseinanderzunehmen, sondern den Sinn dahinter zu erfassen und daraus ein paar Schlagwörtre zu generieren.
Ich sag mal so: Wenn du das vernünftig hinbekommst, dann kannst du das an Google für ein paar Millionen oder so verkaufen. Die freuen sich bestimmt über sowas. Alternativ ne eigene Suchmaschine starten und Google vom Markt drängen. 
_________________ We are, we were and will not be.
|
|
|