Office: (Office 2013) Textvergleich, methodischer Ansatz gesucht

Helfe beim Thema Textvergleich, methodischer Ansatz gesucht in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Forum. Ich bitte euch um ein kleines Brainstorming bzg. einer einzusetzenden Methodik. Ich bin mir nicht sicher ob SQL, Array, Collection oder... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von thomasreick, 4. April 2015.

  1. Textvergleich, methodischer Ansatz gesucht


    Hallo Forum.

    Ich bitte euch um ein kleines Brainstorming bzg. einer einzusetzenden Methodik. Ich bin mir nicht sicher ob SQL, Array, Collection oder Dictionary hier zielführend sind.
    • Aufgabe ist es, eine (Wort)-Liste A gegen andere Wortliste(n) B oder C abzugeleichen und daraus Ergebnisse für eine weitere Verarbeitung zu ermitteln.
    • A entsteht aus dem Scraping von Kommentaren zu z.B. Nachrichten aus dem Web. Das Ergebnis wird in seine Worte gesplittet und abgelegt. Für jeden Eintrag in A soll anschließend überprüft werden, ob dieser in der/den anderen Tabellen B bzw. C vorkommt. Wenn ja, schließt sich eine Auswert/Zähl/Gewichtungsprozedur an, die hier aber nicht das Thema sein soll.
    • Ich will am Ende ein möglichst performates und leicht zu handelndes Konstrukt erreichen, daß nicht nur in der Access-Welt sondern auch leicht auf Serverstrukturen abegbildet werden kann.

    Bin für jeden Hinweis ob Pro oder Contra zum benannten Vorgehen dankbar.

    Beste Grüße und einen schönen zweiten Ostertag.

    Thomas

    :)
     
    thomasreick, 4. April 2015
    #1
  2. Die Werten sollen 1:1 verglichen werden?
    Dann wäre das über eine entsprechende SQL-Abfrage welche die beiden Felder joint wohl am einfachsten/schnellsten.
     
    CptChaos, 5. April 2015
    #2
  3. Wenn Du schon die Worte als Feldwerte und also Tabellen hast: Wie willst Du diese besser und performanter auswerten als mit Abfragen? Dabei Indizierung der Felder nicht vernachlässigen.
     
    ebs17, 6. April 2015
    #3
  4. Textvergleich, methodischer Ansatz gesucht

    Guten Morgen Eberhard, guten Morgen Benny,
    vielen Dank für eure Antworten und verzeiht mir bitte, daß ich selber erst jetzt zu einer Antwort komme.

    Der direkte Join schließt sich m.E. aus, da ich nicht nur ein Zielwort sondern auch seine Flexionen bzw. Synonyme als kommagetrennten Feldinhalt vorliegen habe. Ich prüfe also ob der Begriff "Tomate" im String "Tomate,Liebesapfel,Paradeiser, Lycus persicum" vorkommt (hier wäre wohl LIKE angebracht, wenn die Entscheidung für SQL-fällt).

    Bei z.B. X-Y (X=alle Worte des Textes, Y=nicht relevante Stopworte wie "und", "oder") zu prüfenden Worten nur EINES Textes und ca. 3.500 Einträgen in den Prüflisten müßte also die Schleife "(X-Y) * 3500 = sehr oft" durchlaufen werden.

    Gerade diese Schleifen denke ich, sollten optimiert werden, z.B. die Prüfliste einmalig in eine Collection oder ein Dictionary laden, um die Prüfung gegen dieses Dictionary laufen zu lassen.

    Was denkt ihr?
     
    thomasreick, 7. April 2015
    #4
  5. Das erste Beispiel lässt sich wunderbar mit SQL lösen wie Du schon selbst erkannt hast. Was ist dort noch das konkrete Problem?
    auch nach mehrmaligem Lesen kann ich Dir hier nicht folgen... kannst Du für diese Konstellation ebenfalls ein konkretes Beispiel (wie das erste) machen?
     
    CptChaos, 7. April 2015
    #5
  6. Denken macht wohl erst Sinn, wenn man eine vollständige Aufgabenstellung überschauen kann. Daraus würde man die Hauptstrategien ableiten.

    Bruchstücke und daraus abgeleitet ständige Wechsel dienen vielleicht Deinem Brainstorming, können aber Beteiligte sehr leicht ermüden.
    (Wenn jemand den Ochsen am Nasenring über den Hof führt, möchte ich nicht der Ochse sein.)
     
    ebs17, 7. April 2015
    #6
  7. Hallo Benny, hallo Eberhard,

    ich will niemanden am Nasenring herumführen.

    Es geht bei der Fragestellung um die Abbildung einer einfachen Stimmungsanalyse aus Texten (Sentimenting) für den Einsatz im MS-Office Umfeld, vorzugsweise Access.

    Aus Texten (A), die aus dem Web geholt werden, sollen Stimmungen "herausgelesen" werden, um am Ende Handlungen empfehlen zu können.

    Dazu gibt es den Input A und die Abgleichsliste(n) B, C, Stopwortliste....

    Da nicht alle Worte eines Textes (Feldinhalt) in A stimmungsbeladen sind, wird die Menge aller Worte eines Textes (X) ohne die ungeladenen Worte (Y) betrachtet (per NOT IN-Statement). Daraus ensteht (X-Y).
    z.B.
    • Text: "Die Tomate ist ein Nachtschattengewächs." => X=5
    • Die Begriffe "Die", "ist", "ein" seien nicht stimmungsbeladene Worte, Stopworte => Y = 3
    • Anzahl der Prüfungsdurchläufe (X-Y) = P => 5-3 = 2

    Hieraus lassen sich also, je nach dem wie oft der Begriff, bzw. wie hoch ein ebenfalls vorhandener Koeffizient für "Tomate" oder "Nachtschattengewächs" ist, die Stimmung des Gesamttextes ermitteln.

    Bei z.B. Kommentaren zu Zeitungsartikeln sollte sich damit herausfinden lassen, ob der Kommentar eine eher positive bzw. negative Stimmung hat.

    Als Weiterführung läßt sich das auf das Pseudonym des Autors erweitern und je nach Qualität der Abgleichslisten auf nahezu jeden Text anwenden sowie Interdependenzen (Wortwahletc) zwischen den Autoren erkennen lassen. Ebenso läßt sich einschätzen welches Profil bzw. welche Rolle dieser Autor spielt, möglicherweise bis dahin, ob es ein realer Autor oder eine Bot ist.

    Die Motivation dazu ist mir im Zusammenhang mit den Kommentaren zu Germanwings-Absturz auf Tagesschau.de gekommen, bei denen mir "Kopf-Ab"-Kommentare einiger Kommentatoren echt sauer aufgestoßen sind....

    @Benny: Ist das Beispiel verständlicher geworden?
    @ebs17: Ist das als Ansatz zum "Denken" ausreichend?
     
    thomasreick, 7. April 2015
    #7
  8. Textvergleich, methodischer Ansatz gesucht

    Man müsste noch ein Gefühl bekommen, welche Textlängen mit welchen Textlängen und über welche Datenmengen abgeglichen werden sollen.

    Mit vielen Abfragen wie WHERE DasFeld LIKE '*begriff*' begibt man sich möglicherweise auch in Grenzbereiche, die dann mit dem eigentlich wünschenswerten SQL nichts mehr zu tun haben.

    Beim Abgleich eines Artikels mit mehreren Worten könnte man auch an RegEx denken. Da hätte man einen Durchlauf, weil man die Suchbegriffe kombinieren kann, etwa ...
    Code:
    ... in Verbindung mit der Execute-Methode, wo man dann die resultierende Matchcollection auch gleich auswerten kann, z.b. die Anzahl der Treffer.
    Siehe auch Codebeispiel - "Intelligente" Textanalyse
    dabei dann auch Beitrag #7 (Beispiel von ransi).
    Vielleicht kannst Du an Hand praktischer Tests Erfahrungswerte für Verhalten/Performance bei gegebenen Konstellationen ermitteln und mitteilen, damit man das Gefühl für Aufgabe und besserer Lösungsvariante dafür ggf. nachjustieren kann.
     
    ebs17, 8. April 2015
    #8
  9. Hallo Eberhard,

    Scraping und Zerlegungen in Worte ist m.E. schnell genug, 3-5 Sekunden
    • Stopwortliste: 992 Datensätze, Text, Kurzer Text Indiziert, Duplikate möglich
    • Stimmungsliste: 3.468 beladene Begriffe mit 1.818 negativ und 1.650 postive beladenen Begriffen, Synonyme nicht enthalten
    • Ergebnisse des Scraping/der Wortliste: 122 Datensätze mit ingesamt 9.744 Worten
    • Um Stopworte bereinigte Wortliste: 4.020 Datensätze, Dauer etwa 10 Sekunden, SQL anbei

    Code:
    Diese 4.020 Worte gilt es gegen die Stimmungslisten zu vergleichen. Ob hier RegEx einen entscheidenen Vorteil bringt? Ich kann es nicht beurteilen, denn wie groß darf ein RegEx Pattern werden?
     
    thomasreick, 9. April 2015
    #9
  10. Dann sollte auch das folgende nicht mehr vorkommen (zusätzlichen Normalisierungsschritt ausführen) wie das folgende:
    Wenn Du dann noch relevanten Feldern einen Index gönnst (SQL ist leicht (8) - Index) und eine bessere Abfrage schreibst, die Indizes auch nutzen kann, solltest Du einen großen Schritt weiter sein.
    Code:
     
  11. Hallo Eberhard,

    herzlichen Dank für den Codeschnipsel. Ist ja rasend schnell (< 2Sek) im Vergleich zu meinem SQL....

    Frage:
    Dieses Ergebnis würde ich als DAO Recordset nehmen, dieses in einer Schleife durchlaufen und für jeden der 4.020 Einträge prüfen, ob dafür eine Stimmung existiert. Wenn ja soll als Rückgabewert der Prüfung am Ende für jedes Wort entweder 0/Null oder der entsprechende gefundene Gewichtungsfaktor aus der Stimmungstabelle stehen. Macht der Ansatz Sinn? Oder welche bessere Lösung könnte per SQL funktionieren?
     
    thomasreick, 9. April 2015
    #11
  12. Hallo Eberhard

    .... mein Ansatz taugt nix. Es sei denn, man hat Zeit, fast 18 Minuten auf ein Ergebnis zu warten.... (4.020 Nettoworte * 3.496 Stimmungen = ca. 1,4 Mio Prüfungen)....
    • Nettoworte = "äußeres Recordset", Stimmungen= "inneres" Recordset
    • strMatch ist das erste Wort der Nettowortliste ("Tomate")
    • strStimmung der Suchstring "Paradeiser,Tomate,Liebesapfel,Lycus persicum"

    Ich prüfe hiermit ob strStimmung strMatch enthält:
    If (InStr(strStimmung, strMatch)) then ... bei >0 Wert holen, sonst 0

    Weißt du / Wer weiß ein schnelleres Vorgehen?
     
    thomasreick, 10. April 2015
    #12
  13. Textvergleich, methodischer Ansatz gesucht

    Hallo,

    ja, ich kann's mir vorstellen was du meinst, aber es wäre für mich pers.
    einfacher, würdest du eine konkrete Dateninformation der Tabellen einstellen
    und diese nach deinen Wünschen preisgeben wie sie in der Abfrage aussehen sollen.
    Was wird mit was verglichen, was wird immer wieder eingefügt aus dem Net und wie
    werden sie gekennzeichnet.
    Man kann im VBA nicht "Tomate" mit "Paradeiser" vergleichen, wenn's nicht einen
    Ansatz der Gleichheit dafür gib, was ja auch verständlich erscheinen mag.

    Möglicher Weise habe ich es auch nicht verstanden und
    ev. kann man es mir ja auch erklären, wie es sein soll.

    Kurz, wie sieht dein Versuch aus.
     
    Kyron9000, 10. April 2015
    #13
  14. Das ist ... unintelligent. Den Hinweis auf weitere Normalisierung hast Du wahrgenommen?

    Etwa:
    Code:
    In Gruppe wird die ursprüngliche Auflistung vermerkt für eine Zuordnung, gerne auch als Fremdschlüssel auf eine zusätzliche Nachschlagetabelle.
    Über ein Feld Stimmung kann man die Bösartigkeit (oder auch andere Dinge) gewichten.

    Beide zusätzlichen Felder können dann in der Abfrage auch ausgewertet werden. Das Matching per Schleife entfällt ersatzlos gegen eine richtige Abfrage.

    Ja, ich baue Bremsen erst nachträglich ein (wenn nötig) ...
     
  15. Guten Morgen Eberhard, guten Morgen Kyron.
    @Eberhard:
    Danke für die berechtigte Kritik. Ich werde also den Normalisierungsschritt gehen müssen. Um den zu vermeiden dachte ich das ganze sei per Dictionary zu handlen.

    @Kyron und @Eberhard:

    Das Layout der Stimmungstabelle ist analog zu
    http://wortschatz.informatik.uni-lei...d/sentiws.html.
    Dort ist auch das Layout der Tabelle erklärt:
    Code:
    Ich habe aus den zwei Tabellen eine gemacht und die so aufgebaut wie aus dem Anhang ersichlich. Die Originalspalten sind C,D und E
     
    thomasreick, 11. April 2015
    #15
Thema:

Textvergleich, methodischer Ansatz gesucht

Die Seite wird geladen...
  1. Textvergleich, methodischer Ansatz gesucht - Similar Threads - Textvergleich methodischer Ansatz

  2. Laufzeitfehler 1004 "Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen".

    in Microsoft Excel Hilfe
    Laufzeitfehler 1004 "Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen".: Hallo Leute,*:)* nachdem ich in die "addIn 1.2.4" ein Sheet RKL eine Dropdownliste und ein Togglebutton hinzugefügt habe bekomme ich beim aufruf der UF die Fehlermeldung "Laufzeitfehler 1004 "Die...
  3. Die zehn besten Methoden zum Bereinigen von Daten

    in Microsoft Excel Tutorials
    Die zehn besten Methoden zum Bereinigen von Daten: Die zehn besten Methoden zum Bereinigen von Daten Excel für Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Mehr......
  4. Bewährte Methoden zum Einrichten und Ausführen einer Teams-Besprechung oder eines ...

    in Microsoft Teams Tutorials
    Bewährte Methoden zum Einrichten und Ausführen einer Teams-Besprechung oder eines ...: Bewährte Methoden zum Einrichten und Ausführen einer Teams-Besprechung oder eines Live-Ereignisses für Gehörlose und schwerhörige Beim Einrichten und ausführen Microsoft Teams Besprechungen und...
  5. Bewährte Methoden zum Erstellen eines Microsoft Teams-Liveereignisses

    in Microsoft Teams Tutorials
    Bewährte Methoden zum Erstellen eines Microsoft Teams-Liveereignisses: Bewährte Methoden zum Erstellen eines Microsoft Teams-Liveereignisses Microsoft Teams Mehr... Weniger Um ein tolles...
  6. Bewährte Methoden für Outlook: Schreiben von tollen e-Mails

    in Microsoft Outlook Tutorials
    Bewährte Methoden für Outlook: Schreiben von tollen e-Mails: Bewährte Methoden für Outlook: Schreiben von tollen e-Mails Outlook für Microsoft 365 Outlook 2019 Outlook 2016 Outlook 2013 Outlook 2010 Outlook 2007...
  7. Laufzeitfehler '-2147221040(800401d0)' Die Methode 'Copy'...

    in Microsoft Excel Hilfe
    Laufzeitfehler '-2147221040(800401d0)' Die Methode 'Copy'...: Hallo Leute, ich habe schon länger ein Problem in einem sehr großen VBA-Makro beim kopieren von Diagrammen. In der Zeile "objDia.Copy" kommt sporadisch die Fehlermeldung: Laufzeitfehler...
  8. Die Methode Document für dasObjekt Iwebbrowser2 ist fehgeschlagen

    in Microsoft Access Hilfe
    Die Methode Document für dasObjekt Iwebbrowser2 ist fehgeschlagen: Hallo, ich spreche mittels vba eine html seite an. Alles funktionierte bis ich gemerkt hatte, dass ich wenn nötig ist runterscrollen muss. Hier beginnt auch mein Problem. Nach der Änderung für...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden