Ich habe eine Sammlung von Texten von einigen Autoren. Jeder Autor hat eine eindeutige Signatur oder einen Link, der in allen seinen Texten vorkommt.Wie findet man den längsten Teilstring, der in jedem Element eines Arrays vorkommt?
Beispiel für Author1:
$texts=['sdsadsad daSDA DDASd asd aSD Sd dA SD ASD sadasdasds sadasd @jhsad.sadas.com sdsdADSA sada', 'KDJKLFFD GFDGFDHGF GFHGFDHGFH GFHFGH Lklfgfd gdfsgfdsg df gfdhgf g hfghghjh jhg @jhsad.sadas.com sfgff fsdfdsf', 'jhjkfsdg fdgdf sfds hgfj j kkjjfghgkjf hdkjtkj lfdjfg hkgfl @jhsad.sadas.com dsfjdshflkds kg lsfdkg;fdgl'];
erwarteten Ausgabe für Author1 ist:
@jhsad.sadas.com
Beispiel für Author2:
$texts=['This is some random string representative of non-signature text. This is the *author\'s* signature.', 'Different message body text. This is the *author\'s* signature. This is an afterthought that expresses that a signature is not always at the end.', 'Finally, this is unwanted stuff. This is the *author\'s* signature.'];
Erwartete Ausgang für Author2 ist:
This is the *author's* signature.
Pay insbesondere Hinweis Es auf die Tatsache, gibt es keine zuverlässige Identifizierung von Zeichen (oder Positionen), die den Anfang oder das Ende der Signatur bedeuten. Es kann eine URL sein, eine Twitter-Erwähnung, irgendeine Art von einfachem Text usw. beliebiger Länge, die eine Folge von Zeichen enthält, die am Anfang, am Ende oder in der Mitte der Zeichenfolge auftritt.
Ich suche eine Methode, die die längste Teilzeichenfolge, die in allen $text
Elemente für einen einzelnen Autor existiert extrahieren wird.
Es wird erwartet, dass alle Autoren für diese Aufgabe einen Signatur-Teilstring haben, der in jedem Post/Text existiert.
IDEA: Ich denke über die Umwandlung von Wörtern in Vektoren und Suche nach Ähnlichkeit zwischen den einzelnen Texten. Wir können Kosinusähnlichkeit verwenden, um die Signaturen zu finden. Ich denke, die Lösung muss eine Sache wie diese Idee sein.
mickmackusa's commented code erfasst die Essenz dessen, was gewünscht wird, aber ich würde gerne sehen, ob es andere Möglichkeiten gibt, das gewünschte Ergebnis zu erzielen.
Sie müssen 'finden @ jhsad.sadas.com' oder bestätigen nur die Zeichenfolge hat? Erlauben Sie losen Treffern, z.B. '@ jhsad.sadas.com.uk'? '@jhsad \ .sadas \ .com \ b' würde funktionieren, oder wenn die Domäne eine Variable ist, verwenden Sie 'preg_quote' darauf. – chris85
@ chris85, Ich möchte eine Autorensignatur in seinen Texten finden. Ich weiß nicht, was es sein könnte und wo er es verwenden wird. – mrmrn
Wenn Sie nicht wissen, was es ist, wie können Sie es identifizieren? – chris85