Núcleo de ligação de entidade rápida
Esta biblioteca executa segmentação de consulta e entidade vinculando a uma base de conhecimento de referência de destino (ou seja, Wikipedia). Em sua versão atual, ele é adaptado +para a entidade de consulta Linking (alternativamente, fragmentos curtos de texto). O principal objetivo era ter um ligante extremamente rápido (<1 ou 2 ms/consulta, em média, em um laptop padrão) que não é supervisionado, para que abordagens mais sofisticadas possam funcionar com um orçamento de tempo decente disponível. Um efeito colateral disso é que a datapack usada pelo vinculador ocupa <3 GB, tornando -o adequado para executar na grade (e tornar muito baixo a pegada nas máquinas do servidor).
Por favor, instale o Maven antes de executar este projeto. O projeto vem com um pom.xml que deve instalar todas as dependências quando você executa o comando mvn install .
A biblioteca executa a entidade de consulta e documentos. Ele implementa algoritmos diferentes que retornam uma pontuação de confiança (~ probabilidade de log) que deve ser (mais ou menos) comparável entre peças de texto de comprimento diferente para que se possa usar um limite global para vincular. O programa opera com duasestruturas de dados, um grande hash e vetores de palavras e entidades compactadas. O hash é gerado a partir de uma pilha que registra as contagens de frases e entidades que co-ocorrem juntas. Essas contagens podem vir de fontes diferentes, por exemplo, texto de ancoragem e logs de consulta. No texto âncora, sempre que houver um link para uma página de entidade correspondente, armazenávamos a âncora e a entidade contam. Em um log de consultas sempre que houver um clique em uma página de entidade, atualizaríamos a consulta e a contagem de entidades. Os arquivos de vetor de palavra e entidade são representações vetoriais compactadas que explicam os contextos em que a palavra/entidade aparece. A biblioteca fornece uma maneira de aprender os vetores da entidade. Os vetores de palavras podem ser gerados usando ferramentas gerais como o Word2Vec, ou você pode reutilizar vetores de palavras pré-treinados, como os disponíveis no projeto FastText do Facebook.
A biblioteca também vem com dois conjuntos diferentes de ferramentas para gerar o hash e os arquivos do Word Vector.
Se você usar esta biblioteca, cite os seguintes papéis:
@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}
}
Existem vários rankers/ligantes diferentes que usam diferentes modelos conceituais. A descrição geral do algoritmo com alguns detalhes de implementação está em:
Entidade rápida e eficiente e link para consultas
A classe principal a ser usada é com.yahoo.semsearch.fastlinking.FastEntityLinker
A classe pode ser chamada com --help para listar as opções disponíveis. Eles fornecem vinculação interativa através do stdin (edite o código ou estenda a classe se precisar de um formato de saída personalizado).
Primeiro baixe o conjunto de dados do Webscope seguindo os links fornecidos abaixo.
Exemplo de chamada de uso:
mvn exec:java -Dexec.mainClass=com.yahoo.semsearch.fastlinking.FastEntityLinker
-Dexec.args= " en/english-nov15.hash " A classe CoherentEntityLinker toma meios de entidade e a melhor lista de entidades de entidade para cada mencionação da entidade como entrada. Ele constrói uma treliça a partir das listas N-Best e executa o algoritmo para a frente.
Mais algoritmos de coerência estão sob experimentação. Eles serão adicionados em versões futuras do código.
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=compileVocê pode incluir um arquivo de mapeamento nos argumentos do ligante de entidade (abaixo) que mapeiam categorias de entidades integrais para categorias de entidades legíveis por humanos.
O comando a seguir executaria o ligante em uma grade 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 >A classe lê arquivos com uma consulta por linha - ela se divide e pega o primeiro elemento. O formato de saída é:
entity_type <TAB> query <TAB> modifier <TAB> entity_id
onde
entity_type é dado no Datapackquery é a consulta originalmodifier é a sequência de consulta quando o alias da entidade é removeentity_id é a entidade recuperadaEm geral, você deve confiar no limiar e possivelmente aderir à entidade Top-1 recuperada, mas isso depende de como você o usará.
Este pacote também fornece código para
Mais sobre isso pode ser encontrado no pacote W2V.
A ferramenta utiliza uma datapack que armazena contagens e aliases (menções) de entidades de diferentes fontes. Originalmente, usamos texto de ancoragem e logs de consulta. A seguir, descreve como minerar e calcular o texto âncora de um despejo público da Wikipedia usando um cluster Hadoop (ou se não houver um, você pode usar o Hadoop em uma única máquina). Isso é baseado no código do kit de ferramentas Cloud9.
Mais sobre isso pode ser encontrado no pacote de IO.
#### Cria
O DataPack conterá dois arquivos: um com a contagem de entidades e outra com a entidade para o mapeamento de ID. Em seguida, você pode hash com:
com.yahoo.semsearch.fastlinking.hash.QuasiSuccinctEntityHash
-i < datapack_file > -e < entity2id_file > -o < output_file > Os seguintes modelos pré-treinados são fornecidos para executar a entidade vinculando o kit de ferramentas e estão disponíveis no Yahoo! Programa Webscope para fins de pesquisa. Esses modelos são treinados na Wikipedia e distribuídos usando o Creative Commons by SA 4.0 License (consulte Models_license).
Hash inglês treinado a partir de novembro de 2015 Wikipedia
INCLUGRAS DE ENTIDADE INGLÊS
Hash espanhol treinado a partir de outubro de 2015 Wikipedia
INCLIMAÇÕES DE ENTIDADE ESPANHIANÇAS
Hash chinês treinado a partir de dezembro de 2015 Wikipedia
INCLIMAÇÕES DE ENTIDADE CHINESS
ROI BLANCO, AASISH PAPPU