Zunächst einmal ist dies eine schwierige Sache zu lösen, so weit ich nicht kommen mit einem guten Beispiel, aber ich hoffe, dass jemand hier wird dies herausfinden. Ich hoffe, es gibt einen bekannten Weg, diese Art von Problemen zu lösen, oder einen obskuren Algorithmus.
Szenario:
- In meiner Anwendung habe ich mehrere Anfragen an dieselbe Webseite
- Die Webseite hat einen dynamischen und zufälligen Inhalt (z. B. Datum, Zitat des Tages usw., das theoretisch alles sein kann)
- Die Antwort dieser Anwendung hat 2 Fälle, nennen wir sie "TRUE" und "FALSE". Zum Beispiel manchmal Antwort würde ein "True Text" manchmal wäre es "False Text" zurück.
- Meine Anwendung kennt 3 Beispiele für den Fall "TRUE" und 3 Beispiele für den Fall "FALSE", die aber auch zufällige Inhalte wie "time" enthalten.
Herausforderung
- Wenn meine Anwendung nun eine neue Antwort erhält, wie kann ich verstehen, ob diese Antwort ein Beispiel für einen "TRUE" oder "FALSE" Fall ist?
Was ich ausprobiert habe
- Verarbeiten Sie die erste Stichprobe von TRUE case zeilenweise und erzeugen Sie ein ganzzahliges Array aus den Werten der Zeichen
- Machen Sie dasselbe für die zweite TRUE-Probe
- Machen Sie dasselbe für die dritte TRUE-Probe
- Analysieren Sie die Unterschiede zwischen diesen gespeicherten TRUE-Fällen und erstellen Sie ein neues Array mit
- Da ich nun weiß, welche Zeilen dynamisch sind (z. B. datetime), erstelle ich ein neues endgültiges Array TRUE case, das nur statische Zeilen in einem endgültigen Array TRUE case speichert.
- Wenn ich nun einen neuen Fall habe, erstelle ich ein ähnliches Array und vergleiche es mit dem zuvor gespeicherten endgültigen TRUE-Fall, und wenn es übereinstimmt (mit Ausnahme der gefilterten Zeilen), ist es ein TRUE-Fall, wenn andere Zeilen massiv geändert werden ( es gibt einen Toleranzwert ), dann ist es FALSCH.
Die Grenzen und Schwächen dieses Algorithmus sind ziemlich offensichtlich. Ich habe zwar in einigen Fällen gute Ergebnisse erzielt, aber er funktioniert nicht immer wie erwartet.
Meine derzeitige Klasse funktioniert folgendermaßen:
Dim Analyser AS NEW ContentAnalyzer()
Analyser.AddTrueCase(True1Html)
Analyser.AddTrueCase(True2Html)
Analyser.AddTrueCase(True3Html)
'This will return True if the UnknownHtml is similar to TRUE case, otherwise False
Analyser.IsThisTrue(UnknownHtml)
Tut mir leid, dass der Titel nicht viel Sinn macht, ich konnte keine gute Beschreibung dafür finden.