ΔιαχΕιριση Περιεχομενου στον Παγκοσμιο Ιστο &...
DESCRIPTION
ΔιαχΕιριση Περιεχομενου στον Παγκοσμιο Ιστο & Γλωσσικα Εργαλεια . 4 ο Προσκομιστές Πληροφορίας. 11/3/2013. Ενότητες. Παγκόσμιος Ιστό και Διαδίκτυο Προσκομιστές Πληροφορίας Πρακτικά Προβλήματα Focused Crawlers Crawling using Python. Document corpus. IR System. Query String. 1. Doc1 - PowerPoint PPT PresentationTRANSCRIPT
ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ & ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ
4ο Προσκομιστές Πληροφορίας11/3/2013
Ενότητες
Παγκόσμιος Ιστό και Διαδίκτυο Προσκομιστές Πληροφορίας Πρακτικά Προβλήματα Focused Crawlers Crawling using Python
2/45
Συστήματα Ανάκτησης Πληροφορίας3/45
IRSystem
Query String
Documentcorpus
RankedDocuments
1. Doc12. Doc23. Doc3 . .
Αναζήτηση και εντοπισμός πληροφορίας που σχετίζεται με την πληροφοριακή ανάγκη του χρήστη
Ταυτόσημη με της αναζήτηση πληροφορίας στον Παγκόσμιο Ιστό
Συστήματα Ανάκτησης Πληροφορίας Στο Διαδίκτυο
Query String
IRSystem
RankedDocuments
1. Page12. Page23. Page3 . .
Documentcorpus
Web Spider
Η ύπαρξη του υποσυστήματος spider (ή crawler) αποτελεί την κύρια διαφορά από ένα παραδοσιακό σύστημα ανάκτησης πληροφορίας
4/45
Ο παγκόσμιος ιστό σήμερα
http://www.worldwidewebsize.com/
5/45
Χρήση διαφορετικών γλωσσών6/45
Ο παγκόσμιος ιστός σήμερα To μέγεθος του Παγκόσμιου Ιστού μεταβάλλεται
συνεχώς. Surface Web
11.5 billion web pages (2005) http://www.cs.uiowa.edu/~asignori/web-size
48 billion web pages (2013) Deep Web
Τουλάχιστον 538.5 billion deep web pages (2005) Γλώσσες στον Παγκόσμιο Ιστό (2002)
Αγγλικά 56.4% Γερμανικά 7.7% Γαλλικά 5.6% Γιαπωνέζικα 4.9%
7/45
Προσκομιστές Πληροφορίας Προγράμματα που εκμεταλλεύονται τη
δομή γράφου του Παγκόσμιου Ιστού προκειμένου να επισκεφθούν όσο το δυνατόν μεγαλύτερο μέρος του
Απώτερος σκοπός: η δημιουργία ενός ευρετηρίου για τις ιστοσελίδες που ανακάλυψε.
Εναλλακτικοί τρόποι ονομασίας: wanderers, robots, spiders, fish και worms.
8/45
Απλός Αλγόιθμος προσκόμισης Στην πιο απλή μορφή:
ξεκινά από μία λίστα διευθύνσεων ιστοσελίδων αρχικοποίησης (Seed list).
Για κάθε διεύθυνση ιστοσελίδας (URL) της λίστας ανακτάται η αντίστοιχη ιστοσελίδα
Εξάγονται οι υπερσύνδεσμοι (Hyperlinks) που αυτή περιέχει.
Η λίστα αυξομειώνεται προσθέτοντας τις νέες διευθύνσεις και απομακρύνοντας εκείνες που ελέγχονται.
Η διαδικασία συνεχίζεται μέχρι να ανακτηθεί ένας ορισμένος αριθμός ιστοσελίδων ή μέχρι να ανακτηθούν όλες οι ιστοσελίδες
9/45
Παραδείγματα Google Bot (Brin S.,Page L., 1998 ) Mercator (Heydon A., Najork M., 1996) Internet Archive (Burner M.,1997) Dominos (Hafri Y., Djeraba C., 2004)
10/45
Επιλογές προσκόμισης Πως θα αποφευχθεί η προσκόμιση διπλότυπων
ιστοσελιδων; Πώς θα μειωθεί ο φόρτος στους επισκεπτόμενους
ιστότοπους; Με ποιο ρυθμό θα πρέπει ο προσκομιστής να
ανανεώνει τις σελίδες; Πως μπορεί να παραλληλοποιηθεί η διαδικασία
της ανάκτησης;
11/45
Αρχιτεκτονική προσκομιστή γενικού σκοπού
WWWPQ
Index
Seed URLs
12
34
Crawling Threads
Request
Response
Stop Criteria?
Yes:Pop Fisrt-N
URLs
Yes
No
Processes each Web Page
ContentNew URLsAlready Seen?
No:Push new Urls To PQ
Yes:Discard already
Seen URLs
X Web Page Storage
Store To DB
After x tics
Inactive Threads?
No
Yes:Ask For URLs
Clock
Has URLs?
No
No: Kill Crawling Thread
More URLs in Local Queue?
Yes:Process
Next URL
X
12/45
Απαλοίφοντας της Διπλές ιστοσελίδες
Ο γράφος του WWW δεν είναι δέντρο Πιθανότητα να συναντησουμε >1 φορές την ίδια σέλίδα Ελεγχουμε και επεξεργαζόμαστε κάθε νέα ιστοσελίδα
μόνο μία φορά Θα πρέπει να διατηρείται ευρετήριο για τις ιστοσελίδες
που έχουν ελεχθεί. Επιλογή του ευρετηρίου για καλύτερη απόδοση
Tree indexing (e.g. trie) Hashtable
Σαν κλειδί ευρετηριοποίησης χρησιμοποιούμε URL. Απαιτείται κανονικοποίηση (e.g. delete or Add ending “/”) Not detect duplicated or mirrored pages.
13/45
Restricting Spidering
You can restrict spider to a particular site. Remove links to other sites from Q.
You can restrict spider to a particular directory. Remove links not in the specified directory.
Obey page-owner restrictions (robot exclusion).
14/45
Link Extraction
Must find all links in a page and extract URLs. <a href=“http://www.cs.unt.edu/~rada/CSCE5300”> <frame src=“site-index.html”>
Must complete relative URL’s using current page URL: <a href=“proj3”> to http://www.cs.unt.edu/~rada/CSCE5300/proj3 <a href=“../cs5343/syllabus.html”> to
http://www.cs.unt.edu/rada/cs5343/syllabus.html
15/45
Robots Exclusion Protocol
Κάθε διαχειριστής καθορίζει τις οδηγίες για την ευγενική προσπέλαση ενός ιστότοπου Robots.txt Μπορεί να βρεθεί στον root κατάλογο καθε ιστότοπου
http://www.in.gr/robots.txt http://www.google.gr/robots.txt http://www.yourwebsite.com/robots.txt
Περιέχει μία λίστα των φακέλων που δεν επιτρέπεται να προσπελάσει κάθε προσκομιστής ιστοσελ΄ίδων (user-agent). Παράδειγμα αποκλεισμού κάθε πιθανού robot από τον κατάλογο
ολόκληρου του ιστοτόπου : User-agent: * Disallow: /
περισσότερα
16/45
Robots META Tag
Συμπεριλαμβάνεται στην ετικέτα META tag στην ενότητα HEAD ενός HTML εγγράφου (ιστοσελίδας) <meta name=“robots” content=“value”>
Το περιεχόμενο είναι ενα ζεύγος τιμών value : index | noindex: Επιτρέπει ή όχι την προσθήκη της
συγκεκριμένης ιστοσελίδας στο ευρετήριο της μηχανής αναζήτησης
follow | nofollow: Επιρέπεται ή οχι να ακολουθήσει ο προσκομιστής τα url που μπορούν να βρεθούν σε αυτή την σελίδα
περισσότερα
17/45
Uniform Resource Locator
Κάθε URL είναι μοναδικό αναφέρεται σε ακριβώς έναν πόρο
Ανάγκη για κανονικοποίηση URLs με ελαφρώς παραλλαγμένη μορφή -
αναφέρονται στον ίδιο πόρο Διαδικτύου
18/45
URL Parts
Scheme: http Authority:
John:[email protected]:8042 Path: over/there/page.html Query: /name=some_name Fragment: something
19/45
Κανόνες κανονικοποίησης URL Μετατροπή του πρωτοκόλλου και του ονόματος δικτυακού τόπου σε πεζούς
χαρακτήρες . Για παράδειγμα, το HTTP://www.ceid.UPatras.gr μετατρέπεται σε http://www.ceid.upatras.gr
Αφαίρεση της «άγκυρας» ή της «αναφοράς» από την διεύθυνση. Δηλαδή το http://www.uom.gr#thema1 μειώνεται στο http://www/uom.gr
Μετατροπή των ειδικών χαρακτήρων σε δεκαεξαδική μορφή (URL encoding). Για παράδειγμα τα παρακάτω URL θεωρούνται ισοδύναμα: http://www.ceid.upatras.gr/~kozanid http://www.ceid.upatras.gr/%7Ekozanid
Για κάποιες διευθύνσεις απαιτείται η προσθήκης του τελικού ‘/’. Επειδή οι διευθύνσεις http://www.upatras.gr και http://www.upatras.gr/ θα πρέπει να έχουν την ίδια κανονική μορφή.
το ίδιο ισχύει και για την αναγνώριση των προκαθορισμένων σελίδων όπως index.html και index.htm.
Διατήρηση του αριθμού port της διεύθυνση εκτός και αν είναι το 80. Αφαίρεση του ‘..’ και του πατρικού καταλόγου από τη διεύθυνση. Για παράδειγμα η
διεύθυνση: http://dev.mysql.com/doc/refman/5.0/../5.1/en/fulltext-query-expansion.html σε http://dev.mysql.com/doc/refman/5.1/en/fulltext-query-expansion.html
Περιορισμός του μήκους των διευθύνσεων σε πχ 128 ή 256 χαρακτήρες για την αποφυγή παγίδων ατέρμονου βρόγχου.
More Info UFC 3986
20/45
Redirects Η διεύθυνση http://www.dblab.upatras.gr/
ανακατευθύνεται στην http://www.dblab.upatras.gr/gr/index.htm
Status code (HTML RESPONSE) 200: οκ 403: Forbidden 404: page not found 302: temporary redirect 301: permanent redirect
(read more)
21/45
Redirects Redirection 3xx
This class of status code indicates that further action needs to be taken by the user agent in order to fulfill the request.
22/45
ΠαράδειγμαP1
P15P14
P10
P5
P9
P3
P8
P13P12P11
P7
P2 P4 P6
Σελίδα Αρχικοποίησης
Διεύθυνση που περιέχεται
στην σελίδα P1 και δείχνει
προς την σελίδα P2
Ουρά
P1
P2
P12P11P10
P1 X έχει ήδη εισαχθεί
P8
P7
P9 X μεγάλη καθυστέρηση
P4
P7 X έχει ήδη εισαχθεί
P6P5
P3
P13P14P15
P7
P1
23/45
Δεικτοδότηση Ιστοσελίδων Μεγάλες απαιτήσεις
Σε υλικό Σε πόρους δικτύου
Η δεικτοδότηση ολόκληρου του Web είναι πρακτικά
αδύνατη!
24/45
Ορισμός Εστιασμένος Προσκομιστής Είναι μια μονάδα (module) μιας vertical
search engine Αναλαμβάνει να προσκομίσει σελίδες
συγκεκριμένης θεματολογίας Απαιτεί πολύ λιγότερους πόρους σε υλικό και
σε πόρους δικτύου από ότι ένας συμβατικός προσκομιστής
Απαιτεί λογισμικό μεγαλύτερης πολυπλοκότητας από έναν απλό προσκομιστή ιστοσελίδων
25/45
Εστιασμένοι προσκομιστές (focused crawlers)
Aνακτούν ιστοσελίδες συγκεκριμένης θεματολογίας/είδους.
Ένας επιλεκτικός προσκομιστής επιθυμεί ιδανικά να επισκεφθεί μόνο ιστοσελίδες που σχετίζονται με το σύνολο των κατηγοριών που έχουν οριστεί ως σχετικές, και να αποφύγει εκείνες που δεν ανήκουν στο συγκεκριμένο σύνολο.
26/45
Παραδείγματα (Cho et al,1998) (Chakrabarti S., et al. 1999) (Chacrabarti S., et al 2002) (Diligenti et al., 2000) (Ehrig & Maedche., 2003) (Johnson et al., 2003) (Ye et al., 2004) (Partalas, I., et al, 2008) (Batsakis. S., et al, 2009)
27/45
ΠαράδειγμαP1
P10
P5
P9
P3
P8P7
P2 P4 P6
P1 Σελίδα ΑρχικοποίησηςP2
P10
P8
P9
P4
P6P5
P3
Έστω Σελίδες με σχετική πληροφορία
P1, P4, P3, P12
P4
P1
P3
P12
P7
Μη σχετική σελίδα Μη σχετική σελίδα
Μη σχετική σελίδα
Σχετική σελίδα Σχετική σελίδα
Δεν θα προσκομιστεί Μη σχετική σελίδα
P3
Μη σχετική σελίδα Μη σχετική σελίδαΔεν θα προσκομιστεί
Δεν θα προστεθει η P12 γιατί δεν προστέθηκε η P8
28/45
Δυο βασικά ερωτήματα Πως αποφασίζουμε αν μια σελίδα που
έχουμε κατεβάσει είναι σχετική με το θέμα; Χρήση κατηγοριοποιητή
Πως αποφασίζουμε να επιλέξουμε την επόμενη σελίδα που θα επισκεφτούμε; Βαθμολόγηση της διεύθυνσης
29/45
Διαδικασία προσκόμισης και επεξεργασία ιστοσελίδων
Προσκόμιση •Αναγνώριση γλώσσας
•Συντακτική ανάλυση κώδικα ιστοσελίδας
επεξεργασία
•Εξαγωγή URLs και καθαρού κειμένου•Μορφοσυντακτικός σχολιασμός•Αναγνώριση χαρακτηριστικών όρων
Αποθήκευση
•Καθορισμός χρήσιμων πληροφοριών•Αποθήκευση •Προώθηση νέων URLs για βαθμολόγηση1.
προ
σκομ
ιστή
ς γε
νικο
ύ σκ
οπού
30/45
Επεξεργασία Ιστοσελίδων με Python31/45
Πως προσκομίζω τον κώδικα μίας ιστοσελίδας?
Δεν ακολουθεί redirects Αποτέλεσμα:
import urllib2 response=urllib2.urlopen("http://www.dblab.upatras.gr/") page_source = response.read()print page_source
<html><head><title>DBpage</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7"></head><body bgcolor="#FFFFFF" text="#000000" onLoad=" javascript:window.window.location.replace('gr/index.htm')"><h3>If you are not redirectered automatically please click <a href="gr/index.htm">here</a>.</h3></body></html>
33/45
BeautifulSoup www.crummy.com/software/BeautifulSoup/ Python library for parsing HTML
documents Διορθώνει malformed markup Χρησιμοποιείται για την εξαγωγή
δεδομένων από ιστοσελίδες Μεταμορφώνει ένα πολυπλοκο HTML
document σε μία δενδρική ιεραρχία Python objects(four kinds of objects)
34/45
BeautifulSoup - Οδηγίες εγκατάστασης:
Οδηγίες Απο console : pip install beautifulsoup4
Εναλλακτικά: Κατεβάστε το αρχείο beautifulsoup4-4.1.0.tar Αποσιμπιέστε το στον φάκελο που έχει εγκατασταθεί η
Pyhton (πχ: C:\python27) Αντιγράψτε τον φάκελο bs4 στον φάκελο της Python Εκτελεστε την εντολή:
python C:\Python27\beautifulsoup4-4.1.0\setup.py installProblem installing packages?Python version 2.7 required, which was not found in the registrywww.lfd.uci.edu/~gohlke/pythonlibs/http://www.varunpant.com/posts/how-to-setup-easy_install-on-windows
35/45
Πως αποκτώ τον Html κωδικα μίας ιστοσελίδας?
def getWPsoup(url): html_doc = urllib2.urlopen(url) soup = BeautifulSoup(html_doc.read()) return soup
Τυπώνω τον κώδικα Html μίας ιστοσελίδας:
url=“http://www.ceid.upatras.gr/”soup=getWPsoup(url)print(soup.prettify())
36/45
37/41
Πως εξάγω συγκεκριμένο τμήμα της?
Παραδείγματα #1 soup.title
<title>The Dormouse's story</title> soup.title.name
u'title' soup.title.string
u'The Dormouse's story‘ soup.title.parent.name
u'head' soup.p
<p class="title"><b>The Dormouse's story</b></p> soup.p['class']
u'title' soup.a
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
38/45
Παραδείγματα #2 soup.find_all('a')
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
soup.find(id="link3") <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>
περισσότερα
39/45
Πως εξάγω την λίστα των url?
Τα urls δεν ειναι κανονικοποιημενα δεν είναι πάντα σε απόλυτη μορφή (πλήρες url)
for link in soup.find_all('a'): print(link.get('href'))
http://example.com/elsie http://example.com/lacie http://example.com/tillie
40/45
Πως κανονικοποιώ μία διεύθυνση URL
Install urlnorm1. Download zip
(http://github.com/downloads/jehiah/urlnorm/urlnorm-1.1.2.tar.gz)2. Execute from console
pip install -U urlnorm
import urlnormN_url=urlnorm.norm(“http://www.UPAtraS.gr:80/INDEx/../page/id/8”)Print N_url
http://www.upatras.gr/page/id/8'
Παράδειγμα:
41/45
Πως μετατρέπω μία σχετική διεύθυνση URL σε απόλυτη;
Χρήση της βιβλιοθήκης urllib (python 2.7.3)
Παράδειγμα:from urllib.parse import urljoinabsoluteURL=urljoin.parse(baseURL,relativeURL)
urlparse.urljoin("http://www.ceid.upatras.gr/","info/tomeis.htm")
'http://www.ceid.upatras.gr/info/tomeis.htm'
42/45
Πως εξάγω όλο το κείμενο από μία ιστοσελίδα?
# The Dormouse's story# # The Dormouse's story # # Once upon a time there were three little sisters; and their
names were # Elsie, # Lacie and # Tillie;# and they lived at the bottom of a well.# # ...
print(soup.get_text())
43/45
44
Ερωτήσεις
Ευχαριστώ!!!
References
Brin. S, and Page. L, (1998): “The anatomy of large scale hypertextual web search engine”, in Proc. Of the 7th World Wide Web WWW conference, 1998, online at http://google.stanf.ord.edu/~backrub/google.html
Heydon A., Najork M., (1996): “’Mercator’, A Scalable, Extensible Web Crawler”. International Journal of WWW, Vol. 2. No. 4. (1999) 219
Burner M., (1997): “Crawling towards Eternity: Building an archive of the World Wide Web”, Web Techniques Magazine, 2(5) May 1997
Hafri Y., Djeraba C., (2004). “High performance crawling system”. In Proceedings of the 6th ACM SIGMM international workshop on Multimedia information retrieval (MIR '04). ACM, New York, NY, USA, 299-306. DOI=10.1145/1026711.1026760 http://doi.acm.org/10.1145/1026711.1026760
Cho J., Garcia-Molina H. and Page L., (1998): “Efficient crawling through URL ordering”. In 7th Int. World Wide Web Conference
Chakrabarti, S., Punera, K., & Subramanyam, M. (2002): “Accelerated focused crawling through online relevance feedback”. In Proceedings of the 21st ACM International World Wide Web Conference (WWW), Honolulu, Hawaii USA.
Chakrabarti, S., van den Berg, M. & Dom, B. (1999): “Focused crawling: a new approach to topic-specific web resource discovery”. In Computer Networks, vol.31, pp. 11–16.
Dilligenti, M., Coetze, F.M., Lawrence, S., Giles, C.L. & Gori M. (2000), “Focused crawling using context graphs”. In Proceedings of the 26th International Conference on Very Large Databases (VLDB).
Ehrig, M. & Maedche, A. (2003): “Ontology-focused crawling of web documents”. In Proceedings of the ACM Symposium on Applied Computing.
Johnson, J., Tsioutsiouliklis, K., & Giles, C.L. (2003): “Evolving strategies for focused web crawling”. In Proceedings of the 20th International Conference on Machine Learning (ICML-2003) Washington DC.
Ye, Y., Ma, F., Lu, Y., Chiu, M. & Huang, J. (2004): “iSurfer: a focused web crawler based on incremental learning from positive samples”. In Proceedings of the Asian-Pacific Web Conference (APWeb), pp. 122-134.
Partalas, I., Paliouras, G. Vlahavas, I. (2008): “Reinforcement learning with classifier selection for focused crawling”. In Proceedings of the European Conference of Artificial Intelligence, pp. 759-760.
Batsakis S., Petrakis G.M E., Millios E. (2009): “Improving the performance of focused web crawlers”, In the Proceeding of Data & knowledge Engineering (1001 -1013)
Crawlers Focused crawlers
45/45