Jag har en tabell som har ett textfält som innehåller ca 40-50 ord per rad. Varje sådant fält innehåller ord som är typiska för en textkategori och varje rad representerar alltså en sådan kategori. Jag vill kunna klassificera texter genom att se hur många av orden i varje textfält i databasen som finns i texten jag vill klassificera eller använda någon annan sorts jämförelsealgoritm av den oklassificerade texten och varje textfält i databasen. Något sorts rankingsystem får sedan bestämma vilken kategori den nya texten tillhör.
Det finns ju olika strängjämförelsefunktioner i php och man skulle ju kunna tänka sig att bara iterera över hela kategoritabellen (ca 100 rader) och jämföra den oklassificerade texten med varje textfält i databasen. Då sker ju själva strängjämförelsen i php och inte i MySQL och fördelen är att man då även kan bygga ihop sin egen jämförelsealgoritm.
Skulle det gå att använda MySQL:s fulltext-sökning eller någon strängjämförelsealgoritm som finns i MySQL? Kan man stoppa in hela den oklassificerade texten (hundratalet ord och med stopp-ord borttagna) i en SQL-fråga eller blir det för mycket för MySQL? Ordföljden spelar ingen roll för mig men är det något som MySQL tar hänsyn till vid fulltext-sökning?
En annan approach skulle ju vara att ha en tabell med ett ord per rad och sedan iterera över alla ord och se vilka som förekommer i den nya texten, men då är det ju 5000 ord som skall kollas, kanske lite väl många?
Någon som gjort något liknande? Hur gjorde ni?
|