File size: 2,050 Bytes
954ef50
 
53a9268
9e59d5c
 
954ef50
ab7434f
616bc95
 
 
ab7434f
 
7d050cf
 
11beae9
 
 
 
 
7d050cf
 
 
 
 
 
 
 
 
 
be6cb76
 
7d050cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53a9268
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
---
license: cc-by-nc-sa-4.0
pipeline_tag: conversational
datasets:
- daily_dialog
---

⚠️ **This model is deprecated. Please don't use it as it produces embeddings of low quality. 
We recommend using [triple-encoders](https://huggingface.co/UKPLab/triple-encoders-dailydialog) instead, also if you want to use them as a classic bi-encoder.**

Imaginary Embeddings utilize Curved Contrastive Learning (see paper [Imagination Is All You Need!](https://arxiv.org/pdf/2211.07591.pdf) (ACL 2023)) on [Sentence Transformers](https://sbert.net/) for long-short term dialogue planning and efficient abstract sequence modeling.

This model does not use speaker tokens and was evaluated in the Long-Term planning and sequence modeling experiments.

## setup
```bash
python -m pip install imaginaryNLP
```

## Usage Sequence Modeling:

```python
from imaginaryNLP.ImaginaryEmbeddingsForSequenceModeling import EvalImaginaryEmbeddingsForSequenceModeling

# Load the model
seq = EvalImaginaryEmbeddingsForSequenceModeling('Justus-Jonas/Imaginary-Embeddings-Classic', speaker_token=False)

# add candidates and context
seq.load_candidates_from_strings(["I'm fine, thanks. How are you?", "Where did you go?", "ACL is an interesting conference"])

# create context, pre-compute and keep 80% of utterances
seq.create_context(["Hi!",'Hey, how are you?'], precompute_top_p=0.8)

seq.sequence_modeling_with_precompute("I am doing good. Today I went for a walk. ")
```

## Long-Term-Planning

```python
from imaginaryNLP.ImaginaryEmbeddingsForLTP import ImaginaryEmbeddingsForLTP

ltp = ImaginaryEmbeddingsForLTP('Justus-Jonas/Imaginary-Embeddings-Classic', speaker_token=False)

# add a contex
ltp.create_context([' Hello', 'Hi , great to meet you ! '])

# add goals
ltp.add_goal(" great to hear that ! ")
ltp.add_goal(" Want to go for a walk ? ")
ltp.add_goal(" Bye !")

# greedy curving
ltp.greedy_curving()

# imaginary embedding chains
ltp.imaginary_embedding_chains()

# imaginary embedding chains with curving
ltp.imaginary_embedding_chains_with_curving()
```