The Bertmoticon package is fine-tuned from the BERT model, to the emoji prediction task. It can predict emojis in 102 languages. In this package we include two functions that enable the use of it: bertmoticon.infer and bertmoticon.infer_mappings. The number of emojis available for this model are 80; and are listed in bertmoticon.emojis.
You can download the TwitterEmoticon Dataset here: link. Abiding by the TwitterAPI's guidelines we are only allowed to share the IDs of the tweets. The link contains the test,train and valiadation splits that we used for our paper. The duplicates that exist signal that the tweet had more than one emoji.
You can download the TwitterCovid dataset that is mentioned in the paper through here: (5 parts) a, b , c , d , e. Abiding by TwitterAPI's guidelines we are only allowed to provide the IDs of the tweets.
Installing the Bertmoticon package from PyPI using:
pip3 install bertmoticon
Importing the package can be done as:
import bertmoticon
If the model is not already downloaded; upon first run it will download and extract the model automatically as such:
Downloading bermoticon model
[= ]
...
[================== ]
...
[===========================================================]
Extracting the model
The model is not included with the pypi installation. It requires 1.34 GB. Loads it either into CUDA or CPU based on CUDA availability.
The model can predict up to 80 emojis. Acceessing the emojis can be done by calling the global variable emojis
called as bertmoticon.emojis
.
>>> print(bertmoticon.emojis)
['๐', '๐ญ', '๐', '๐', '๐', '๐
', '๐', '๐', '๐', '๐', '๐ฉ', '๐', '๐', '๐ข', '๐', '๐', '๐', '๐ณ', '๐', '๐', '๐', '๐', '๐', '๐', '๐', '๐ฑ', '๐', '๐', '๐ก', '๐ฌ', '๐', '๐ด', '๐ซ', '๐ช', '๐ค', '๐', '๐', '๐', '๐ท', '๐ฃ', '๐ฅ', '๐', '๐', '๐', '๐', '๐น', '๐', '๐ป', '๐', '๐', '๐ ', '๐', '๐ฐ', '๐', '๐ฒ', '๐ถ', '๐ฎ', '๐', '๐ต', '๐', '๐', '๐จ', '๐', '๐', '๐', '๐ฏ', '๐', '๐', '๐ง', '๐ฟ', '๐ธ', '๐', '๐ฆ', '๐ฝ', '๐บ', '๐ผ', '๐
', '๐พ', '๐', '๐']
Takes in a list
of strings
and an int
number of guesses. It returns a list of dictionaries, where each dictionary contains an emoji and a corresponding percentage.
>>> ls_of_strings = ["Vote #TRUMP2020ToSaveAmerica from corrupt Joe Biden and the radical left.","Je veux aller dormir. #fatiguรฉ"]
>>> print(bertmoticon.infer(ls_of_strings,3))
[{'๐': '0.1938', '๐ก': '0.1866', '๐': '0.0847'}, {'๐ด': '0.1547', '๐ญ': '0.1507', '๐ฉ': '0.0892'}]
Takes in a list
of strings
, a dictionary dict
of the emoji mappings, and an int
number of guesses. It returns the number of occurences of each key value. We define the dictionary and the list as follows:
>>> mappings = {"Anger":['๐ก'], "Other":['๐','๐ญ']}
>>> ls_of_strings = ["Vote #TRUMP2020ToSaveAmerica from corrupt Joe Biden and the radical left.","Je veux aller dormir. #fatiguรฉ"]
The key values are the category names and the values are lists of the emojis contained in that category. Then parsed into the bertmoticon.infer_mappings
returns:
>>>print(bertmoticon.infer_mappings(ls_of_strings,mappings,3))
{'Anger': 1, 'Other': 2}