2


0

Comment puis-je détecter si une phrase est contenue dans une page (floue)?

Je cherche depuis un moment maintenant, mais je n’ai rien trouvé qui réponde à mes besoins jusqu’à présent. (Cela a été utile, mais pas convaincant)

De deux sources différentes, j’obtiens deux chaînes différentes. Je veux vérifier si le plus court est contenu dans le plus grand. Cependant, comme ces chaînes sont toutes deux enracinées dans un document OCR, il peut y avoir des différences évidentes.

Exemple:

String textToSearch = "Recognized Headline";
String documentText = "This is the document text, spanning multiple pages" .
                      "..." .
                      "..." .
                      "This the row with my Recognizect Head1ine embedded" .
                      "..." .               ^^^^^^^^^^^^^^^^^^^^
                      "..." .
                      "End of the document";

Comment puis-je trouver ma chaîne de manière fiable dans la page sans utiliser une installation Lucene / Solr autonome? (Ou peut-être que je n’ai tout simplement pas trouvé le tutoriel / manuel). Il doit y avoir une bibliothèque qui peut le faire, non?

1 Answer


0


Tout d’abord, vous devez trouver votre source d’entrée. Une page Web a une arborescence DOM qui peut être analysée de deux manières: SAX (modèle événementiel sans contexte) ou DOM (modèle arborescent avec contexte). SAX est idéal ici car vous n’avez pas vraiment besoin d’avoir des informations contextuelles pour récupérer un flux de nœuds de texte à jetons depuis le DOM. Convertissez tous les nœuds textuels en un flux de jetons.

Celui que vous avez un flux de jetons, vous pouvez faire votre traitement sur eux. Pour de grandes quantités d’algorithmes d’entrée comme la correspondance de chaîne Levenshtein deviennent inadéquates. Regardez plutôt les chaînes de Markov. Ils peuvent aider à faire correspondre un ensemble d’entrées à un ensemble de sorties de manière assez fiable et efficace.