webForumDet fria alternativet

fråga "lisebergskaninen"

ASP

6 svar · 498 visningar · startad av magnusfeldth

Medlem sedan jan. 20034 480 inlägg
Frågan#1

På allt fler sajter, tex liseberg, moderaterna mm finns en liten figur man kan ställa frågor till och få fram ett svar. Man skriver till exempel "Vem vinner Robinson?" och så får man ett svar i stil med: "Robinson sänds numera på TV3"...

Hur skriver man en kod som gör nåt sånt?

Jag letar efter en kod som i en fråga letar efter vissa bestämda ord som jag lagt in i en databas. Så exempelvis om någon skriver frågan "Vem vinner Robinson" så finns ordet Robinson i databasen och innehåller svaret: "Robinson sänds numera på TV3"

Medlem sedan juni 20008 205 inlägg
#2

Finns en massa sätt att göra det på, som är mer eller mindre jobbiga och mer eller mindre dåliga ;)
En variant är att försöka identifiera viktiga ord, t.ex. "Robinson" i ditt fall, och sedan söka genom databasen efter poster som är relevanta för den termen (≈som innehåller det ordet). Hur man identifierar viktiga ord... tja ;)

En relativt enkel lösning är att ge artiklar nyckelord, plocka ut nyckelorden och kolla om frågan sammanfaller med någon av nyckelordssamlingarna. Eventuellt kan man även vilja ha en "stemmer" som plockar ut ordstammar ur ord, så man slipper dåliga träffar på grund av att man använt ett annat tempus på ett verb när man söker än den som skrev nyckelorden gjorde (t.ex. "vann" i stället för "vinner").

Medlem sedan jan. 20034 480 inlägg
#3

Men hur skriver man en SQL-kod som kollar ord för ord om de matchar i db:n?

Medlem sedan juni 20008 205 inlägg
#4

Med valfri texteditor? :p Ta det som ett mysigt söndagspyssel.

Medlem sedan mars 20033 686 inlägg
#5

*ropar på LarsG*

Det vore intressant att se hur en enkel källkod för en sådan funktion kan se ut.

Medlem sedan juni 20008 205 inlägg
#6

magnusfernstrom, använder du "enkel" i en tråd om behandling av naturligt språk? Rookie mistake ;)

Jag vet inte om det framgick, men det hela innebär mer jobb än bara lite SQL-hackande. Den grundläggande principen (en fras som betyder "tänk och koda självständigt") är nåt i stil med:

  1. (Valfritt men varmt rekommenderat) Stemma orden.
  2. För varje artikel, kolla hur många av dess nyckelord som stämmer överens med frågan.
  3. Sortera efter antalet matchande nyckelord, så får du de mest relevanta först och de mindre intressanta senare.

Så. Du kan göra det på tusen sätt. Hitta på ett och känn dig stolt över ett gott dagsverke :)

(Brasklapp: Nej, jag har ingen aning om huruvida det här faktiskt funkar bra. Förmodligen inte, men att hantera naturligt språk är inte bara en eller två utan tre vetenskaper... prova läsa datorlingvistik så får ni se.)

Medlem sedan mars 20033 686 inlägg
#7

Alltså enklaste möjliga, duh!

Men du är ändå min favoritpåg :birp

Du är ju alltid tillfullo helbrägda, liksom! ;)

red Och jag fattade att mer än en SQL-sats krävs :p

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)