nlp-lab/Project/Tools/EmojiCounting.ipynb
2018-07-20 13:46:12 +02:00

290 lines
14 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Count emoji occurences"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import json\n",
"import glob\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"from __future__ import unicode_literals\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"json_root = \"./emoji_counts/\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"json_files = sorted(glob.glob(json_root + \"/*.json\"))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['./emoji_counts/twitter_emoji_count_2017-12.json',\n",
" './emoji_counts/twitter_emoji_count_2017_11.json']"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"json_files"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"json_lists = []"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for path in json_files:\n",
" with open(path) as f:\n",
" data = json.load(f)\n",
" json_lists.append(data)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"merged_dict = {}\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for j in json_lists:\n",
" for emoji in j.keys():\n",
" if emoji in merged_dict:\n",
" merged_dict[emoji] = merged_dict[emoji] + j[emoji]\n",
" else:\n",
" merged_dict[emoji] = j[emoji]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"n_top = 50"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"keysort = np.argsort(list(merged_dict.values()))[-n_top:]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# for apple:\n",
"from matplotlib.font_manager import FontProperties\n",
"\n",
"prop = FontProperties(fname='/System/Library/Fonts/Apple Color Emoji.ttc')\n",
"plt.rcParams['font.family'] = prop.get_family()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d80ce48>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#matplotlib.rc('font', family='Arial')\n",
"plt.figure(figsize=(10,5))\n",
"plt.bar(np.array(list(merged_dict.keys()))[keysort], np.array(list(merged_dict.values()))[keysort], color='g')\n",
"plt.savefig(\"histogram.png\", bbox_inches='tight')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([106, 14, 46, 41, 74, 91, 87, 104, 69, 11, 52, 81, 15,\n",
" 38, 16, 27, 65, 66, 28, 1, 57, 31, 55, 53, 33, 21,\n",
" 2, 59, 29, 6, 32, 34, 13, 49, 37, 54, 40, 10, 4,\n",
" 23, 50, 25, 8, 17, 5, 24, 7, 9, 3, 0])"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keysort"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['🤔', '🤣', '💕', '😚', '🤦', '😓', '😥', '🙄', '😻', '😣', '😛', '😝', '😃',\n",
" '😐', '😈', '😡', '😞', '😪', '😑', '😕', '😬', '😱', '😇', '😄', '😆', '😴',\n",
" '🙈', '😜', '😤', '😫', '😳', '😋', '😀', '😌', '😏', '😔', '😒', '😎', '😢',\n",
" '😅', '😁', '😉', '🙌', '🙏', '😘', '😊', '😩', '😍', '😭', '😂'],\n",
" dtype='<U1')"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(list(merged_dict.keys()))[keysort]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'🤔🤣💕😚🤦😓😥🙄😻😣😛😝😃😐😈😡😞😪😑😕😬😱😇😄😆😴🙈😜😤😫😳😋😀😌😏😔😒😎😢😅😁😉🙌🙏😘😊😩😍😭😂'"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"''.join(np.array(list(merged_dict.keys()))[keysort])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}