ランキングに戻る

linkedin/detext

Python

DeText: A Deep Neural Text Understanding Framework for Ranking and Classification Tasks

rankingdeep-neural-networksdetext-frameworkclassificationtext-embeddingsnlp
スター成長
スター
1.3k
フォーク
135
週間成長
Issue
7
5001k
2020年2月2022年3月2024年5月2026年7月
成果物PyPIpip install detext
README

"Relax like a sloth, let DeText do the understanding for you"

Python 3.7 application tensorflow License

DeText: A Deep Neural Text Understanding Framework

DeText is a Deep Text understanding framework for NLP related ranking, classification, and language generation tasks. It leverages semantic matching using deep neural networks to understand member intents in search and recommender systems.

As a general NLP framework, DeText can be applied to many tasks, including search & recommendation ranking, multi-class classification and query understanding tasks.

More details can be found in the LinkedIn Engineering blog post.

Highlight

  • Natural language understanding powered by state-of-the-art deep neural networks
    • automatic feature extraction with deep models
    • end-to-end training
    • interaction modeling between ranking sources and targets
  • A general framework with great flexibility
    • customizable model architectures
    • multiple text encoder support
    • multiple data input types support
    • various optimization choices
    • standard training flow control
  • Easy-to-use
    • Configuration based modeling (e.g., all configurations through command line)

General Model Architecture

DeText supports a general model architecture that contains following components:

  • Word embedding layer. It converts the sequence of words into a d by n matrix.

  • CNN/BERT/LSTM for text encoding layer. It takes into the word embedding matrix as input, and maps the text data into a fixed length embedding.

  • Interaction layer. It generates deep features based on the text embeddings. Options include concatenation, cosine similarity, etc.

  • Wide & Deep Feature Processing. We combine the traditional features with the interaction features (deep features) in a wide & deep fashion.

  • MLP layer. The MLP layer is to combine wide features and deep features.

All parameters are jointly updated to optimize the training objective.

Model Configurables

DeText offers great flexibility for clients to build customized networks for their own use cases:

  • LTR/classification layer: in-house LTR loss implementation, or tf-ranking LTR loss, multi-class classification support.

  • MLP layer: customizable number of layers and number of dimensions.

  • Interaction layer: support Cosine Similarity, Hadamard Product, and Concatenation.

  • Text embedding layer: support CNN, BERT, LSTM with customized parameters on filters, layers, dimensions, etc.

  • Continuous feature normalization: element-wise rescaling, value normalization.

  • Categorical feature processing: modeled as entity embedding.

All these can be customized via hyper-parameters in the DeText template. Note that tf-ranking is supported in the DeText framework, i.e., users can choose the LTR loss and metrics defined in DeText.

User Guide

Dev environment set up

  1. Create your virtualenv (Python version >= 3.7)
    VENV_DIR = <your venv dir>
    python3 -m venv $VENV_DIR  # Make sure your python version >= 3.7
    source $VENV_DIR/bin/activate  # Enter the virtual environment
    
  2. Upgrade pip and setuptools version
    pip3 install -U pip
    pip3 install -U setuptools
    
  3. Run setup for DeText:
    pip install . -e
    
  4. Verify environment setup through pytest. If all tests pass, the environment is correctly set up
    pytest 
    
  5. Refer to the training manual (TRAINING.md) to find information about customizing the model:
    • Training data format and preparation
    • Key parameters to customize and train DeText models
    • Detailed information about all DeText training parameters for full customization
  6. Train a model using DeText (e.g., run_detext.sh)

Tutorial

If you would like a simple try out of the library, you can refer to the following notebooks for tutorial

  • text_classification_demo.ipynb

    This notebook shows how to use DeText to train a multi-class text classification model on a public query intent classification dataset. Detailed instructions on data preparation, model training, model inference are included.

  • autocompletion.ipynb

    This notebook shows how to use DeText to train a text ranking model on a public query auto completion dataset. Detailed steps on data preparation, model training, model inference examples are included.

Citation

Please cite DeText in your publications if it helps your research:

@manual{guo-liu20,
  author    = {Weiwei Guo and
               Xiaowei Liu and
               Sida Wang and 
               Huiji Gao and
               Bo Long},
  title     = {DeText: A Deep NLP Framework for Intelligent Text Understanding},
  url       = {https://engineering.linkedin.com/blog/2020/open-sourcing-detext},
  year      = {2020}
}

@inproceedings{guo-gao19,
  author    = {Weiwei Guo and
               Huiji Gao and
               Jun Shi and 
               Bo Long},
  title     = {Deep Natural Language Processing for Search Systems},
  booktitle = {ACM SIGIR 2019},
  year      = {2019}
}

@inproceedings{guo-gao19,
  author    = {Weiwei Guo and
               Huiji Gao and
               Jun Shi and 
               Bo Long and 
               Liang Zhang and
               Bee-Chung Chen and
               Deepak Agarwal},
  title     = {Deep Natural Language Processing for Search and Recommender Systems},
  booktitle = {ACM SIGKDD 2019},
  year      = {2019}
}

@inproceedings{guo-liu20,
  author    = {Weiwei Guo and
               Xiaowei Liu and
               Sida Wang and 
               Huiji Gao and
               Ananth Sankar and 
               Zimeng Yang and 
               Qi Guo and 
               Liang Zhang and
               Bo Long and 
               Bee-Chung Chen and 
               Deepak Agarwal},
  title     = {DeText: A Deep Text Ranking Framework with BERT},
  booktitle = {ACM CIKM 2020},
  year      = {2020}
}

@inproceedings{jia-long20,
  author    = {Jun Jia and
               Bo Long and
               Huiji Gao and 
               Weiwei Guo and 
               Jun Shi and
               Xiaowei Liu and
               Mingzhou Zhou and
               Zhoutong Fu and
               Sida Wang and
               Sandeep Kumar Jha},
  title     = {Deep Learning for Search and Recommender Systems in Practice},
  booktitle = {ACM SIGKDD 2020},
  year      = {2020}
}

@inproceedings{wang-guo20,
  author    = {Sida Wang and
               Weiwei Guo and
               Huiji Gao and
               Bo Long},
  title     = {Efficient Neural Query Auto Completion},
  booktitle = {ACM CIKM 2020},
  year      = {2020}
}

@inproceedings{liu-guo20,
  author    = {Xiaowei Liu and
               Weiwei Guo and
               Huiji Gao and
               Bo Long},
  title     = {Deep Search Query Intent Understanding},
  booktitle = {arXiv:2008.06759},
  year      = {2020}
}
関連リポジトリ
recommenders-team/recommenders

Best Practices on Recommendation Systems

PythonPyPIMIT Licensemachine-learningrecommender
recommenders-team.github.io/recommenders/intro.html
21.8k3.3k
EvanLi/Github-Ranking

:star:Github Ranking:star: Github stars and forks ranking list. Github Top100 stars list of different languages. Automatically update daily. | Github仓库排名,每日自动更新

PythonPyPIMIT Licenserankingstars
evanli.github.io/Github-Ranking
11.7k681
mingrammer/go-web-framework-stars

:star: Web frameworks for Go, most starred on GitHub

GoGo ModulesMIT Licensegoweb-framework
3.8k263
emeryberger/CSrankings

A web app for ranking computer science departments according to their research output in selective venues, and for finding active faculty across a wide range of areas.

PythonPyPIOthercomputer-scienceranking
csrankings.org
3.2k3.9k
tensorflow/ranking

Learning to Rank in TensorFlow

PythonPyPIApache License 2.0rankingmachine-learning
2.8k478
metarank/metarank

A low code Machine Learning personalized ranking service for articles, listings, search results, recommendations that boosts user engagement. A friendly Learn-to-Rank engine

ScalaApache License 2.0rankingscala
metarank.ai
2.4k110
jaywcjlove/github-rank

🕷️Github China/Global User Ranking, Global Warehouse Star Ranking (Github Action is automatically updated daily).

EJSMIT Licensegithubranking
jaywcjlove.github.io/github-rank
2.3k175
namisan/mt-dnn

Multi-Task Deep Neural Networks for Natural Language Understanding

PythonPyPIMIT Licensemulti-task-learningnatural-language-understanding
2.3k408
frutik/awesome-search

Awesome Search - this is all about the (e-commerce, but not only) search and its awesomeness

PythonPyPIsearchsearch-engine
frutik.github.io/awesome-search/
1.6k140
dorianbrown/rank_bm25

A Collection of BM25 Algorithms in Python

PythonPyPIApache License 2.0bm25information-retrieval
1.4k107
ArrowLuo/CLIP4Clip

An official implementation for "CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval"

PythonPyPIMIT Licensevideo-text-retrievalmultimodal-learning
arxiv.org/abs/2104.08860
1k135
allegro/allRank

allRank is a framework for training learning-to-rank neural models based on PyTorch.

PythonPyPIApache License 2.0learning-to-rankndcg
1k129