Brainflakes Geschrieben 13. Februar 2013 Geschrieben 13. Februar 2013 Hi, ich wollte hier auch einmal nachfragen ob sich ein paar Leute mal meinen Projektantrag ansehen könnten. 1. Thema: Selbsterweiterndes Informationscluster mit Volltextsuche 2. Termin 03.03.2013 – 15.04.2013 3. Projektbeschreibung Ist-Analyse [...] bietet seinen Abteilungen die Möglichkeit, Informationen über aktuelle Themen oder interessante neue Technologien, die relevant für Projekte des Instituts sein können mittels eines firmeninternen Wikis mit Anschluss an ein eigenes soziales Netzwerk zu teilen. Über einen Activity Flow kann beobachtet werden, wenn neue Artikel im Wiki eingestellt wurden. Die Problematik dabei besteht darin, dass Webseiten nicht als Ganzes einfach in das Wiki kopiert werden sollten, da damit viel unnützer Overhead gespeichert wird (Werbung, allgemeine Navigationslinks usw.) Man könnte zwar im Wiki eine Linksammlung einrichten, damit gibt man aber die Möglichkeit auf, Inhalte über eine Volltextsuche (wieder) zu finden. Daher wird meist auf eine Verteilung der Informationen per Email-Verteiler zurückgegriffen. Dabei ist aber nicht gewährleistet, dass die Informationen auch alle Mitarbeiter erreichen, da sie im Fluss des restlichen Mailverkehrs untergehen können. Zielsetzung Ziel des Projektes ist es, eine zentrale Webanwendung zur Verfügung zu stellen, mit der Informationen aus Webseiten automatisch extrahiert und damit einfach gesammelt und über einen längeren Zeitraum, zunächst testweise noch abseits des Wikis über eine Datenbank bereitgestellt werden können. Dabei sollen lediglich die relevanten Teile beispielsweise einer News-Seite abgespeichert werden, damit die Anwendung später direkt in das Wiki mit eingebunden werden könnte, was aber nicht mehr im Rahmen dieses Projektes stattfinden wird. Zusätzlich soll es die Möglichkeit geben, auf verlinkten Domains automatisch nach Artikeln mit ähnlichen Inhalten gesucht werden. Dies geschieht durch Angabe eines Such- bzw. Indexwortes bei der Erstellung eines Eintrags innerhalb der Anwendung. Zu jedem Artikel können ein oder mehrere Links angegeben werden (beispielsweise eine News-Seite und zusätzlich die Herstellerseite des Produktes von dem berichtet wird), wobei für jeden Link separat einstellbar sein soll, ob die Anwendung lediglich den Inhalt der verlinkten Seite speichert, oder ob die Domain weiter nach Seiten mit relevanten Inhalten durchsucht werden soll. Ein Web-Crawler innerhalb der Anwendung durchsucht dann, sofern angegeben, die Domain nach Artikeln, die mit dem Suchwort zusammenhängen Die so zusammengetragenen Informationen werden schließlich indiziert, wodurch die Anwendung einer Volltextsuche ermöglicht wird, um die Informationen später einfach wieder zu finden. Eine Update-Komponente der Anwendung überprüft außerdem periodisch, ob die lokal gespeicherten Artikel noch aktuell sind. Dadurch soll eine sich automatisch erweiternde Wissensdatenbank geschaffen werden , die ihre Stärken gegenüber der bisherigen Lösung in der Anwendbarkeit einer Volltextsuche und ihrer ständigen Aktualität durch die Update-Komponente hat. Für die Zukunft wären auch noch diverse Erweiterungen dieses Projekts möglich. So wäre z.B. eine Anbindung an den Mailverteiler einer Abteilung denkbar, um eine noch einfachere Art der Informationsverteilung zu ermöglichen. 4. Projektumfeld: Das Projekt wird firmenintern ohne jegliche Fremdleistung innerhalb der Abteilung [...] realisiert. Programmiersprache: Python Entwicklungsumgebung: Microsoft Visual Studio 2012 Datenbank: PostgreSQL Versionskontrolle: git 5. Projektphasen Projektdefinition (4 Stunden) Ist-Analyse (2 Stunden) Soll-Konzept/Zielformulierung (2 Stunden) Projektplanung (14 Stunden) Projektstrukturplan (3 Stunden) Terminplanung/Gantt-Chart (1 Stunde) Kostenplanung (1 Stunde) Planung des Datenmodells (3 Stunden) Programmstruktur und –ablauf (6 Stunden) Realisierung (36 Stunden) Entwicklung des Web-Crawlers (16 Stunden) Entwicklung der Index- und Suchfunktion (11 Stunden) Entwicklung der Update-Komponente (1 Stunde) Erstellung eines Web-Interfaces zur Bedienung (8 Stunden) Testphase (5 Stunden) Erstellen des Testplans (2 Stunden) Funktionsprüfung (3 Stunden) Dokumentation (9 Stunden) Erstellen der Dokumentation (9 Stunden) Projektabschluss (2 Stunden) Softwareinstallation (1 Stunde) Einweisung in die Software (1 Stunde) Gesamtaufwand (70 Stunden) Vielen Dank schonmal im Vorraus an die, die sich die Mühe machen Zitieren
flashpixx Geschrieben 13. Februar 2013 Geschrieben 13. Februar 2013 aus der IST Analyse geht nicht klar hervor warum Du das Projekt durchführen willst. Die nächste Frage, die sich eigentlich aus dem Problem ergibt, wie kannst Du "Ähnlichkeiten" erkennen bzw. wie gehst Du mit Schreibfehlern / unterschiedlichen Schreibweisen von Begriffen um, ebenso wie gehst Du mit unterschiedlichen Sprachen auf den Webseiten um? Wie entscheidest Du, welche Wörter relevant und welche nicht relevant für die Indizierung sind (Qualität der Suchergebnisse=? Was ich letztendlich sehe ist, dass Du einen eigenen Crawler schreibst, der eben eigene und verlinkte Seiten abläuft und irgendwie indiziert. Warum nimmst Du nicht ggf Google und holst Dir nur die Ergebnisse z.B. über die API? Weiterhin bezüglich des Crawlens würde ich sagen, dass mir nicht klar ist, wie Du Inhalte bewertest, denn Du musst entscheiden, wenn ich dann mit einem Schlagwort suche, wie die Reihenfolge der Suchergebnisse ist? ich verweise einmal auf Bag-of-words model - Wikipedia, the free encyclopedia bzw Precision and recall - Wikipedia, the free encyclopedia Wenn ich ehrlich bin, habe ich extrem fachliche Bauchschmerzen bei dem Thema, da ich sagen würde, dass das Indizien, Auswerten und Darstellen von solchen Inhalten als Ausbildungsprojekt zu komplex ist. Nach meiner Ansicht müsste man definitiv mehr in die Algorithmik und die Bewertung an theoretischen Grundlagen stecken, damit das Ergebnis hinreichend sinnvoll ist Zitieren
Schiller256 Geschrieben 13. Februar 2013 Geschrieben 13. Februar 2013 Kann mich flashpixx nur anschließen. Für mich wir aus dem Antrag auch nicht wirklich klar was du im Projekt machen willst. Das Thema Indexerstellung ist an sich schon so Komplex das du da ganze Diplomarbeiten drüber schreiben kannst. Bei null kannst du in deinem Projekt bestimmt nicht anfangen denn du müsstest dich erstmal mit den theoretischen Grundlagen auseinander setzen damit du starten kannst. Selbst wenn du auf bestehende Frameworks (apache lucene oder solr) aufsetzen willst ist das noch ein Thema was sehr sehr mächtig ist. Ich selbst begleite als Architekt gerade ein Projekt zum Thema crawlen von Inhalten. Da beschäftigen wir aber mehrere Vollzeitberater mit dem Thema und werden definitiv ein Produkt einsetzen welches zumindest mal was den Index angeht schon fertig ist. Deshalb sehe ich da nicht wirklich ein Azubi Abschlussprojekt draus werden. Zitieren
Brainflakes Geschrieben 14. Februar 2013 Autor Geschrieben 14. Februar 2013 Erst mal danke für eure Meinungen. Der Fokus in dem Projekt liegt in dem Erstellen des Crawlers und der Suchfunktion dahinter. Da ihr beide meint, das Indexieren der Inhalte wäre zu komplex für ein Abschlussprojekt, kann man das denn noch runterskalieren? Ich denke mal wenn ich nur den Crawler als Projekt nehme, der ungefiltert alle Seiten einer Domain zurückliefert, ist das schon wieder zu wenig. Vielleicht mit gefilterten Ergebnissen ohne Indexierung? Ich stecke hier halt leider etwas fest, da wir im Unternehmen bisher kein anderes Projekt gefunden haben und morgen der Antrag abgegeben werden muss. Edit: Die Einbindung von Lucene, bzw. dem Python-Port davon (pyLucene) war tatsächlich eingeplant. Aber muss ich sowas dann mit im Antrag angeben? Zitieren
flashpixx Geschrieben 14. Februar 2013 Geschrieben 14. Februar 2013 (bearbeitet) Der Fokus in dem Projekt liegt in dem Erstellen des Crawlers und der Suchfunktion dahinter. Da ihr beide meint, das Indexieren der Inhalte wäre zu komplex für ein Abschlussprojekt, kann man das denn noch runterskalieren? Ich denke mal wenn ich nur den Crawler als Projekt nehme, der ungefiltert alle Seiten einer Domain zurückliefert, ist das schon wieder zu wenig. Vielleicht mit gefilterten Ergebnissen ohne Indexierung? Ich möchte hier jetzt nicht in die Theorie gehen, aber es reicht nicht einfach Daten "irgendwie" zu crawlen, denn man muss zusätzlich auch die Struktur der Daten speichern, damit eine Analyse später überhaupt möglich ist. Nur Struktur und Inhalt zusammen ermöglichen es, ein sinnvolles Suchergebnis zu erzeugen, d.h. Du kannst nicht einfach nur den Inhalt erfassen und die Struktur völlig ignorieren. Man bewegt sich in diesem Bereich letztendlich nicht auf Testebene, sondern salopp gesagt im Bereich der Mustererkennung und dies setzt entsprechendes Wissen voraus. Zusätzlich muss man entsprechende Strukturanalysen machen, die auf solchen Webdaten durchaus sehr komplex sind, da hier sehr schnell große Datenmengen zusammen kommen und mit diesen gearbeitet werden muss. Bei einer naiven Herangehensweise wachsen die Laufzeiten exponentiell und somit können schon kleine Datenmengen zu sehr langen Laufzeiten führen, die in einer praktischen Anwendung nicht mehr machbar sind. Somit halte ich das gesamte Projekt nicht als geeignet, da Du weder die theoretischen Grundlagen hast, noch kannst Du wirklich fachlich richtig abschätzen was dort alles für Problematiken entstehen bzw. wie man diese dann auch real lösen kann. Z.B. wirst Du sicherlich ein relationelles Datenbankmodell entwerfen und in diesem Bereich ist dies fachlich schon eine sehr ineffiziente Lösung, denn die Daten wachsen quadratisch, d.h. wenn Du 10 Artikel hast, musst Du für die Struktur 100 Einträge speichern. Gerade für diese Systematik nimmt man keine relationellen Datenbanken, sondern andere Systeme. Bearbeitet 14. Februar 2013 von flashpixx Zitieren
Brainflakes Geschrieben 14. Februar 2013 Autor Geschrieben 14. Februar 2013 Okay, ich habe mich gerade nochmal mit ein paar Leuten in der Abteilung unterhalten und wir sind dazu gekommen, das Projekt nochmal umzuformulieren: Der Nutzer bekommt eine Eingabemaske, in der er ein Schlüsselwort (Produktname o.ä.) eingeben kann, dazu dann Links angeben kann mit der Möglichkeit wie bisher, anzugeben, ob nur die Seite gezogen werden soll, oder die ganze Domain durch den Crawler. Der ganze Teil der Suche nach ähnlichen Inhalten fällt weg. Zusätzlich können noch Tags vergeben werden. Allen Links die dabei zustande kommen, wird dann über das Lucene-Framework ein Index zugewiesen und die Seiten werden als ganzes abgespeichert. Gemacht wird das Ganze, damit man die Inhalte über das Schlüsselwort, Tags, oder Volltextsuche wieder finden kann, wobei die Relevanz der gefundenen Einträge nicht in Vordergrund steht. Anwendungsbeispiel wäre z.B. ein technisches Produkt, über das auf heise.de berichtet wird. Der Nutzer gibt die Homepage des Herstellers an, wobei die ganze Domain gezogen werden soll, und den Artikel auf heise der einzeln dazu gespeichert werden soll. Damit nicht irgendwelche Spaßvögel angeben, dass man die komplette heise-Domain zieht, wird in den Crawler eine Sperre eingebaut, die nach x rekursiven Aufrufen abbricht. Ist das so dann doch wieder zu simpel oder nicht? Zitieren
flashpixx Geschrieben 14. Februar 2013 Geschrieben 14. Februar 2013 Mir ist das Vorgehen nicht klar. Ich geb dem System einen Produktnamen und z.B. eine Liste von Links und dann? Ich meine man kann jetzt die Links allesamt durchgehen und den Inhalt extrahieren. Woher soll das System wissen, dass es bei Heise nachschlagen soll und vor allem mit welchem / welchen Stichwörtern !? Also z.B. ich gebe als Produkt "HP Notebook" an und dann gebe ich HP - United States | Laptop Computers, Desktops , Printers, Servers and more an, was soll dann passieren? In dem Fall ist das Produkt nicht definiert beschrieben und die Webseite verweist nicht auf ein genaues Produkt. Was machst Du, wenn die Webseite komplett Flash basiert ist, denn dann kannst Du gar keine Texte extrahieren? Was machst Du mit dynamischen Inhalten, die z.B. per Ajax geladen werden, denn diese Informationen wirst Du auch nicht direkt extrahieren können? Was machst Du, wenn der Crawler in ein Trap läuft, d.h. er kommt nicht mehr weg von einer Seite, weil keine externen Links mehr existieren? Zitieren
Brainflakes Geschrieben 14. Februar 2013 Autor Geschrieben 14. Februar 2013 Das extrahieren von Texten ist ja auch nicht mehr angedacht. In deinem Beispiel käme es darauf an, was du zu dem HP-Link angegeben hast. Entweder der Crawler zieht nur die direkte Seite komplett, oder er lädt alle Seiten der HP-Domain, bis die Sperre greift. Wenn keine Links mehr existieren ist der Crawl-Vorgang durch, so ist das ja gedacht. Wenn man dann nach dem Begriff "HP Notebook" sucht, kommen die Seiten die bei diesem Erstellungsvorgang geladen wurden. Das System weiß wo es bei heise nachschlagen soll, weil man dazu den direkten Link auf die Seite angibt. Mit dynamischen Inhalten gibt es wohl ein Problem, die müsste man bei der Benutzung dann ausschließen. Natürlich kommt es hierbei stark auf die Angaben des Benutzers an, ob sinnvolle Ergebnisse bei der Suche zustande kommen, aber da das System nur innerhalb Abteilungen voller Entwickler benutzt wird, sehe ich darin ein eher geringeres Problem. Zitieren
flashpixx Geschrieben 14. Februar 2013 Geschrieben 14. Februar 2013 (bearbeitet) In deinem Beispiel käme es darauf an, was du zu dem HP-Link angegeben hast. Entweder der Crawler zieht nur die direkte Seite komplett, oder er lädt alle Seiten der HP-Domain, bis die Sperre greift. Wenn keine Links mehr existieren ist der Crawl-Vorgang durch, so ist das ja gedacht. Nimm das Bsp, so wie ich es gegeben habe (da ich die Top Seite angegeben habe, soll es die gesamte Domain holen). Welche Information hat dann das System zum auswerten? Selbst wenn ich die ganze Domain lese, ist die Information zu meiner Produkteingabe absolut undefiniert und wenn ich nur die eine Seite lese, dann sind da keine nennenswerten Informationen drauf zu finden, die nützlich für eine Suche sind. Was macht also Dein System? Bezüglich des Crawlens kann man sehr schöne Beispiele konstruieren, wo eben ein naives Vorgehen zu sehr interessanten Sideeffects führen kann. Natürlich kommt es hierbei stark auf die Angaben des Benutzers an, ob sinnvolle Ergebnisse bei der Suche zustande kommen, aber da das System nur innerhalb Abteilungen voller Entwickler benutzt wird, sehe ich darin ein eher geringeres Problem. Wenn ich nun die Frage stelle, wie "sinnvoll & wirtschaftlich siehst Du das Ergebnis Deiner Arbeit", dann kann man hier sicherlich sagen, dass die Qualität der Ergebnisse nicht sichergestellt ist und extrem variieren kann. Im Grunde verhält sich das Ergebnis Deiner Suche so, wie die Bewertungen bei Amazon. Amazon hat um sinnvolle Bewertungen berechnen zu können passende Algorithmen ( Collaborative filtering - Wikipedia, the free encyclopedia ). Du kannst hier also auch selbst sehen, dass man eben in ein solches System etwas mehr an Know-How rein stecken muss. Wenn Du nun sagst "ich mache nur den import / crawlen der Daten", dann würde ich fragen, wo ist da die fachliche Tiefe, denn Webseiten auslesen, durch nen (X)HTML Parser jagen und einfach ein INSERT INTO in eine Datenbank zu machen, ist definitiv zu wenig. Wenn Du nun in Deinem Projekt keine Textextraktion, keine Suchalgorithmik und keine Analyse machst, was bleibt dann fachlich noch? Für das Durchlaufen durch HTML Links gibt es fertige Tools, die braucht man nicht mehr entwickeln (Curl / Wget) Bearbeitet 14. Februar 2013 von flashpixx Zitieren
Brainflakes Geschrieben 14. Februar 2013 Autor Geschrieben 14. Februar 2013 (bearbeitet) Wenn ich nun die Frage stelle, wie "sinnvoll & wirtschaftlich siehst Du das Ergebnis Deiner Arbeit", dann kann man hier sicherlich sagen, dass die Qualität der Ergebnisse nicht sichergestellt ist und extrem variieren kann. Im Grunde verhält sich das Ergebnis Deiner Suche so, wie die Bewertungen bei Amazon. Amazon hat um sinnvolle Bewertungen berechnen zu können passende Algorithmen ( Collaborative filtering - Wikipedia, the free encyclopedia ). Sinnvoll ist es in dem Sinne, das es ein bestehendes System durch ein besseres ersetzt. Wirtschaftlich ist es dann halt lediglich in dem Zusammenhang, dass zueinandergehörige Informationen besser gefunden werden als bisher. Bisher kann man ja theoretisch auch jeden Unsinn ins Wiki stellen, was aber niemand macht weil es niemandem was bringt. Warum sollte das mit meiner Anwendung anders sein? Wenn Du nun in Deinem Projekt keine Textextraktion, keine Suchalgorithmik und keine Analyse machst, was bleibt dann fachlich noch? Für das Durchlaufen durch HTML Links gibt es fertige Tools, die braucht man nicht mehr entwickeln (Curl / Wget) Scheinbar habe ich das noch vergessen in dem Post vorher: Ich erstelle über die Seiten mit Hilfe von Lucene Indizes und entwickle dazu immer noch die eigene (lokale) Suche. Dazu wird es die Möglichkeit geben, bei bestimmten Seiten, die hier in der Abteilung öfter für solche News herangezogen werden (heise und golem, evtl. noch andere) die Artikel aus der html-Seite zu extrahieren. Ich stell nochmal meinen überarbeiteten Antrag hier rein, vielleicht kann man das daraus besser ablesen.. 3. Projektbeschreibung Ist-Analyse [...] bietet seinen Abteilungen die Möglichkeit, Informationen über aktuelle Themen oder interessante neue Technologien, die relevant sein können mittels eines firmeninternen Wikis mit Anschluss an ein eigenes soziales Netzwerk zu teilen. Über einen Activity Flow kann beobachtet werden, wenn neue Artikel im Wiki eingestellt wurden. Die Problematik dabei besteht darin, dass Webseiten nicht als Ganzes einfach in das Wiki kopiert werden sollten, da dadurch unter Umständen Wiki-Artikel viel zu lang werden, sofern mehrere Seiten mit Informationen dazu im Internet dazu existieren. Man muss also entweder die Artikel im Wiki kürzen, oder eine Linkliste anhängen, die aber bei einer Suchanfrage nicht berücksichtigt wird Änderungen an den Originalartikeln müssen, wenn sie überhaupt entdeckt werden, in mühseliger Handarbeit nachträglich übertragen werden. Zielsetzung Ziel des Projektes ist es, eine zentrale Webanwendung zur Verfügung zu stellen, mit der Informationen aus mehreren Webseiten automatisch zusammen indiziert werden, um bei einer Suchanfrage alle zusammenhängenden Informationen zu einem Thema aufzufinden. Hierfür gibt der Benutzer beim Erstellen eines Eintrags in der Anwendung ein Schlüsselwort an. Zu jedem Schlüsselwort können ein oder mehrere Links angegeben werden (beispielsweise eine News-Seite und zusätzlich die Herstellerseite des Produktes von dem berichtet wird), wobei für jeden Link separat einstellbar sein soll, ob die Anwendung lediglich den Inhalt der verlinkten Seite indexiert , oder ob jede Seite der Domain verarbeitet werden soll. Ein Web-Crawler innerhalb der Anwendung lädt dann, je nach Angabe, nur die verlinkte, oder alle Seiten der Domain herunter. Um Laufzeitprobleme bei sehr großen Domains zu verhindern, wird eine Sperre implementiert, die den Vorgang abbricht, sobald die heruntergeladene Datenmenge zu groß wird. Für bestimmte, administrativ einstellbare Seiten, die oft frequentiert werden, besteht die Möglichkeit, Inhalte von Artikeln ohne zusätzlichen Overhead zu extrahieren. Die so zusammengetragenen Informationen werden schließlich unter Nutzung des Lucene-Frameworks indexiert, um die Informationen später einfach wieder zu finden. Suchanfragen berücksichtigen dann nicht nur das angegebene Schlüsselwort, sondern zusätzlich auch die mit Lucene erstellten Indizes und finden so auch Zusammenhänge mit Inhalten, die alleine durch Schlüsselwort und den Link wie es bisher im Wiki realisiert ist, nicht gefunden worden wären. Eine Update-Komponente der Anwendung überprüft außerdem periodisch, ob die lokal gespeicherten Informationen noch aktuell sind. Dadurch soll eine Wissensdatenbank geschaffen werden, die ihre Stärken gegenüber der bisherigen Lösung in der Anwendbarkeit einer Volltextsuche, die auch sämtliche relevanten Internetseiten liefert und ihrer ständigen Aktualität durch die Update-Komponente hat. Für die Zukunft wären auch noch diverse Erweiterungen dieses Projekts möglich. So wäre z.B. eine Anbindung an den Mailverteiler einer Abteilung denkbar, um eine noch einfachere Art der Informationsverteilung zu ermöglichen. Auch eine direktere Anbindung an das Wiki wäre denkbar. Bearbeitet 14. Februar 2013 von Brainflakes Zitieren
flashpixx Geschrieben 14. Februar 2013 Geschrieben 14. Februar 2013 Sinnvoll ist es in dem Sinne, das es ein bestehendes System durch ein besseres ersetzt. Beweise bitte einmal diese Aussage? Anhand welcher Kriterien willst Du das machen? Wirtschaftlich ist es dann halt lediglich in dem Zusammenhang, dass zueinandergehörige Informationen besser gefunden werden als bisher. Bisher kann man ja theoretisch auch jeden Unsinn ins Wiki stellen, was aber niemand macht weil es niemandem was bringt. Warum sollte das mit meiner Anwendung anders sein? Siehe Apache Lucene Apache Lucene ist eine Programmbibliothek zur Volltextsuche und ein Projekt der Apache Software Foundation. Du kannst weder belegen, dass Dein System besser ist als das alte, noch kannst Du belegen, dass zueinander gehörende Informationen besser gefunden werden. Man kann dies analysieren, nur gehe ich nicht davon aus, dass Du das kannst. Ich fasse also zusammen: Du schreibst keine Suchalgorithmen, Du nimmst einen Crawler und parst vorgegebene Seiten bzw. unbekannte Seiten und haust den Text einfach in eine Datenbank, die per Lucene Framework dann per Volltext durchsucht werden kann. Du kannst nicht belegen, ob das neue System eine Verbesserung des alten ist und ob die Ergebnisse der Suche - wie auch immer sie dann funktionieren mag - besser sind als vorher. Das ganze soll in eine Art "sozialem Netz" eingebunden sein, das eben dann möglichst in Echtzeit die Veränderung des Index darstellt. Du hast keine Kontrolle über die eingefügten Texte, d.h. wenn ich z.B. eine Spamseite eingebe, dann füllt sich die Datenbank mit Spam. Du kannst keine Sprachdifferenzierung machen, so dass ich die Suche einmal mit einem englischen und einmal mit einem deutschen Begriff machen muss, damit ich möglichst viele Ergebnisse erhalte. Du indizierst so genannte Stop-Words (Füllwörter). Du kannst kein objektives Ranking der Suchergebnisse anhand Deiner Daten vornehmen. Strukturinformationen, wie z.B. Verlinkungen betrachtest Du gar nicht. Die User geben irgendwelche Begriffe in das System ein, die Du einfach einpflegst, ohne ggf Rechtschreibfehler und Inkonsistenzen zu analysieren. Du nimmst, sofern nicht anders angegeben ist, immer die kompletten Texte (ich hoffe ohne HTML Code), Du hast somit eine sehr schnell wachsende Datenmenge mit einer Menge unnötigen Informationen (Stop-Words), die keine Relevanz für spätere Suche haben. Warum soll ich nicht einfach einen Browser aufmachen und direkt selbst bei Google suchen, die Ergebnisse dürften weit besser sein, als das was Du liefern kannst? Wirtschaftlich und fachlich kommst Du damit in meinen Augen auf keinen sinnvollen Ansatz. Zitieren
Schiller256 Geschrieben 14. Februar 2013 Geschrieben 14. Februar 2013 Versenke das Projekt in der Rundablage und suche dir was neues. Das wird so nichts, denn du kannst nichts in 70 Std. so etwas aus dem Boden stampfen. Lucene an sich ist erst mal nicht schlecht bietet dir aber nur eine Basis um Indexe zu erstellen. Darauf kannst du niemals in 70 Std. so etwas realisieren. Zu einem solchen System gehört deutlich mehr als nur ein paar API aufrufe von lucene. Wenn du Interesse hast kannst du dich gerne bei mir mal via PM melden. Ich habe letztes Jahr ein System zu Volltextsuche von Partnerdaten(ca. 60 Millionen) aufgebaut und das ganze hat 9 Monate gedauert und konnte aber auf bereits strukturierten Daten aufsetzen. Im Moment bin ich dabei eine Unternehmensweite Suche mit Crawlern zu planen und da werden wir mit Sicherheit Experten einkaufen und das nichts selber machen. Zitieren
Brainflakes Geschrieben 14. Februar 2013 Autor Geschrieben 14. Februar 2013 Beweise bitte einmal diese Aussage? Anhand welcher Kriterien willst Du das machen? Du kannst weder belegen, dass Dein System besser ist als das alte, noch kannst Du belegen, dass zueinander gehörende Informationen besser gefunden werden. Man kann dies analysieren, nur gehe ich nicht davon aus, dass Du das kannst. Bisher kann ich nur Links hinzufügen, wenn auf der Seite hinter dem Link irgendwas steht, wird es bei einer Suche nicht berücksichtigt. Mit meiner Anwendung schon. Dazu kommt die automatische Aktualisierung, die ebenfalls eine - wenn auch vielleicht marginale - Verbesserung ist. Kleines Beispiel: Im Wiki ist ein Artikel zu golden-i (Home | Golden-i). Dabei ist auch ein Link zu heise für weitere Informationen (Der echte Robocop | Technology Review). Wenn ich nun im Wiki nach "HUD" suche, komme ich auf 0 Ergebnisse, da in dem Artikel nichts dazu steht. Durch das Auslesen der Zusatzinfo und deren Indexierung finde ich aber bei meiner Anwendung beides. Ich fasse also zusammen: Du schreibst keine Suchalgorithmen, Du nimmst einen Crawler und parst vorgegebene Seiten bzw. unbekannte Seiten und haust den Text einfach in eine Datenbank, die per Lucene Framework dann per Volltext durchsucht werden kann. Du kannst nicht belegen, ob das neue System eine Verbesserung des alten ist und ob die Ergebnisse der Suche - wie auch immer sie dann funktionieren mag - besser sind als vorher. Das ganze soll in eine Art "sozialem Netz" eingebunden sein, das eben dann möglichst in Echtzeit die Veränderung des Index darstellt. Hier hast du nicht verstanden was ich machen will. Es wird nicht der Text lokal gespeichert, sondern die Indizes zusammen mit der URL. Das soziale Netz mit Wiki ist der aktuelle Zustand der nicht mehr angestrebt ist. Was die Verbesserung gegenüber dem alten System angeht habe ich oben schon was dazu geschrieben. Du hast keine Kontrolle über die eingefügten Texte, d.h. wenn ich z.B. eine Spamseite eingebe, dann füllt sich die Datenbank mit Spam. Du kannst keine Sprachdifferenzierung machen, so dass ich die Suche einmal mit einem englischen und einmal mit einem deutschen Begriff machen muss, damit ich möglichst viele Ergebnisse erhalte. Und nochmal frage ich: Warum sollte jemand in einer firmeninternen Informationsanwendung bewusst(!) Spam einfügen? Für deutsch/Fremdsprachen kann man zusätzlich noch Tags einbauen, das ist jetzt nicht wirklich viel Aufwand. Du indizierst so genannte Stop-Words (Füllwörter). Woher nimmst du das? Du kannst kein objektives Ranking der Suchergebnisse anhand Deiner Daten vornehmen. Strukturinformationen, wie z.B. Verlinkungen betrachtest Du gar nicht. Die User geben irgendwelche Begriffe in das System ein, die Du einfach einpflegst, ohne ggf Rechtschreibfehler und Inkonsistenzen zu analysieren. Was wiederum den Rahmen eines Abschlussprojektes sprengen würde, oder nicht? Warum soll ich nicht einfach einen Browser aufmachen und direkt selbst bei Google suchen, die Ergebnisse dürften weit besser sein, als das was Du liefern kannst? Wirtschaftlich und fachlich kommst Du damit in meinen Augen auf keinen sinnvollen Ansatz. Weil ich über google keinerlei Kontrolle habe, was die Zusammenstellung der Infos betrifft. Vielleicht gibt es ja im Intranet auch noch Infos dazu oder sonst was. Zitieren
Schiller256 Geschrieben 14. Februar 2013 Geschrieben 14. Februar 2013 Wie lange beschäftigst du dich schon mit dem Thema? Ich glaube du hast noch nicht mal Ansatzweise eine Vorstellung davon was es bedeutet so etwas zu realisieren. Wenn ich jetzt mal dein Beispiel nehme und ich davon ausgehe das du Seiten bis zu einer Linktiefe von 4 indizierst. Wie willst du dann unterscheiden oder ausdrücken das Informationen auf der ersten Seite vielleicht mehr Wert sind als Infos auf Unterseite 4. Vielleicht wird da dein Wort in einem vollkommen anderen Zusammenhang genutzt. Das müsstest du dann schon voneinander trennen. Hier mal noch zwei Links von OpenSource Projekten die sich zum einen mit dem Thema Indizierung und "Wortdeutung" beschäftigen. AKSW : Projects*/*Onto*Wiki SMILA - Unified Information Access Architecture <- das willst du eigentlich anfangen nach zu bauen Zitieren
flashpixx Geschrieben 14. Februar 2013 Geschrieben 14. Februar 2013 Ich glaube du hast noch nicht mal Ansatzweise eine Vorstellung davon was es bedeutet so etwas zu realisieren. Wenn ich jetzt mal dein Beispiel nehme und ich davon ausgehe das du Seiten bis zu einer Linktiefe von 4 indizierst. Wie willst du dann unterscheiden oder ausdrücken das Informationen auf der ersten Seite vielleicht mehr Wert sind als Infos auf Unterseite 4. Vielleicht wird da dein Wort in einem vollkommen anderen Zusammenhang genutzt. Danke, genau darum geht es. Ich hatte in meinem ersten Post geschrieben: ich verweise einmal auf Bag-of-words model - Wikipedia, the free encyclopedia bzw Precision and recall - Wikipedia, the free encyclopedia Dein Projekt umfasst nicht "Link Daten holen und indizieren", sondern Du machst hier eine Informationsklassifizierung und -bewertung, denn z.B. muss eine Information "Laptop" z.B. auf der Seite von HP höher bewertet werden, als z.B. die Information "Maus". Wenn ich dann noch eine Suche mache, dann muss aufgrund meiner Sucheingabe eine Bewertung der internen Daten durchgeführt werden, so dass ich z.B. im ersten Eintrag im Ergebnis das bekomme, was am besten auf meine Sucheingabe passt. Zusätzlich kommen typische Probleme wie Tippfehler und Uneindeutigkeiten. Bezüglich des Spams, wer sagt nicht dass vielleicht ein Azubi Dir einen Streich spielen will. Ich teste z.B. meine Software auch mit solchen fehlerhaften Eingaben, denn eine Software darf nicht in einen undefinierten Zustand gehen und bei Spam würde dann Deine Software ein Ergebnis erzeugen, dass undefiniert ist. Die fachliche Thematik, die Du hier als Azubi machen willst, könnte man ohne weiteres als Diplom-, Master- oder Dissertationsthema machen und möchtest das bzw. einen Teil davon in 70h bearbeiten? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.