Lihuchen commited on
Commit
c2bae01
1 Parent(s): ec73b69

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +80 -0
README.md CHANGED
@@ -8,4 +8,84 @@ tags:
8
  - Fuzzy Join
9
 
10
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
 
8
  - Fuzzy Join
9
 
10
  ---
11
+ ## PEARL-small
12
+
13
+ [Learning High-Quality and General-Purpose Phrase Representations](https://arxiv.org/pdf/2401.10407.pdf). <br>
14
+ [Lihu Chen](chenlihu.com), [Gaël Varoquaux](https://gael-varoquaux.info/), [Fabian M. Suchanek](https://suchanek.name/), EACL Findings 2024
15
+
16
+ PEARL-small is finetuned on [E5-small](https://huggingface.co/intfloat/e5-small-v2),
17
+ which can yield better representations for various downstream tasks such as entity clustering, entity retrieval and fuzzy join.
18
+
19
+ | Model |Size| PPDB | PPDB filtered |Turney|BIRD|YAGO|UMLS|CoNLL|BC5CDR|AutoFJ|Avg|
20
+ |-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|
21
+ | FastText |-| 94.4 | 61.2 | 59.6 | 58.9 |16.9|14.5|3.0|0.2| 53.6|40.3|
22
+ | Sentence-BERT |110M| 94.6 | 66.8 | 50.4 | 62.6 | 21.6|23.6|25.5|48.4| 57.2| 50.1|
23
+ | Phrase-BERT |110M| 96.8 | 68.7 | 57.2 | 68.8 |23.7|26.1|35.4| 59.5|66.9| 54.5|
24
+ | E5-small |34M| 96.0| 56.8|55.9| 63.1|43.3| 42.0|27.6| 53.7|74.8|57.0|
25
+ |E5-base|110M| 95.4|65.6|59.4|66.3| 47.3|44.0|32.0| 69.3|76.1|61.1|
26
+ |PEARL-small|34M| 97.0|70.2|57.9|68.1| 48.1|44.5|42.4|59.3|75.2|62.5|
27
+ |PEARL-base|110M|97.3|72.2|59.7|72.6|50.7|45.8|39.3|69.4|77.1|64.8|
28
+
29
+ ## Usage
30
+
31
+ Below is an example of entity retrieval, and we reuse the code from E5.
32
+
33
+ ```python
34
+ import torch.nn.functional as F
35
+
36
+ from torch import Tensor
37
+ from transformers import AutoTokenizer, AutoModel
38
+
39
+
40
+ def average_pool(last_hidden_states: Tensor,
41
+ attention_mask: Tensor) -> Tensor:
42
+ last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
43
+ return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
44
+
45
+ def encode_text(model, input_texts):
46
+ # Tokenize the input texts
47
+ batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')
48
+
49
+ outputs = model(**batch_dict)
50
+ embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
51
+
52
+ return embeddings
53
+
54
+
55
+ query_texts = ["The New York Times"]
56
+ doc_texts = [ "NYTimes", "New York Post", "New York"]
57
+ input_texts = query_texts + doc_texts
58
+
59
+ tokenizer = AutoTokenizer.from_pretrained('Lihuchen/pearl_small')
60
+ model = AutoModel.from_pretrained('Lihuchen/pearl_small')
61
+
62
+ # encode
63
+ embeddings = encode_text(model, input_texts)
64
+
65
+ # calculate similarity
66
+ embeddings = F.normalize(embeddings, p=2, dim=1)
67
+ scores = (embeddings[:1] @ embeddings[1:].T) * 100
68
+ print(scores.tolist())
69
+
70
+ # expected outputs
71
+ # [[90.56318664550781, 79.65763854980469, 75.52054595947266]]
72
+ ```
73
+
74
+ ## Training and Evaluation
75
+ Have a look at our code on [Github](https://github.com/tigerchen52/PEARL)
76
+
77
+
78
+
79
+ ## Citation
80
+
81
+ If you find our work useful, please give us a citation:
82
+
83
+ ```
84
+ @article{chen2024learning,
85
+ title={Learning High-Quality and General-Purpose Phrase Representations},
86
+ author={Chen, Lihu and Varoquaux, Ga{\"e}l and Suchanek, Fabian M},
87
+ journal={arXiv preprint arXiv:2401.10407},
88
+ year={2024}
89
+ }
90
+ ```
91