readme: # <a name="introduction"></a> PhoBERT: Pre-trained language models for Vietnamese 
    
  Pre-trained PhoBERT models are the state-of-the-art language models for Vietnamese ([Pho](https://en.wikipedia.org/wiki/Pho), i.e. "Phở", is a popular food in Vietnam):
  
   - Two PhoBERT versions of "base" and "large" are the first public large-scale monolingual language models pre-trained for Vietnamese. PhoBERT pre-training approach is based on [RoBERTa](https://github.com/pytorch/fairseq/blob/master/examples/roberta/README.md)  which optimizes the [BERT](https://github.com/google-research/bert) pre-training procedure for more robust performance.
   - PhoBERT outperforms previous monolingual and multilingual approaches, obtaining new state-of-the-art performances on four downstream Vietnamese NLP tasks of Part-of-speech tagging, Dependency parsing, Named-entity recognition and Natural language inference.
  
  The general architecture and experimental results of PhoBERT can be found in our EMNLP-2020 Findings [paper](https://arxiv.org/abs/2003.00744):
  
      @article{phobert,
      title     = {{PhoBERT: Pre-trained language models for Vietnamese}},
      author    = {Dat Quoc Nguyen and Anh Tuan Nguyen},
      journal   = {Findings of EMNLP},
      year      = {2020}
      }
  
  **Please CITE** our paper when PhoBERT is used to help produce published results or is incorporated into other software.
  
  For further information or requests, please go to [PhoBERT's homepage](https://github.com/VinAIResearch/PhoBERT)!
  
  ### Installation <a name="install2"></a>
   -  Python 3.6+, and PyTorch 1.1.0+ (or TensorFlow 2.0+)
   -  Install `transformers`:
          - `git clone https://github.com/huggingface/transformers.git`
          - `cd transformers`
          - `pip3 install --upgrade .`
  
  ### Pre-trained models <a name="models2"></a>
  
  Model | #params | Arch.  | Pre-training data
  ---|---|---|---
  `vinai/phobert-base` | 135M | base | 20GB  of texts
  `vinai/phobert-large` | 370M | large | 20GB  of texts
  
  ### Example usage <a name="usage2"></a>
  
  ```python
  import torch
  from transformers import AutoModel, AutoTokenizer
  
  phobert = AutoModel.from_pretrained("vinai/phobert-base")
  tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base")
  
  # INPUT TEXT MUST BE ALREADY WORD-SEGMENTED!
  line = "Tôi là sinh_viên trường đại_học Công_nghệ ."
  
  input_ids = torch.tensor([tokenizer.encode(line)])
  
  with torch.no_grad():
      features = phobert(input_ids)  # Models outputs are now tuples
  
  ## With TensorFlow 2.0+:
  # from transformers import TFAutoModel
  # phobert = TFAutoModel.from_pretrained("vinai/phobert-base")
  ```
  