详解在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中使用动态变量名的方法
May 06 Python
跟老齐学Python之不要红头文件(1)
Sep 28 Python
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
python程序变成软件的实操方法
Jun 24 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
Python datetime包函数简单介绍
Aug 28 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
python 创建一维的0向量实例
Dec 02 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
Django集成富文本编辑器summernote的实现步骤
May 31 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
php 图片上添加透明度渐变的效果
2009/06/29 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
一段实用的php验证码函数
2016/05/19 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
js模仿jquery的写法示例代码
2013/06/16 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
js键盘事件实现人物的行走
2020/01/17 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
python导入坐标点的具体操作
2019/05/10 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
Python @property及getter setter原理详解
2020/03/31 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
商务专员岗位职责
2013/11/23 职场文书
入党自我评价优缺点
2014/01/25 职场文书
销售主管岗位职责
2014/02/08 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
2015年药房工作总结
2015/04/25 职场文书
个人工作决心书
2015/09/22 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
Python进行区间取值案例讲解
2021/08/02 Python
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
MySQL 数据 data 基本操作
2022/05/04 MySQL
MySQL数据库简介与基本操作
2022/05/30 MySQL