详解在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微信库itchat实现微信自动回复功能
May 18 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
对python:print打印时加u的含义详解
Dec 15 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
浅析使用Python搭建http服务器
Oct 27 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
django API 中接口的互相调用实例
Apr 01 Python
如何在Windows中安装多个python解释器
Jun 16 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
pandas统计重复值次数的方法实现
Feb 20 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 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绘制一条弧线的方法
2015/01/24 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
js重写方法的简单实现
2016/07/10 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
使用python实现生成用户信息
2017/03/20 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python分布式编程实现过程解析
2019/11/08 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
介绍一下gcc特性
2015/10/31 面试题
车间调度岗位职责
2013/11/30 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS