Noyau de linker entité rapide
Cette bibliothèque effectue une segmentation de requête et un lien en entités à une base de connaissances de référence cible (c'est-à-dire Wikipedia). Dans sa version actuelle, il est adapté + vers la liaison des entités de requête (alternativement, courts fragments de texte). L'objectif principal était d'avoir un linker extrêmement rapide (<1 ou 2 ms / requête en moyenne sur un ordinateur portable standard) qui n'est pas complètement supervisé, afin que des approches plus sophistiquées puissent fonctionner en plus avec un budget de temps décent disponible. Un effet secondaire de cela est que le dossier de données utilisé par le linker occupe <3 Go, ce qui le rend adapté à l'exécution sur la grille (et à rendre l'empreinte sur les machines de serveur très faible).
Veuillez installer Maven avant d'exécuter ce projet. Le projet est livré avec un pom.xml qui devrait installer toutes les dépendances lorsque vous exécutez l' mvn install .
La bibliothèque effectue des requêtes et des liens d'entité de document. Il met en œuvre différents algorithmes qui renvoient un score de confiance (~ la vraisemblance du log) qui devrait être (plus ou moins) comparable à travers des morceaux de texte de longueur différente afin que l'on puisse utiliser un seuil global pour la liaison. Le programme fonctionne avec deux données de données, un gros hachage et des vecteurs de mots et d'entités compressés. Le hachage est généré à partir d'un dossier de données qui enregistre des comptes de phrases et d'entités qui coexistent ensemble. Ces dénombrements peuvent provenir de différentes sources, par exemple le texte d'ancrage et les journaux de requête. Dans le texte de l'ancrage, chaque fois qu'il existe un lien vers une page d'entité correspondante, nous stockions l'ancre et que l'entité compte. Dans un journal de requête chaque fois qu'il y a un clic sur une page d'entité, nous mettons à jour les comptes de requête et d'entités. Les fichiers vectoriels de mot et d'entité sont des représentations de vecteur compressées qui expliquent les contextes dans lesquels le mot / entité apparaît. La bibliothèque fournit un moyen d'apprendre les vecteurs d'entité. Les vecteurs de mots peuvent être générés à l'aide d'outils généraux comme Word2Vec, ou vous pouvez réutiliser des vecteurs de mots pré-formés tels que ceux disponibles dans le projet FastText de Facebook.
La bibliothèque est également livrée avec deux ensembles différents d'outils pour générer le hachage et les fichiers vectoriels de mots.
Si vous utilisez cette bibliothèque, veuillez citer les articles suivants:
@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}
}
Il existe un certain nombre de rangs / linkers différents qui utilisent différents modèles conceptuels. La description globale de l'algorithme avec certains détails de mise en œuvre est de:
Entité rapide et efficace dans l'espace liant les requêtes
La classe principale à utiliser est com.yahoo.semsearch.fastlinking.FastEntityLinker
La classe peut être appelée avec --help pour répertorier les options disponibles. Ils fournissent des liens interactifs via STDIN (modifiez le code ou étendez la classe si vous avez besoin d'un format de sortie personnalisé).
Téléchargez d'abord l'ensemble de données à partir de WebScope suivant les liens fournis ci-dessous.
Exemple d'appel d'utilisation:
mvn exec:java -Dexec.mainClass=com.yahoo.semsearch.fastlinking.FastEntityLinker
-Dexec.args= " en/english-nov15.hash " La classe CoherentEntityLinker prend des entités et la liste N-plus naissante des liens d'entités pour chaque mention d'entité en entrée. Il construit un réseau à partir des listes N-Best et exécute l'algorithme d'avant-arrière.
Plus d'algorithmes de cohérence sont sous expérimentation. Ils seront ajoutés dans les futures versions du code.
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=compileVous pouvez inclure un fichier de mappage dans les arguments de linker entités (ci-dessous) qui mappe les catégories d'entités intégrales aux catégories d'entités lisibles par l'homme.
La commande suivante exécuterait le linker sur une grille Hadoop:
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 >La classe lit des fichiers qui ont une requête par ligne - il se sépare et prend le premier élément. Le format de sortie est:
entity_type <TAB> query <TAB> modifier <TAB> entity_id
où
entity_type est donné dans le dossier de donnéesquery est la requête d'originemodifier est la chaîne de requête lorsque l'alias de l'entité est removeentity_id est l'entité récupéréeEn général, vous devez compter sur le seuil et éventuellement vous en tenir à l'entité top 1 récupérée, mais cela dépend de la façon dont vous allez l'utiliser.
Ce package fournit également du code à
Plus de choses à ce sujet peuvent être trouvées dans le package W2V.
L'outil utilise un dossier de données qui stocke le nombre et les alias (mentions) d'entités provenant de différentes sources. À l'origine, nous avons utilisé des journaux de texte d'ancrage et de requête. Ce qui suit décrit comment exploiter et calculer le texte d'ancrage à partir d'un vidage public Wikipedia à l'aide d'un cluster Hadoop (ou s'il n'y en a pas, vous pouvez utiliser Hadoop dans une seule machine). Ceci est basé sur le code de la boîte à outils Cloud9.
Plus de choses à ce sujet peuvent être trouvées dans le package IO.
#### Création d'une entité quasi-suraction fonctionnait le hachage
Le dossier de données contiendra deux fichiers: un avec le nombre par entrée et un avec la mappage entité à ID. Ensuite, vous pouvez le hacher en utilisant:
com.yahoo.semsearch.fastlinking.hash.QuasiSuccinctEntityHash
-i < datapack_file > -e < entity2id_file > -o < output_file > Les modèles pré-formés suivants sont fournis pour effectuer des entités liant à la boîte à outils et sont disponibles via Yahoo! Programme WebScope à des fins de recherche. Ces modèles sont formés sur Wikipedia et distribués à l'aide d'une licence Creative Commons par SA 4.0 (voir Models_license).
Hash anglais formé à partir de novembre 2015 Wikipedia
Entités anglaises intégrées
Hash espagnol formé à partir d'octobre 2015 Wikipedia
Entités espagnoles intégrées
Hash chinois formé à partir de décembre 2015 Wikipedia
Entités chinoises
Roi Blanco, Aasish Pappu