Schnellentität Linker Kern
Diese Bibliothek führt Abfragesegmentierung und Entität durch, die mit einer Zielreferenzwissenbasis (dh Wikipedia) verknüpft werden. In seiner aktuellen Version ist es zugeschnitten, um eine Abfrageentitätsverknüpfung (alternativ kurze Textfragmente) zu verknüpfen. Das Hauptziel war es, einen extrem schnellen Linker (<1 oder 2 ms/Abfrage in einem Standard -Laptop) zu haben, der völlig unbeaufsichtigt ist, sodass ausgefeiltere Ansätze mit einem angemessenen Zeitbudget darüber arbeiten können. Ein Nebeneffekt davon ist, dass der vom Linker verwendete DataPack <3 GB, was es geeignet ist, auf dem Netz zu laufen (und den Fußabdruck auf Servermaschinen sehr niedrig zu machen).
Bitte installieren Sie Maven, bevor Sie dieses Projekt ausführen. Das Projekt wird mit einem pom.xml ausgestattet, mit dem alle Abhängigkeiten installiert werden sollten, wenn Sie die Befehls mvn install ausführen.
Die Bibliothek führt eine Abfrage- und Dokumententität aus. Es implementiert verschiedene Algorithmen, die eine Konfidenz -Punktzahl (~ logarithmische Wahrscheinlichkeit) zurückgeben, die (mehr oder weniger) über Textstücke unterschiedlicher Länge vergleichbar sein sollte, damit man einen globalen Schwellenwert für die Verknüpfung verwenden kann. Das Programm arbeitet mit zwei Datenbüken, einem großen Hash- und Druckwort und Entitätsvektoren. Der Hash wird aus einem DataPack generiert, der die Zahlen von Phrasen und Entitäten zusammenzieht, die gemeinsam zusammen sind. Diese Zählungen können aus verschiedenen Quellen stammen, zum Beispiel Ankertext und Abfrageprotokolle. In Ankertext würden wir den Anker und die Entität zählen, wenn es einen Link zu einer entsprechenden Entitätsseite gibt. In einem Abfrageprotokoll, wenn ein Klick auf eine Entitätsseite vorhanden ist, würden wir die Abfrage- und Entitätszählungen aktualisieren. Das Wort und die Entitätsvektordateien sind komprimierte Vektordarstellungen, die die Kontexte berücksichtigen, in denen das Wort/die Entität erscheint. Die Bibliothek bietet eine Möglichkeit, die Entitätsvektoren zu lernen. Wortvektoren können mit allgemeinen Tools wie Word2VEC generiert werden, oder Sie können vorgebildete Wortvektoren wie die im FastText-Projekt von Facebook verfügbaren Word-Vektoren wiederverwenden.
Die Bibliothek verfügt außerdem über zwei verschiedene Tools Sätze zum Generieren des Hash- und der Wortvektordateien.
Wenn Sie diese Bibliothek verwenden, zitieren Sie bitte folgende Arbeiten:
@inproceedings{Blanco:WSDM2015,
Address = {New York, NY, USA},
Author = {Blanco, Roi and Ottaviano, Giuseppe and Meij, Edgar},
Booktitle = {Proceedings of the Eight ACM International Conference on Web Search and Data Mining},
Location = {Shanghai, China},
Numpages = {10},
Publisher = {ACM},
Series = {WSDM 15},
Title = {Fast and Space-Efficient Entity Linking in Queries},
Year = {2015}
}
@inproceedings{Pappu:WSDM2017,
Address = {New York, NY, USA},
Author = {Pappu, Aasish, and Blanco, Roi, and Mehdad, Yashar and Stent, Amanda, and Thadani, Kapil},
Booktitle = {Proceedings of the Tenth ACM International Conference on Web Search and Data Mining},
Location = {Cambridge, UK},
Numpages = {10},
Publisher = {ACM},
Series = {WSDM 17},
Title = {Lightweight Multilingual Entity Extraction and Linking},
Year = {2017}
}
Es gibt eine Reihe verschiedener Ranker/Linker, die verschiedene konzeptionelle Modelle verwenden. Die Gesamtbeschreibung des Algorithmus mit einigen Implementierungsdetails ist unter:
Schnelle und platzeeffiziente Entität, die nach Abfragen verlinkt
Die Hauptklasse ist com.yahoo.semsearch.fastlinking.FastEntityLinker
Die Klasse kann mit --help aufgerufen werden, um die verfügbaren Optionen aufzulisten. Sie bieten interaktives Verknüpfung über STDIN (bearbeiten Sie den Code oder erweitern Sie die Klasse, wenn Sie ein benutzerdefiniertes Ausgabeformat benötigen).
Laden Sie zunächst den Datensatz von WebScope nach den unten angegebenen Links herunter.
Beispiel für den Nutzungsanruf:
mvn exec:java -Dexec.mainClass=com.yahoo.semsearch.fastlinking.FastEntityLinker
-Dexec.args= " en/english-nov15.hash " Die CoherentEntityLinker Klassenklasse nimmt Entity-Regionen und N-Best-Liste der Entitätsverbindungen für jede Entität als Eingabe an. Es baut ein Gitter aus den N-BEST-Listen auf und läuft nach vorne-Rückwärts-Algorithmus.
Weitere Kohärenzalgorithmen werden experimentiert. Sie werden in zukünftigen Versionen des Codes hinzugefügt.
mvn clean compile exec:java
-Dexec.mainClass=com.yahoo.semsearch.fastlinking.CoherentEntityLinkerWrapper
-Dexec.args= " en/enwiki.wiki2vec.d300.compressed en/english-nov15.hash test.txt "
-Dexec.classpathScope=compileSie können eine Zuordnungsdatei in die Entity-Linker-Argumente (unten) einbeziehen, die die Kategorien der Integralentität in Kategorien menschlicher lesbarer Entität melden.
Der folgende Befehl würde den Linker auf einem Hadoop -Raster ausführen:
hadoop jar FEL-0.1.0-fat.jar
com.yahoo.semsearch.fastlinking.utils.RunFELOntheGrid
-Dmapred.map.tasks=100
-Dmapreduce.map.java.opts=-Xmx3g
-Dmapreduce.map.memory.mb=3072
-Dmapred.job.queue.name=adhoc
-files en/english-nov15.hash#hash, src/main/bash/id-type.tsv#mapping
< inputfile >
< outputfile >Die Klasse liest Dateien mit einer Abfrage pro Zeile - sie spaltet sich auf und nimmt das erste Element auf. Das Ausgangsformat lautet:
entity_type <TAB> query <TAB> modifier <TAB> entity_id
Wo
entity_type ist im datapack angegebenquery ist die ursprüngliche Abfragemodifier ist die Abfragezeichenfolge, wenn der Entität alias remove wirdentity_id ist die abgerufene EntitätIm Allgemeinen sollten Sie sich auf die Schwelle angewiesen und möglicherweise an die Top-1-Entität festhalten, aber dies hängt davon ab, wie Sie es verwenden werden.
Dieses Paket bietet auch Code an
Mehr dazu finden Sie im W2V -Paket.
Das Tool nutzt einen DataPack, der Zählungen und Aliase (Erwähnungen) von Entitäten aus verschiedenen Quellen speichert. Ursprünglich haben wir Ankertext und Abfrageboten verwendet. Im Folgenden wird beschrieben, wie man den Ankertext eines öffentlichen Wikipedia -Müllkops mit einem Hadoop -Cluster abmischt und berechnet (oder ob es keine gibt, Sie können Hadoop in einer einzigen Maschine verwenden). Dies basiert auf dem Code des Cloud9 -Toolkits.
Mehr dazu finden Sie im IO -Paket.
#### Erstellen einer quasi-suzialen Entitätsfunktion Hash
Der DataPack enthält zwei Dateien: eine mit der Per-Entfaltungszählungen und eine mit der Entität zu ID-Zuordnung. Dann können Sie es mit:
com.yahoo.semsearch.fastlinking.hash.QuasiSuccinctEntityHash
-i < datapack_file > -e < entity2id_file > -o < output_file > Die folgenden vorgebreiteten Modelle werden zur Durchführung von Entitäten bereitgestellt, die mit dem Toolkit verknüpft sind, und sind über die Yahoo! WebScope -Programm für Forschungszwecke. Diese Modelle werden auf Wikipedia geschult und mit Creative Commons mit der SA 4.0 -Lizenz verteilt (siehe models_license).
Englischer Hash, der ab November 2015 Wikipedia ausgebildet wurde
Englische Einheiten Einbettung
Spanischer Hash wurde ab Oktober 2015 Wikipedia ausgebildet
Spanische Einheiten Einbettung
Der chinesische Hash wurde ab Dezember 2015 Wikipedia ausgebildet
Chinesische Einheiten Einbettung
Roi Blanco, Aasish Pappu