{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Config" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/Users/tranxuanhuy/Documents/GitHub/CustomerReviewSentiment\n" ] } ], "source": [ "%cd .." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "README.md \u001b[34mdata\u001b[m\u001b[m \u001b[34mtest\u001b[m\u001b[m \u001b[34mutils\u001b[m\u001b[m\n" ] } ], "source": [ "# assure \"data\" folder in the output list\n", "!ls" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Cleaning\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from utils.cleaner import cleaning" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0contentscorethumbsUpCountApplication
00rất thuận tiện , có lợi ích .52Messenger
11tốt4213Messenger
22ok51Messenger
33xài rất tốt , nên tải nha58Messenger
44gútttt51Messenger
..................
31074199995ok50Instagram
31074299996g o o d50Instagram
3107439999750Instagram
31074499998nhiều lúc tôi k lấy đc hiệu ứng10Instagram
31074599999tui chưa chơi ko biết có hay ko .30Instagram
\n", "

310746 rows × 5 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 content score thumbsUpCount \\\n", "0 0 rất thuận tiện , có lợi ích . 5 2 \n", "1 1 tốt 4 213 \n", "2 2 ok 5 1 \n", "3 3 xài rất tốt , nên tải nha 5 8 \n", "4 4 gútttt 5 1 \n", "... ... ... ... ... \n", "310741 99995 ok 5 0 \n", "310742 99996 g o o d 5 0 \n", "310743 99997 có 5 0 \n", "310744 99998 nhiều lúc tôi k lấy đc hiệu ứng 1 0 \n", "310745 99999 tui chưa chơi ko biết có hay ko . 3 0 \n", "\n", " Application \n", "0 Messenger \n", "1 Messenger \n", "2 Messenger \n", "3 Messenger \n", "4 Messenger \n", "... ... \n", "310741 Instagram \n", "310742 Instagram \n", "310743 Instagram \n", "310744 Instagram \n", "310745 Instagram \n", "\n", "[310746 rows x 5 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.read_csv('data/rawdata.csv')\n", "data['content'] = data['content'].apply(cleaning)\n", "data" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Manual Test" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bị lỗi quài\n", "bị lỗi quài\n", "\n", "Meslon\n", "meslon\n", "\n", "Dcmm app như lolll lỗi hoài dcmm appp lolll mess sài như cc lỗi ko\n", "dcmm app như lolll lỗi hoài dcmm appp lolll mess sài như cc lỗi ko\n", "\n", "Cập nhật dì mà lỗi quài nt thì ko hiện lên s mà đọc tr ơi....call vd thì mất filter..:(\n", "cập nhật dì mà lỗi quài nt thì ko hiện lên s mà đọc tr ơi . call vd thì mất filter . \n", "\n", "App nt nhưng nhắn ko ai trl:)\n", "app nt nhưng nhắn ko ai trl\n", "\n", "Cập nhật xg vẫn như cũ\n", "cập nhật xg vẫn như cũ\n", "\n", "Tại sao tôi không có ghi chú ????\n", "tại sao tôi không có ghi chú . \n", "\n", "Acc hk xài thì có ghi chú mà acc đag xài thì hk có r cập nhật cx hk có j ht trơn kì cục 😠\n", "acc hk xài thì có ghi chú mà acc đag xài thì hk có r cập nhật cx hk có j ht trơn kì cục \n", "\n", "Bị lỗi hoài\n", "bị lỗi hoài\n", "\n" ] } ], "source": [ "raw_data = pd.read_csv('data/rawdata.csv')\n", "\n", "i = 2\n", "for i in range(9*i, 9*(i+1)):\n", " print(raw_data.loc[i, 'content'])\n", " print(data.loc[i, 'content'])\n", " print()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Acc hk xài thì có ghi chú mà acc đag xài thì hk có r cập nhật cx hk có j ht trơn kì cục =))\n" ] } ], "source": [ "text = \"Acc hk xài thì có ghi chú mà acc đag xài thì hk có r cập nhật cx hk có j ht trơn kì cục 😠\"\n", "text = \"Acc hk xài thì có ghi chú mà acc đag xài thì hk có r cập nhật cx hk có j ht trơn kì cục =))\"\n", "print(text)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Acc hk xài thì có ghi chú mà acc đag xài thì hk có r cập nhật cx hk có j ht trơn kì cục =))'" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import re\n", "def deEmojify(text):\n", " regrex_pattern = re.compile(pattern = \"[\"\n", " u\"\\U0001F600-\\U0001F64F\" # emoticons\n", " u\"\\U0001F300-\\U0001F5FF\" # symbols & pictographs\n", " u\"\\U0001F680-\\U0001F6FF\" # transport & map symbols\n", " u\"\\U0001F1E0-\\U0001F1FF\" # flags (iOS)\n", " \"]+\", flags = re.UNICODE)\n", " return regrex_pattern.sub(r'',text)\n", "\n", "deEmojify(text)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def filter_stop_words(train_sentences, stop_words):\n", " new_sent = [word for word in train_sentences.split() if word not in stop_words]\n", " train_sentences = ' '.join(new_sent)\n", " return train_sentences\n", "\n", "\n", "def deEmojify(text):\n", " regrex_pattern = re.compile(pattern = \"[\"\n", " u\"\\U0001F600-\\U0001F64F\" # emoticons\n", " u\"\\U0001F300-\\U0001F5FF\" # symbols & pictographs\n", " u\"\\U0001F680-\\U0001F6FF\" # transport & map symbols\n", " u\"\\U0001F1E0-\\U0001F1FF\" # flags (iOS)\n", " \"]+\", flags = re.UNICODE)\n", " return regrex_pattern.sub(r'',text)\n", "\n", "\n", "def preprocess(text, tokenized=True, lowercased=True):\n", " # text = ViTokenizer.tokenize(text)\n", " # text = ' '.join(vncorenlp.tokenize(text)[0])\n", " #text = filter_stop_words(text, stopwords)\n", " #text = deEmojify(text)\n", " #text = text.lower() if lowercased else text\n", " if tokenized:\n", " pre_text = \"\"\n", " #sentences = vncorenlp.tokenize(text)\n", " for sentence in text:\n", " pre_text += \" \".join(sentence)\n", " text = pre_text\n", " return text\n", "\n", "\n", "def pre_process_features(X, y, tokenized=True, lowercased=True):\n", " X = np.array(X)\n", " y = np.array(y)\n", " X = [preprocess(str(p), tokenized=tokenized, lowercased=lowercased) for p in list(X)]\n", " for idx, ele in enumerate(X):\n", " if not ele:\n", " np.delete(X, idx)\n", " np.delete(y, idx)\n", " return X, y" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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.11.4" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }