详解在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判断Abundant Number的方法
Jun 15 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
django Serializer序列化使用方法详解
Oct 16 Python
python requests指定出口ip的例子
Jul 25 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
python实现静态服务器
Sep 05 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
在Django中使用MQTT的方法
May 10 Python
Python实现byte转integer
Jun 03 Python
pandas中pd.groupby()的用法详解
Jun 16 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/08/25 PHP
thinkphp缓存技术详解
2014/12/09 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
Python将多个excel表格合并为一个表格
2021/02/22 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
python selenium 获取接口数据的实现
2020/12/07 Python
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
策划创业计划书
2014/02/06 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
课外活动总结范文
2014/07/09 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
员工评语范文
2014/12/31 职场文书
中标通知书范本
2015/04/17 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
大学生活感想
2015/08/10 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python
Python各协议下socket黏包问题原理
2022/04/12 Python