详解在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 代码性能优化技巧分享
Aug 07 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
python实现简单成绩录入系统
Sep 19 Python
python实现飞机大战小游戏
Nov 08 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
django使用channels实现通信的示例
Oct 19 Python
Python获取百度热搜的完整代码
Apr 07 Python
pytorch 6 batch_train 批训练操作
May 28 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
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
面试常见的js算法题
2017/03/23 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
python计算文本文件行数的方法
2015/07/06 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
对python中的argv和argc使用详解
2018/12/15 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
python dataframe NaN处理方式
2019/12/26 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
python能在浏览器能运行吗
2020/06/17 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
python绘制趋势图的示例
2020/09/17 Python
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
大学生创业事迹材料
2014/12/30 职场文书
工程款催款函
2015/06/24 职场文书
2016年元旦寄语
2015/08/17 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers