20. 4. 2016

Pochopení dotazu a podobné fráze v dotazech

V Seznamu dostáváme od uživatelů spoustu dotazů a snažíme se na ně najít co nejlepší odpověď. Nedávno se nám podařilo vymyslet nový způsob, jakým měřit podobnost frází v dotazu. Umožňuje nám například zjistit, že v dotazu “muži v naději tento pátek” se uživatel ptá na film “muži v naději”, aniž bychom frázi “muži v naději” měli předem v nějaké databázi. Dále nám umožňuje zjistit, že v dotazu “hřiště na praze 13” se uživatel NEPTÁ na firmu “Hřiště, s. r. o.”, i když v databázi firem máme tuto společnost registrovanou. V tomto článku se pokusím co nejlépe popsat, jak to funguje.

Štěpnička

Přístup, kdy hledáme pouze samostatná slova, často selhává a nevrací ty nejlepší výsledky. Proto věnujeme velké úsilí pochopení toho, na co se vlastně uživatel ptá. Zkoušíme zjistit, která slova dotazu logicky patří k sobě tak, jak je u sebe zcela samozřejmě vnímá člověk. Například dotaz “muži v naději film”. Rozštěpíme na “muži v naději” a “film”. Nástroji, který toto umožňuje, říkáme Štěpnička.

Štěpnička pro svoji funkci používá mnoho modulů. Některé hledají fráze ve slovnících, jiné zjišťují, jestli dává fráze gramatický smysl, a jiné třeba zase, jestli se fráze v dotazech často vyskytuje. Štěpnička tohle všechno dá dohromady a rozhodne se, které rozštěpení by bylo nejlepší.

Podrobněji popsat Štěpničku by vydalo na samostatný článek, takže prozatím budeme pouze předpokládat, že dotazy na fráze štěpit umíme.

Koncepty a modifikátory

Kromě rozštěpení na fráze zjišťujeme, které fráze zadávají uživatelé samostatně a které ne. Například frázi “muži v naději” zadávají uživatelé často jako samostatný dotaz, ale fráze “film” je téměř vždy součástí nějakého delšího dotazu.

DOTAZ ČETNOST
muži v naději 12345
muži v naději film 6789
film 211

Frázím, které uživatelé zadávají často samostatně, říkáme Koncept. Frázím, které jsou často jen součástí dotazu, říkáme Modifikátor. Žádnou frázi nemůžeme s jistotou označit za Koncept nebo Modifikátor, takže místo toho každé frázi přiřazujeme určitou Konceptovost a Modifikátorovost. Konceptovost a Modifikátorovost nám umožní s frázemi dále pracovat.

Silné modifikátory

Některé modifikátory se v dotazech vyskytují velmi často a zároveň mají vysokou modifikátorovost.

Příklad:

  • online
  • zdarma
  • 2014
  • www
  • recept
  • video

Chceme takové fráze, které mají vysokou četnost a vysokou modifikátorovost, přičemž na modifikátorovosti nám záleží mnohem víc. Takovým frázím říkáme Silné Modifikátory a v současné době používáme prvních 10 000.

Podobnost frází

Když už máme Silné Modifikátory, můžeme začít zjišťovat, které z nich jsou nositeli významu. Třeba Silný Modifikátor “film” bude pravděpodobně znamenat, že uživatel chce najít film a ne recept na večeři nebo adresu restaurace. Tím, že dokážeme hledat Silné
Modifikátory automaticky, dosáhneme většího pokrytí a přesnosti. Skvělé by bylo, kdybychom Silným Modifikátorům nemuseli význam přiřazovat ručně.

Něco takového skutečně můžeme udělat. Zkusíme napřed ukázat, jak můžeme zjistit, jak moc jsou si 2 fráze podobné. Vezmeme 2 fráze a zjistíme, s jakými Silnými Modifikátory je uživatelé zadávají. Četnosti Silných Modifikátorů tvoří vektor, na který můžeme aplikovat Kosinovou podobnost.

fráze 1
muži v naději
vektor 1
0.76
0.0
0.37
0.46
silné modifikátory
film
kniha
herci
ke shlédnutí
vektor 2
0.95
0.23
0.04
0.01
fráze 2
50 odstínů šedi

V tabulce výše jsou již vektory normované na velikost 1. Kosinová podobnost je tedy:

(0.76 * 0.95) + (0.0 * 0.23) + (0.37 * 0.04) + (0.46 * 0.01) = 0.74

Výše uvedeným postupem můžeme zkoumat podobnost frází z hlediska chování uživatelů. Můžeme tak bez dalších nástrojů zjistit, že “muži v naději” a “50 odstínů šedi” jsou
si mnohem podobnější, než například “muži v naději” a “prací prášek Ariel”.

Aplikace

Podobnost frází využíváme při detekci tématu. Vybereme si téma (film) a několik frázi z tohoto tématu (názvů filmů). Tento krok jako jediný probíhá ručně. Na základě těchto několika frází najdeme Silné Modifikátory, které se s těmito frázemi nejčastěji vyskytují. Vznikne Vektor Silných Modifikátorů stejně, jako při podobnosti 2 frází. Potom na základě tohoto vektoru detekujeme téma zcela neznámé fráze. Jedinou podmínkou je, aby ji uživatelé již dříve zadávali v dotazech.

Příklad:

chřipka, zánět středního ucha
sipka
virový zápal plic, zápal mozkových blan, leukémie, angína, autismus, zápal plic, bronchitida, úpal, příušnice, otřes mozku, spálová angína, černý kašel, cystická fibróza, salmonelóza, pupeční kýla, zánět ledvin, střevní chřipka

Jiný příklad:

halušky, jitrnice, utopenci

sipkakucmoch, slovenské halušky, vepřové závitky, prejt, bramboráky, pirohy, chlupaté knedlíky, na halušky, vafle, jelitový prejt, pikantní utopenci, moravský vrabec, na peciválky

V těchto příkladech jsme zadali pouze počáteční fráze – 2 nemoci (chřipka, zánět středního ucha), 3 jídla (halušky, jitrnice, utopenci). Systém sám bez dalších upřesnění tématu vygeneroval výše uvedené seznamy.

Závěr

Díky Štěpení dotazů na fráze, Modifikátorovosti frází a Silným modifikátorů můžeme lépe zjišťovat, na co se uživatelé vlastně ptají, a následně nabídnout lepší výsledky. Jedná se o zcela automatickou metodu nezávislou na znalostních databázích – ke zpřesnění pochopení dotazu nám stačí analyzovat pouze to, jak se nás uživatelé sami ptají.