WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP: Jämföra två textstycken och bedömma likheten? (https://www.wn.se/forum/showthread.php?t=36742)

Jine 2009-05-11 11:49

Hej!

Jag har en svår nöt att knäcka, som mest är i idée stadiet just nu.
Jag vill jämföra två stycken textstycken/filer/whatever och komma fram till hur LIKA dom är - i procent!

Kort sagt ska det vara ett avancerat spamskydd samt "korskoppling" för att bedömma om nån postat ett ett liknande inlägg med en "hitrate" över 90% tex?

Hur skulle man åstakomma detta i PHP?
Jag kommer inte ens fram till en teoretisk lösning som kan fungera!

Help me out!

// Jim

Perben 2009-05-11 12:14

Normal brukar man använda Vector Space Model (http://en.wikipedia.org/wiki/Vector_space_model) för sådant och jämföra texter genom hur orden ligger i "ordrymden" men det kanske är lite jobbigt om du inte har en persistent service (PHP).

Jag tror det finns PHP-portningar av Lucene (http://lucene.apache.org/java/docs/). Där kan du beräkna det s.k Levenstein-avståndet mellan texter med enkla queries (kallas FuzzyQuery på Lucene-lingo), vilket egentligen säger hur många bokstavssubstitutioner du behöver göra för att förvandla en text till den andra... det är också en ganska vanlig metodik för att bedömma likheten på texter.

I andra ord, det är inga snabbhack direkt...

Jine 2009-05-11 12:17

Jag.. hittade.. snabbhack!

http://us2.php.net/levenshtein
http://us2.php.net/similar_text

Fyf*n vad jag älskar PHP ibland (:
Problem solved, and thanks for your post above!

tartareandesire 2009-05-11 13:28

Citat:

Originally posted by Jine@May 11 2009, 12:17
Jag.. hittade.. snabbhack
http://us2.php.net/levenshtein
http://us2.php.net/similar_text
Fyf*n vad jag älskar PHP ibland (:
Problem solved, and thanks for your post above

Förmodar att dessa är ganska resurskrävande om man har större trafikmängder?

Jine 2009-05-11 13:32

Citat:

Ursprungligen postat av tartareandesire
Citat:

Ursprungligen postat av Jine
Jag.. hittade.. snabbhack
http://us2.php.net/levenshtein
http://us2.php.net/similar_text
Fyf*n vad jag älskar PHP ibland (:
Problem solved, and thanks for your post above


Förmodar att dessa är ganska resurskrävande om man har större trafikmängder?

Det tror jag nog säkert att dom är.
Dock ska dom inte användas vid varje sidvisning eller liknande, utan bara batchuppdatera ett sökindex.

Citat:

20000 chars+ took 3-5 secs to process, anything else (10000 and below) took a fraction of a second.
Fortunately for me, there was only a handful of instances with >20000 chars which I couldn't get a comparison % for.


coredev 2009-05-11 14:46

Levenshtein fungerar helt enkelt grymt bra..

taz76 2009-05-11 15:11

Zend Framework har en klass för Lucene-sökningar/index


Alla tider är GMT +2. Klockan är nu 15:14.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson