详解在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引用(import)文件夹下的py文件的方法
Aug 26 Python
Windows8下安装Python的BeautifulSoup
Jan 22 Python
Python开发常用的一些开源Package分享
Feb 14 Python
python实现的简单猜数字游戏
Apr 04 Python
用Python进行TCP网络编程的教程
Apr 29 Python
用python制作游戏外挂
Jan 04 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
Python安装使用Scrapy框架
Apr 12 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
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP小教程之实现链表
2014/06/09 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Python操作CouchDB数据库简单示例
2015/03/10 Python
python检测远程服务器tcp端口的方法
2015/03/14 Python
Python六大开源框架对比
2015/10/19 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
新闻稿怎么写
2015/07/18 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
Python正则表达式中flags参数的实例详解
2022/04/01 Python