详解在Python中使用Torchmoji将文本转换为表情符号


Posted in Python onJuly 27, 2020

很难找到关于如何使用Python使用DeepMoji的教程。我已经尝试了几次,后来又出现了几次错误,于是决定使用替代版本:torchMoji。

TorchMoji是DeepMoji的pyTorch实现,可以在这里找到:https://github.com/huggingface/torchMoji

详解在Python中使用Torchmoji将文本转换为表情符号

事实上,我还没有找到一个关于如何将文本转换为表情符号的教程。如果你也没找到,那么本文就是一个了。

安装

这些代码并不完全是我的写的,源代码可以在这个链接上找到。

pip3 install torch==1.0.1 -f https://download.pytorch.org/whl/cpu/stable 
git clone https://github.com/huggingface/torchMoji
import os
os.chdir('torchMoji')
pip3 install -e .
#if you restart the package, the notebook risks to crash on a loop
#I did not restart and worked fine

该代码将下载约600 MB的数据用于训练人工智能。我一直在用谷歌Colab。然而,我注意到,当程序要求您重新启动笔记本进行所需的更改时,它开始在循环中崩溃并且无法补救。如果你使用的是jupyter notebook或者colab记事本不要重新,不管它的重启要求就可以了。

python3 scripts/download_weights.py

这个脚本应该下载需要微调神经网络模型。询问时,按“是”确认。

设置转换功能函数

使用以下函数,可以输入文进行转换,该函数将输出最可能的n个表情符号(n将被指定)。

import numpy as np
import emoji, json
from torchmoji.global_variables import PRETRAINED_PATH, VOCAB_PATH
from torchmoji.sentence_tokenizer import SentenceTokenizer
from torchmoji.model_def import torchmoji_emojis
 
EMOJIS = ":joy: :unamused: :weary: :sob: :heart_eyes: :pensive: :ok_hand: :blush: :heart: :smirk: :grin: :notes: :flushed: :100: :sleeping: :relieved: :relaxed: :raised_hands: :two_hearts: :expressionless: :sweat_smile: :pray: :confused: :kissing_heart: :heartbeat: :neutral_face: :information_desk_person: :disappointed: :see_no_evil: :tired_face: :v: :sunglasses: :rage: :thumbsup: :cry: :sleepy: :yum: :triumph: :hand: :mask: :clap: :eyes: :gun: :persevere: :smiling_imp: :sweat: :broken_heart: :yellow_heart: :musical_note: :speak_no_evil: :wink: :skull: :confounded: :smile: :stuck_out_tongue_winking_eye: :angry: :no_good: :muscle: :facepunch: :purple_heart: :sparkling_heart: :blue_heart: :grimacing: :sparkles:".split(' ')
model = torchmoji_emojis(PRETRAINED_PATH)
with open(VOCAB_PATH, 'r') as f:
 vocabulary = json.load(f)
st = SentenceTokenizer(vocabulary, 30)def deepmojify(sentence,top_n =5):
 def top_elements(array, k):
 ind = np.argpartition(array, -k)[-k:]
 return ind[np.argsort(array[ind])][::-1]tokenized, _, _ = st.tokenize_sentences([sentence])
 prob = model(tokenized)[0]
 emoji_ids = top_elements(prob, top_n)
 emojis = map(lambda x: EMOJIS[x], emoji_ids)
 return emoji.emojize(f"{sentence} {' '.join(emojis)}", use_aliases=True)

文本实验

text = ['I hate coding AI']for _ in text:
 print(deepmojify(_, top_n = 3))

输出

详解在Python中使用Torchmoji将文本转换为表情符号

如您所见,这里给出的是个列表,所以可以添加所需的字符串数。

原始神经网络

如果你不知道如何编码,你只想试一试,你可以使用DeepMoji的网站:https://deepmoji.mit.edu/

详解在Python中使用Torchmoji将文本转换为表情符号

源代码应该完全相同,事实上,如果我输入5个表情符号而不是3个,这就是我代码中的结果:

详解在Python中使用Torchmoji将文本转换为表情符号

输入列表而不是一句话

在进行情绪分析时,我通常会在Pandas上存储tweets或评论的数据库,我将使用以下代码,将字符串列表转换为Pandas数据帧,其中包含指定数量的emojis。

import pandas as pddef emoji_dataset(list1, n_emoji=3):
 emoji_list = [[x] for x in list1]for _ in range(len(list1)):
 for n_emo in range(1, n_emoji+1):
  emoji_list[_].append(deepmojify(list1[_], top_n = n_emoji)[2*-n_emo+1])emoji_list = pd.DataFrame(emoji_list)
 return emoji_listlist1 = ['Stay safe from the virus', 'Push until you break!', 'If it does not challenge you, it will not change you']

我想估计一下这个字符串列表中最有可能出现的5种表情:

emoji_dataset(list1, 5)

详解在Python中使用Torchmoji将文本转换为表情符号

就是这么简单

作者:Michelangiolo Mazzeschi

deephub翻译组

到此这篇关于详解在Python中使用Torchmoji将文本转换为表情符号的文章就介绍到这了,更多相关Python Torchmoji文本转换为表情符号内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 数据加密代码
Dec 24 Python
python 实现归并排序算法
Jun 05 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
基于python实现上传文件到OSS代码实例
May 09 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
Python 合并拼接字符串的方法
Jul 28 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
五种Python转义表示法
Nov 27 Python
基于python实现操作git过程代码解析
Jul 27 #Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 #Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 #Python
在 Windows 下搭建高效的 django 开发环境的详细教程
Jul 27 #Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 #Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 #Python
Python性能分析工具py-spy原理用法解析
Jul 27 #Python
You might like
ThinkPHP模板中数组循环实例
2014/10/30 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
javascript学习之闭包分析
2010/12/02 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python计算字符宽度的方法
2016/06/14 Python
使用Python对SQLite数据库操作
2017/04/06 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
Django 路由系统URLconf的使用
2018/10/11 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
python实现简单井字棋游戏
2020/03/04 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
python3中编码获取网页的实例方法
2020/11/16 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
HTML5 视频播放(video),JavaScript控制视频的实例代码
2018/10/08 HTML / CSS
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
初级Java程序员面试题
2016/03/03 面试题
普通党员四风问题对照检查材料
2014/09/27 职场文书
新课程改革心得体会
2016/01/22 职场文书