Re: Phonetic speller function

From: Date: Tue, 18 Jan 2005 00:02:01 +0000
Subject: Re: Phonetic speller function
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-206599@lists.php.net to get a copy of this message
Dotan, Greg Donald wrote:
On Mon, 17 Jan 2005 23:43:48 +0200, Dotan Cohen <dotan_0105@dotancohen.com> wrote:
I looked at the 'sound like' modules in php (leveshtien, soundex) but they are for comparing 2 strings, not creating a string based on what we already have.
You're looking at it from the wrong end. With soundex you create soundex values for _all_ your known words, and you stick them in a db.. then you find the soundex value for the word in question and you do a lookup in your db to find other words with the closest values. You're right that you don't create any new strings based on the word. Instead you would provide a listing of similar words from the db lookup. It's all up to you what words go into the db to pick from.
good example of text search/matching but he has the problem that he still needs to create the words which brings him back to the original problem... how do you create: cayac kayac cayak from: kayak ...he seemed to want to generate permutations - regardless of whether they are actually in the dictionary. well you would start off with a set of zero or more replacement chars for each letter in the alphabet (bare in mind that character (set?) encoding plays a part here). e.g. : $repl = array( 'a' => null, 'b' => null, 'c' => array('k'), 'd' => null; 'e' => array('i'), /* * and so on.. */ ); then onto the string: $str = str_split("kayak"); var_dump($str); str_split() will give you an array, each element containing one letter of the original string. now you need a loop! I leave the magic to build the permutations up to you
I read somewhere most English speaking folks only use about 80K words or so.
programmers use more :-) rgds, Jochem

« previous php.general (#206599) next »