Warum
ignoriert Extractor das META Tag in HTML?
Das META-Tag wird in HTML benutzt, um Metainformationen über das
Dokument zu übermitteln. Zum Beispiel
<META HTTP-EQUIV="Expires" CONTENT="Tue, 04 Dec 1993 21:29:02 GMT">
<META HTTP-EQUIV="Keywords" CONTENT="Nanotechnology, Biochemistry">
<META HTTP-EQUIV="Reply-to" CONTENT="dsr@w3.org (Dave Raggett)">
Extractor ignoriert diese
Meta-Informationen. Insbesondere wird nicht die in
"Keywords" übergebene Meta-Information verwendet. Dies
hat zwei Gründe: (1) Wenn Sie das META-Tag dringend benötigen,
können Sie es leicht mit einer selbstgeschriebenen Routine
extrahieren. (2) Das Meta-Tag wird häufig missbraucht. Es wird vor
allem benutzt, um eine bessere Position in den Ergebnisslisten von
Suchmaschinen zu verbessern. Wenn Sie nach dem Begriff
"meta" suchen, finden Sie viele Texte mit Tipps für
Web-Autoren, wie mit dem META-Tag Suchmaschinen ausgetrickst werden
können.
Was
bedeuten die Nummern, die mit jedem Schlüsselbegriff zurück
gegeben werden?
Wenn Sie die Beispielprogramme "test_api.exe" unter
Windows " oder
"test_api.bin" unter Unix ausführen, wird jeder
Schlüsselbegriff zusammen mit einer Nummer ausgegeben. Diese
Nummern stellen die Wertung für den Begriff dar, die von der
Funktion ExtrGetScoreByIndex()
zurück gegeben wird. Die Wertung eines Begriffs schätzt den Wert
des Begriffs als Schlüsselbegriff ab, so nach abnehmender Wertung
sortiert werden. Die Wertung kann jede positive reelle Zahl
annehmen. Die mit langen Dokumenten verbundenen Wertungen tendieren
zu höheren Werten als die bei kurzen Dokumenten. Die Methode zur
Berechnungder Wertung wird im Detail in Learning
to Extract key phrases from Text beschrieben. Für manche
Anwendungen kann eine Normierung
sinnvoll sein.
Wie kan ich die
Wertung normieren?
Bei
manchen Anwendungen kann eine Normierung
sinnvoll sein, so dass die Wertungen von Schlüsselbegriffen
verschiedener Dokumente verglichen werden können. Hier sind einige
Vorschläge zur Normierung:
- Verwerfen Sie die Wertung von
Extractor. Zur Bewertung eines Schlüsselbegriffes benutzen Sie
bei einer großen Zahl von Dokumenten, beispielsweise Webseiten,
den Anteil der Dokumente, für die Extraktor den
Schlüsselbegriff vorgeschlagen hat. So erhält
"Firmenfusion" zum Beispiel eine Wertung von 45%, wenn
es bei 100 Dokumenten 45 mal von Extractor als Schlüsselbegriff
vorgeschlagen wurde.
- Verwerfen Sie die Wertung von
Extractor. Zur Bewertung eines Schlüsselbegriffes benutzen Sie
bei einer großen Zahl von Dokumenten, beispielsweise Webseiten,
die Anzahl der Dokumente, in denen der Schlüsselbegriff
vorkommt - unabhängig, davon, ob er von Extractor vorgeschlagen
wird. So erhält "Firmenfusion" zum Beispiel eine
Wertung von 45%, wenn es bei 100 Dokumenten in 45 von diesen
vorkommt.
- Normieren Sie die Wertung von
Extractor mit der Wertung des ersten Schlüsselbegriffs, dieser
hat immer die höchste Wertung. Ein Beispiel: Extractor benennt
3 Schlüsselbegriffe: "Firmenfusion" mit Wertung
50, "Aktien" mit 30 und Anleihen mit 10. Die
normalisierten Wertungen sind dann 100%, 60% und 20%.
- Die bei langen Dokumenten
vorgeschlagenen Schlüsselbegriffe erscheinen oft besser als die
von kürzeren. Das Problem mit dem dritten Vorschlag ist, dass
dort die Dokumentenlänge ignoriert wird. Eine Möglichkeit
wäre, die Werungen beispielsweise noch mit dem Logarithmus der
Länge des Dokuments in Bytes oder Anzahl Wörter zu
multiplizieren. Eine andere Möglichkeit ist, die Dokumente nach
der Länge zu sortieren und die Wertungen eines Dokuments
entsprechend seinem Quantil zu vergrößern. Ein Beispiel: Der
Schlüsselbegriff "Firmenfusion" erscheint in
Dokument Nummer 345. und hat eine normalisierte Wertung von 60%.
Aber da Dokument 345 im oberen 25%-Quantil der nach Länge
sortieren Dokumente, vergrößern wir die Wertung von
"Firmenfusion" um 20% zu einer resultierenden Wertung
von 80%.
Kann ich mit
Extractor auch die Häufigkeit der Schlüsselbegriffe im Dokument
ermitteln?
Auch wenn Extractor die Häufigkeit jedes Schlüsselbegriffs im
Dokument berechnet, ermöglicht die API derzeit nicht den Zugriff
auf diese Werte. Wenn Sie die Häufigkeit als Maß für die
Wichtigkeit des Begriffs benutzen wollen, sollten sie prüfen, ob
dafür auch die Wertung benutzt werden kann.
Warum wählt
Extraktor in einem Satz wie "Ich fahre heute nicht Ski"
den Begriff "Ski" anstatt "nicht Ski" als
Schlüsselbegriff?
Der Zweck von Extractor ist die Themen zu ermitteln, die im
Eingabedokument diskutiert werden. Aber Extractor versucht nicht zu
ermitteln, wie diese Themen diskutiert werden. Wenn ein Dokument zum
Beispiel juristische Aspekte zum Thema Schusswaffen diskutiert, wird
Extractor vielleicht den Begriff "Schusswaffenbesitz"
vorschlagen. Dieser Schlüsselbegriff zeigt nicht, ob das Dokument
eine strenge Kontrolle des Schusswaffenbesitzes unterstützt oder
gegen jede staatliche Kontrolle von Schusswaffen Stellung bezieht.
Wir habe mehrere tausend Dokumente geprüft, zu denen die Autoren
Schlüsselbegriffe angegeben haben. In diesen Schlüsselbegriffen war
das Wort "nicht" nirgens angegeben.
Ich will Extractor
für automatische Dokumenten-Klassifizierung benutzen. Können Sie
mir helfen?
Unter automatischer Dokumenten-Klassifizierung wird die
automatisierte Zuordnung von Dokumenten zu vorgegebenen Kategorien
mit Hilfe von Software verstanden. Eine ähnliche Aufgabe ist die automatische
Anhäufung von Dokumenten, bei der es keine vorgegebenen
Kategorien gibt, sondern bei der die Software selber die Kategorien
schaffen muss. Unter folgendem Link finden Sie ein detailliertes
Verzeichnis englischer Literatur zu diesen Themen:
Literaturverzeichnis
zum Thema Maschinelles Lernen, angewendet auf Texte.
Mit Extractor können Sie die
Funktionen für Funktionsvektoren in Algorithmen für maschinelles
Lernen generieren - Erläuterungen zu dieser Terminologie finden Sie
in den in der Bibliographie angegebenen Veröffentlichungen.
Für die Erzeugung der Funktionsvektoren schlagen wir den folgenden
Ansatz vor:
- Wenden Sie Extractor auf alle
Dokumente in Ihrer Sammlung von Beispielen an.
- Benutzen Sie die
Vereinigungsmenge aller extrahierten Schlüsselwörter als
Funktionsmenge.
- Für jedes Dokument und jede
Funktion ist der Wert der Funktion dadurch gegen, wie oft der
Begriff im gegebenen Dokument auftaucht (unabhängig davon, ob
Extractor den Begriff aus dem Dokument extrahiert
hat).
- Wenden Sie Ihren bevorzugten
Algorithmus für maschinelles Lernes wie auf
Entscheidungsbäumen basierende Schlussfolgerungen, neurale
Netzwerke, genetische Algorithmen oder andere Verfahren auf den
resultierenden Funktionsvektor an.
Wie kann ich
Schlüsselbegriffe kombinieren, die aus vielen verschiedenen
Dokumenten stammen?
Für einige Anwendungen möchten Sie vielleicht eine Liste mit
Schlüsselbegriffen haben, die einen ganzen Satz an Dokumenten
abdeckt, wobei jedes Dokument von Extractor gesondert verarbeitet
wurde. Wenn keine Beschränkung in Bezug auf die Listengröße der
Schlüsselbegriffe existiert, können Sie einfach die
Vereinigungsmenge aller Schlüsselbegriffe verwenden. Um die
Listengröße etwas zu reduzieren, können Sie Wörter mit gleichem
Wortstamm, beispielsweise "Auto" und "Autos"
zusammen fassen. Für eine wesentliche Verkleinerung der Liste
können Sie eine normierte Wertung
für jeden Begriff vergeben und die Begriffe mit der höchsten
Wertung verwenden.
Kann Extractor die
Sprache X verarbeiten?
Extractor verarbeitet derzeit einsprachige Dokumente in Englisch,
Fanzösisch, Japanisch, Deutsch, Spanisch oder Koreanisch.
Kann Extractor
das Dokumentenformat X verarbeiten?
Extractor verarbeitet derzeit reinen Text, HTML und EMail. Der
HTML-Filter ist für HTML-Escape Sequenzen für Akzente und
HTML-Zeichen entsprechend ISO Latin-1 geeignet. Der EMail-Filter
verarbeitet über MIME als druckbar bezeichnete Akzente. Wenn Sie
Software entwickeln, die andere Formate verarbeiten muss, stehen
Konvertierungsmodule von diversen Herstellern als Komponenten zur
Verfügung.
Kann Extractor den
Zeichensatz X verarbeiten?
Bei English, Französisch, Deutsch und Spanissh verarbeitet Extractor
derzeit ISO Latin-1, MS-DOS Code Page 437 und Unicode UCS2
double-byte Zeichensätze mit normaler Bytefolge. Für Japanisch
stehen vier Zeichensätze zur Verfügung: JIS, Shift-JIS, EUC-JP und
Unicode UCS-2. Für Koreanisch stehen drei Zeichensätze zur
Verfügung: EUC-KR, Johap und Unicode UCS-2.
Wie erhalte ich 100
Schlüsselbegriffe?
Mit der Funktion ExtrSetNumberPhrases()
ermöglicht Extractor dem Anwender derzeit die Extraktion von 3 bis
30 Begriffen. Für manche Anwendungen benötigen Sie vielleicht mehr
Begriffe. Dann besteht eine Lösung darin, das Dokument wie
hier beschrieben in kleinere Abschnitte aufzuteilen und jeden Teil separat an Extractor zu
übergeben. Sie können dann die Verbindungsmenge der
Schlüsselbegriffe als Gesamtergebnis benutzen.
"Extractor" liefert
maximal 30 Schlüsselbegriffe für jeden einzeln übergebenen Text.
Mit dieser Vorgehensweise erhalten Sie nach nach unserer
Einschätzung eine bessere Liste, als wenn das Buch als homogenes
ganzes behandelt wird. Dies gilt aus folgendem Grund: Angenommen wir
geben Ihnen ein Buch und bitten sie, eine Liste mit 30
Schlüsselbegriffen bzw Schlagwörtern zu dem Buch anzufertigen.
Wenn Ihre Liste annähernd 30 Begriffe aufweist, dürfte es unserer
Meinung nach schwer werden weitere zu finden, bei den meisten
Büchern machen üblicherweise nur 10 bis 15 Schlagworte Sinn. Aber
mit zwei bis drei Synonymen pro Schlagwort kommen dann doch 30
zusammen.
Andererseits könnten wir Ihnen
auch ein einzelnes Kapitel des Buches übergeben. Dann würde die
Liste eventuell genauso lang wie die für das ganze Buch werden. Ein
Schlüsselbegriff zum "Hauptthema" des Kapitels stellt
wahrscheinlich nur ein "Unterthema" des ganzen Buches dar.
Somit wäre die Verbindungsmenge der Schlüsselbegriffe eines
Kapitels eine Untermenge der Begriffe des ganzen Buches.
Wenn ich ein
Dokument an Extractor übergebe und vier Schlüsselbegriffen
anfordere, anschließend für dasselbe Dokument sieben
Schlüsselbegriffe anfordere, so sind die vier Schlüsselbegriffe
nicht immer in den sieben der zweiten
Anfrage enthalten. Wie kommt das?
Dies wird im Detail in folgendem
Artikel erklärt: Learning
to Extract key phrases from Text. Wenn es für Ihre
Anwendung wichtig ist, dass die vier Schlüsselbegriffe bei der
ersten Anfrage den ersten vier Begriffen der zweiten Anfrage
entsprechen, dann sollten Sie von vornherein sieben Begriffe
anfordern und nur die ersten vier verwenden. Generell gilt, dass
Sie, sofen Sie derzeit M Schlüsselbegriffe brauchen aber später
möglicherweise N (wobei N > M), besser gleich N Begriffe
anfordern und nur die ersten M verwenden. Es empfiehlt sich
außerdem, alle N Begriffe zu speichen und den Zeitaufwand
für einen weiteren Aufruf von Extractor zu vermeiden.
Ich möchte mit
Extractor genau N Schlüsselsätze hervorheben. Ich weiss, dass ich
die Anzahl der Schlüsselbegriffe festlegen kann. Aber wie kann ich
die Anzahl der Hervorhebungen festlegen?
Mit der Funktion ExtrSetNumberPhrases()
ermöglicht Extractor dem Anwender derzeit die Extraktion von 3 bis
30 Begriffen. Wenn Sie mit der Funktion ExtrGetHighlightType()
die Hervorhebungen so gesetzt haben, dass Duplikate möglich sind,
dann entspricht die Anzahl der Hervorhebungen (Schlüsselsätze) der
Anzahl der Schlüsselbegriffe. Für jeden Schlüsselbegriff wird es
einen passende Hervorhebung geben, die den Begriff im Zusammenhang
zeigt - außer in den seltenen Fällen, wenn Extractor für einen
Schlüsselbegriff keine passende Hervorhebung gefunden hat. Wenn Sie
aber für die Hervorhebungen definiert haben, dass keine Duplikate
auftreten, dann werden üblicherweise weniger Hervorhebungen als
Schlüsselbegriffe entstehen. In so einem Fall werden zwei oder mehr
Schlüsselbegriffe durch denselben Schlüsselsatz dargestellt. Im
Durchschnitt erhalten Sie bei K Schlüsselbegriffen N = 0,6 × K
Hervorhebungen. Hier sind einige Optionen für den Fall, wenn Sie
genau N Hervorhebungen ohne Duplikate benötigen:
- Fordern Sie K = 2 × N
Schlüsselbegriffe an. Im Durchschnitt erhalten Sie damit etwa 0,6 × 2 × N
= 1,2 × N Hervorhebungen. Mit der Funktion ExtrGetHighlightType()
definieren Sie, dass keine mehrfachen Hervorhebungen auftreten
und das die Hervorhebungen entsprechend der Position im Text
sortiert werden. Übernehmen Sie die ersten N Hervorhebungen und
ignorieren Sie den Rest. Wenn nicht genug Hervorhebungen
vorhanden sind, versuchen Sie eine Anfrage für K = 2,5 × N
Schlüsselbegriffe. Wenn K = 2,5 × N größer als 30 wird,
dann teilen Sie das Dokument in kleinere Abschnitte
auf und übergeben jeden Abschnitt an Extractor.
- Alternativ können Sie auch K =
3 × N
Schlüsselbegriffe anfordern und mit der Funktion ExtrGetHighlightType()
Duplikate zulassen. Die i-te Hervorhebung zeigt dann den
i-ten Schlüsselbegriff im Kontext eines Satzes. Ermitteln Sie
die Wertung des i-ten Schlüsselbegriffs und benutzen Sie diese
Wertung für die Qualität der zugehörigen Hervorhebung. Bei
mehrfach auftretenden Hervorhebungen bewerten Sie die
Hervorhebung mit dem Maximalwert der zugehörigen Wertungen.
Geben Sie die ersten N Hervorhebungen mit den höchsten
Wertungen aus.
- Gehen Sie wie im vorherigen
Vorschlag vor. Bei mehrfach auftretenden Hervorhebungen bewerten
Sie diese aber mit der Summe der Wertungen der zugehörigen
Schlüsselbegriffe. Geben Sie dann wieder die ersten N
Hervorhebungen mit den höchsten Wertungen aus.
- Gehen Sie wie im vorherigen
Vorschlag vor. Bei mehrfach auftretenden Hervorhebungen
bewerten Sie diese aber mit der Anzahl der Duplikate der
Hervorhebungen. Wenn zum Beispiel drei Duplikate eines
bestimmten Satzes vorkommen, bewerten Sie den Satz mit drei. In
anderen Worten entspricht die Wertung eines Satzes der Anzahl
der Schlüsselbegriffe, die er enthält. Geben Sie dann wieder
die ersten N Hervorhebungen mit den höchsten Wertungen aus.
In meinem
Eingabedokument wird häufig das Wort "X" verwendet. Es
ist ein sehr wichtiges Wort und ich benutze es häufig und von
Beginn des Textes an. Dennoch erkennt Extractor es nicht als
Schlüsselwort. Wie kommt das?
Hir gibt es mehrere
Möglichkeiten:
- Extractor ignoriert Wörter mit
weniger als drei Buchstaben.
- Ihr Wort ist in der Liste der Stopp-Wörter.
- Ihr Wort ist in der Liste der Stopp-Begriffe.
Sie können keinen Begriff aus der
Liste der Stopp-Wörter oder Begriffe über das API löschen, dafür
müssten Sie den Source-Code ändern. Auch die minimal geforderte
Wortlänge von drei Buchstaben läßt sich nicht über das API
ändern. Sie können aber das Wort "X" mit der Funktion ExtrAddGoPhrase()
zu der Liste der Go-Begriffe zufügen. Ein Go-Begriff wird immer
extrahiert, wenn er im Dokument enthalten ist, unabhängig davon, ob
er auch in der Liste der Stopp-Wörter oder Begriffe ist.
In unseren Dokumenten haben wir Begriffe mit vier
und mehr Wörtern. Wie verhält sich Extractor in so einem Fall?
Extractor ist dafür
ausgelegt, aus maximal drei Worten bestehende Schlüsselbegriffe zu
finden. Wir haben tausende Dokumente geprüft, zu denen die Autoren
die Schlüsselbegriffe angegeben haben. Nur in ca. 5% der Fälle
wurden Schlüsselbegriffe, bestehend aus mehr als drei Worten
angegeben. Wenn wir versuchen, Schlüsselbegriffe aus vier oder mehr
Worten einzuschließen, können wir zwar einige weitere der von
Autoren angegeben Begriffe abdecken. Dafür entstehen aber auch mehr
Fehler. Da insgesamt ein Verlust entsteht, versucht Extractor nicht,
diese längeren Begriffe zu erfassen. Es gibt zwei Möglichkeiten,
die Sie probieren können, wenn Sie diese läneren Begriffe dringend
brauchen:
- Wenn Extractor eines Begriff der
Form "A B C" und einen der Form "B C D"
zurück gibt, dann können Sie schließen, dass diese zu der
längeren Form "A B C D" gehören und sie zusammen
fügen. Zum Beispiel würden "Joseph von Fraunhofer"
und "Fraunhofer Gymnasium" zu "Joseph von
Fraunhofer Gymnasium" verbunden.
- Wenn Sie mit der Funktion ExtrActivateHighlights()
die Funktion für Hervorhebungen aktivieren und mit ExtrSetHighlightType()
die Hervorhebung auf Fettdruck setzen, schließt die
Hervorhebung Begriffe mit vier und mehr Worten ein. Sie können
dann Ihre eigene Routine verfassen, um die Begriffe aus der
Hervorhebung zu extrahieren.
Ich benutze die
Programmiersprache X. Gibt es einem Weg, die Extractor API von X aus
aufzurufen?
Die Extractor API ist in ISO/ANSI C
geschrieben. Welcher Programmiersprache auch immer Sie benutzen, es
gibt sicherlich eine Möglichkeit für den Aufruf eines extenen
Programms in C. Wenn Sie in C oder C++ entwickeln, haben Sie keine
Probleme beim Aufruf von Extractor. Wenn Sie Java, Perl, Python oder
Visual Basic verwenden, können wir Unterstützung bieten. Bitte kontaktieren
Sie uns in diesen Fällen. |