# Installation and Usage
## Installation
- We highly recommend **conda** environment to prevent dependecy problem
```
# pororo only supports python>=3.6
conda create -n pororo python=3.6
conda activate pororo
```
- To install `pororo` run following command:
```
pip install pororo
```
- Or you can install it **locally**:
```console
git clone https://github.com/kakaobrain/pororo.git
cd pororo
pip install -e .
```
- Since `Pororo` sets **English** as a default language option, you should follow [INSTALL](https://github.kakaocorp.com/kakaobrain/pororo/blob/master/INSTALL.md) guide to install other dependency libraries
## Usage
- To see what's available in `pororo`, run the following command:
```python
>>> from pororo import Pororo
>>> Pororo.available_tasks()
"Available tasks are ['mrc', 'rc', 'qa', 'question_answering', 'machine_reading_comprehension', 'reading_comprehension', 'sentiment', 'sentiment_analysis', 'nli', 'natural_language_inference', 'inference', 'fill', 'fill_in_blank', 'fib', 'para', 'pi', 'cse', 'contextual_subword_embedding', 'similarity', 'sts', 'semantic_textual_similarity', 'sentence_similarity', 'sentvec', 'sentence_embedding', 'sentence_vector', 'se', 'inflection', 'morphological_inflection', 'g2p', 'grapheme_to_phoneme', 'grapheme_to_phoneme_conversion', 'w2v', 'wordvec', 'word2vec', 'word_vector', 'word_embedding', 'tokenize', 'tokenise', 'tokenization', 'tokenisation', 'tok', 'segmentation', 'seg', 'mt', 'machine_translation', 'translation', 'pos', 'tag', 'pos_tagging', 'tagging', 'const', 'constituency', 'constituency_parsing', 'cp', 'pg', 'collocation', 'collocate', 'col', 'word_translation', 'wt', 'summarization', 'summarisation', 'text_summarization', 'text_summarisation', 'summary', 'gec', 'review', 'review_scoring', 'lemmatization', 'lemmatisation', 'lemma', 'ner', 'named_entity_recognition', 'entity_recognition', 'zero-topic', 'dp', 'dep_parse', 'caption', 'captioning', 'asr', 'speech_recognition', 'st', 'speech_translation', 'ocr', 'srl', 'semantic_role_labeling', 'p2g', 'aes', 'essay', 'qg', 'question_generation', 'age_suitability']"
```
- To see which models are available with specific task, run the following command:
```python
>>> from pororo import Pororo
>>> Pororo.available_models("collocation")
'Available models for collocation are ([lang]: ko, [model]: kollocate), ([lang]: en, [model]: collocate), ([lang]: ja, [model]: collocate), ([lang]: zh, [model]: collocate)'
```
- `pororo` takes the concept of HuggingFace Transformers's [**Pipeline**](https://huggingface.co/transformers/main_classes/pipelines.html)
- Therefore, we use factory class `Pororo` to load task-specific model from our hub
```python
>>> from pororo import Pororo
>>> mrc = Pororo(task="mrc") # define task model as PororoBertMrc
```
- You can check the information of the task-specific module by printing object
```python
>>> summary = Pororo(task="summary")
>>> summary
[TASK]: summary
[LANG]: ko
[MODEL]: transformer.base.ko.summary
```