Views
No views yet
1def preprocess(text):
2 preprocessed_text = []
3 for t in text.split():
4 if len(t) > 1:
5 t = '@user' if t[0] == '@' and t.count('@') == 1 else t
6 t = 'http' if t.startswith('http') else t
7 preprocessed_text.append(t)
8 return ' '.join(preprocessed_text)1from transformers import pipeline, AutoTokenizer
2
3MODEL = "cardiffnlp/twitter-roberta-base-2019-90m"
4fill_mask = pipeline("fill-mask", model=MODEL, tokenizer=MODEL)
5tokenizer = AutoTokenizer.from_pretrained(MODEL)
6
7def pprint(candidates, n):
8 for i in range(n):
9 token = tokenizer.decode(candidates[i]['token'])
10 score = candidates[i]['score']
11 print("%d) %.5f %s" % (i+1, score, token))
12
13texts = [
14 "So glad I'm <mask> vaccinated.",
15 "I keep forgetting to bring a <mask>.",
16 "Looking forward to watching <mask> Game tonight!",
17]
18
19for text in texts:
20 t = preprocess(text)
21 print(f"{'-'*30}\n{t}")
22 candidates = fill_mask(t)
23 pprint(candidates, 5)------------------------------
So glad I'm <mask> vaccinated.
1) 0.28870 getting
2) 0.28611 not
3) 0.15485 fully
4) 0.07357 self
5) 0.01812 being
------------------------------
I keep forgetting to bring a <mask>.
1) 0.12194 book
2) 0.04396 pillow
3) 0.04202 bag
4) 0.03038 wallet
5) 0.02729 charger
------------------------------
Looking forward to watching <mask> Game tonight!
1) 0.65505 End
2) 0.19230 The
3) 0.03856 the
4) 0.01223 end
5) 0.00978 this1from transformers import AutoTokenizer, AutoModel, TFAutoModel
2import numpy as np
3from scipy.spatial.distance import cosine
4from collections import Counter
5
6def get_embedding(text): # naive approach for demonstration
7 text = preprocess(text)
8 encoded_input = tokenizer(text, return_tensors='pt')
9 features = model(**encoded_input)
10 features = features[0].detach().cpu().numpy()
11 return np.mean(features[0], axis=0)
12
13
14MODEL = "cardiffnlp/twitter-roberta-base-2019-90m"
15tokenizer = AutoTokenizer.from_pretrained(MODEL)
16model = AutoModel.from_pretrained(MODEL)
17
18query = "The book was awesome"
19tweets = ["I just ordered fried chicken 🐣",
20 "The movie was great",
21 "What time is the next game?",
22 "Just finished reading 'Embeddings in NLP'"]
23
24sims = Counter()
25for tweet in tweets:
26 sim = 1 - cosine(get_embedding(query), get_embedding(tweet))
27 sims[tweet] = sim
28
29print('Most similar to: ', query)
30print(f"{'-'*30}")
31for idx, (tweet, sim) in enumerate(sims.most_common()):
32 print("%d) %.5f %s" % (idx+1, sim, tweet))Most similar to: The book was awesome
------------------------------
1) 0.99078 The movie was great
2) 0.96701 Just finished reading 'Embeddings in NLP'
3) 0.96037 I just ordered fried chicken 🐣
4) 0.95919 What time is the next game?1from transformers import AutoTokenizer, AutoModel, TFAutoModel
2import numpy as np
3
4MODEL = "cardiffnlp/twitter-roberta-base-2019-90m"
5tokenizer = AutoTokenizer.from_pretrained(MODEL)
6
7text = "Good night 😊"
8text = preprocess(text)
9
10# Pytorch
11model = AutoModel.from_pretrained(MODEL)
12encoded_input = tokenizer(text, return_tensors='pt')
13features = model(**encoded_input)
14features = features[0].detach().cpu().numpy()
15features_mean = np.mean(features[0], axis=0)
16#features_max = np.max(features[0], axis=0)
17
18# # Tensorflow
19# model = TFAutoModel.from_pretrained(MODEL)
20# encoded_input = tokenizer(text, return_tensors='tf')
21# features = model(encoded_input)
22# features = features[0].numpy()
23# features_mean = np.mean(features[0], axis=0)
24# #features_max = np.max(features[0], axis=0)