A másik probléma, hogy nem minden szöveg "szöveg" abban az értelemben, hogy érdemes vele foglalkozni: egy átlagos page jókora része kölünféle linkekből , feliratokból és egyéb haszontalan elemekből áll; és akkor még itt van a kommentek kérdése is.
Sztenderd és széles körben alkalmazott szemantikus tagelésnek pedig továbbra is híján vagyunk...
Jó hasznát vehetjük azonban a HTML dokumentumok fa-természetének, illetve a józan paraszti észnek -- pl. kiindulhatunk abból, hogy sok oldalon a cikkek szövegét P tagek közé ékelik.
És szerencsére itt van nekink a BeautifulSoup nevű remek python modul: HTML-t iterálható és kereshető objektumokká alakít. Ennyi az egész:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def get_paragraph_text(html): | |
soup = BeautifulSoup(html) | |
blocks = [] | |
for paragraph in soup.findAll('p'): | |
myBlock = '' | |
if(paragraph.string): | |
blocks.append(paragraph.string) | |
else: | |
for i in paragraph: | |
if (i.string): myBlock = myBlock+i.string+' ' | |
else: | |
for k in i: | |
if (k.string): myBlock = myBlock+k.string+' ' | |
blocks.append(myBlock) | |
return blocks |
Ettől a kis változtatástól a kulcsszó-kiemelő sokkal tisztább bemeneti szövegekkel tud dolgozni, és sokkal jobb eredményt is produkál:
Egy másik érdekes megfigyelés, hogy az első 6 kulcsszó alapján a Google már elég jó eséllyel rátalál a kérdéses dokumentumra (és valójában lejjebb is lehet menni, tessék kipróbálni!). Így tehát bizonyítottnak tekinthetjük, hogy a Google is használ TF-IDF elemeket az algoritmusában:)