strongpear commited on
Commit
0beb932
1 Parent(s): 49fe48c

create data_preprocessing.py

Browse files
Files changed (1) hide show
  1. data_preprocessing.py +177 -0
data_preprocessing.py ADDED
@@ -0,0 +1,177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Created on Fri Jul 28 08:29:31 2023
4
+
5
+ @author: ASUS
6
+ """
7
+ import pandas as pd
8
+ import os
9
+ import glob
10
+ import re
11
+
12
+ import unicodedata2
13
+ from underthesea import word_tokenize
14
+
15
+ path = 'raw_data/'
16
+ files = glob.glob(os.path.join(path, "*.csv"))
17
+
18
+ def read_csv_file(file):
19
+
20
+ raw_df = pd.DataFrame()
21
+
22
+ for file in files:
23
+ drop_idx = []
24
+ df = pd.read_csv(file)
25
+ for index, row in df.iterrows():
26
+ if len(row['comments'].split(" ")) < 10:
27
+ drop_idx.append(index)
28
+
29
+ df = df.drop(drop_idx, axis=0)
30
+ df.reset_index(inplace=True)
31
+
32
+ raw_df = pd.concat([raw_df, df], ignore_index=True)
33
+
34
+ raw_df.drop(['index', 'Unnamed: 0'], axis=1, inplace=True)
35
+ raw_df = raw_df.drop_duplicates()
36
+
37
+ return raw_df
38
+
39
+ def remove_xem_them(text):
40
+ text = text.replace("Xem thêm", "")
41
+ text = text.replace("xem thêm", "")
42
+
43
+ return text
44
+
45
+ # remove emojis
46
+ def remove_emojis(text):
47
+ emoj = re.compile("["
48
+ u"\U0001F600-\U0001F64F" # emoticons
49
+ u"\U0001F300-\U0001F5FF" # symbols & pictographs
50
+ u"\U0001F680-\U0001F6FF" # transport & map symbols
51
+ u"\U0001F1E0-\U0001F1FF" # flags (iOS)
52
+ u"\U00002500-\U00002BEF" # chinese char
53
+ u"\U00002702-\U000027B0"
54
+ u"\U00002702-\U000027B0"
55
+ u"\U000024C2-\U0001F251"
56
+ u"\U0001f926-\U0001f937"
57
+ u"\U00010000-\U0010ffff"
58
+ u"\u2640-\u2642"
59
+ u"\u2600-\u2B55"
60
+ u"\u200d"
61
+ u"\u23cf"
62
+ u"\u23e9"
63
+ u"\u231a"
64
+ u"\ufe0f" # dingbats
65
+ u"\u3030"
66
+ "]+", re.UNICODE)
67
+
68
+ return re.sub(emoj, ' ', text)
69
+
70
+ def remove_hastag(text):
71
+ pattern = re.compile(r'([\#]+)((\w)*)(\s*)')
72
+ matches = pattern.finditer(text + " ")
73
+ for m in matches:
74
+ text = text.replace(m.group(), '')
75
+
76
+ return text
77
+
78
+ def remove_stopwords(text):
79
+ stopwords = []
80
+
81
+ f = open('vietnamese-stopwords.txt', encoding='utf8')
82
+ for line in f:
83
+ stopwords.append(line.rstrip('\n'))
84
+
85
+ new_text = ' '.join([i for i in text.split() if i not in stopwords])
86
+
87
+ return new_text
88
+
89
+ # split word with punctuation
90
+ def format_punctuation(text):
91
+ pattern = re.compile(r'(([\!\"\#\$\%\&\,\.\-\_\+\:\;\?\^\•])+)(\w+)')
92
+ matches = pattern.finditer(text + " ")
93
+ for m in matches:
94
+ text = text.replace(m.group()[0], ' ')
95
+
96
+ return text
97
+
98
+ # remove punctuation
99
+ def remove_punctuation(text):
100
+ punc = "'!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~‘’“”•…‼‼‼⁃₫√≧≦–"
101
+ new_text = "".join([i for i in text if i not in punc])
102
+
103
+ return new_text
104
+
105
+ def format_price(text):
106
+ pattern = re.compile(r'([0-9]+)(\s*)(k)(?=\W)')
107
+ matches = pattern.finditer(text + " ")
108
+ prices = []
109
+ new_prices = []
110
+ for m in matches:
111
+ prices.append(m.group())
112
+ new_prices.append(m.group().replace('k', '') + " nghìn_đồng")
113
+
114
+ pattern = re.compile(r'([0-9]+)(\s*)(tr |m )(([0-9]*))')
115
+ matches = pattern.finditer(text + " ")
116
+ for m in matches:
117
+ prices.append(m.group())
118
+ for r in ["tr ", "m "]:
119
+ if r in m.group():
120
+ n_p = m.group().replace(r, " triệu ")
121
+ break
122
+ tmp = n_p.split("triệu")
123
+ if tmp[1] == " ":
124
+ n_p += "_đồng "
125
+ else :
126
+ if int(tmp[1]) < 10:
127
+ tmp[1] = int(tmp[1]) * 100
128
+ if int(tmp[1]) < 100:
129
+ tmp[1] = int(tmp[1]) * 10
130
+ n_p = tmp[0] + "_triệu " + str(tmp[1]) + " nghìn_đồng"
131
+ new_prices.append(n_p)
132
+
133
+ for i in range(len(prices)):
134
+ text = text.replace(prices[i], new_prices[i])
135
+
136
+ text = text.replace("nghìn đồng", "nghìn_đồng")
137
+ text = text.replace("triệu đồng", "triệu_đồng")
138
+
139
+ return text
140
+
141
+ def format_price_v2(text):
142
+ pattern = re.compile(r'([0-9]+)(\s*)(triệu_đồng|nghìn_đồng|nghìn)')
143
+ matches = pattern.finditer(text + " ")
144
+ old = []
145
+ new = []
146
+ for m in matches:
147
+ old.append(m.group())
148
+ new.append("_".join(m.group().split()))
149
+ for i in range(len(old)):
150
+ text = text.replace(old[i], new[i])
151
+
152
+ return text
153
+
154
+ def clean_text(text):
155
+ text = text.lower()
156
+ rp_dict = {"cty":"công ty", "\"":"", "'":"", "\n":" ", " k ":" không ", " h ":" giờ ", " ko ":" không ", " cf ":" cà phê ", " cofe ":" cà phê ", " coffee ":" cà phê ", " cofee ":" cà phê ", " cafe ":" cà phê ", " cafee ":" cà phê ",
157
+ " j ":" gì ", ".000":" nghìn", "vnd":" đồng", "vnđ":" đồng", " r ":" rồi ", " đc ":" được ", " dc ":" được ", " pv ":" phục vụ ", " pvu ":" phục vụ ", " pvụ ":" phục vụ ",
158
+ " nv ":" nhân viên ", " nvien ":" nhân viên ", " nviên ": " nhân viên ", " b ":" bạn ", " m ":" mình ", " ng ":" người ", " cx ":" cũng ", "oder":"order", "ita":"ít",
159
+ "vaie":"vải", "chie":"chỉ", "cb":"chuẩn bị", "nc":"nước", "khoog":"không", "bânh":"bánh", "lug":"lung", "nhiêm":"nhiên", "nguời":"người", "ntn":"như thế này", "nuớc":"nước",
160
+ "lẫu":"lẩu", "dẻ":"rẻ", "siu":"siêu", "ni":"này"}
161
+
162
+ for key, value in rp_dict.items():
163
+ text = text.replace(key, value)
164
+
165
+ text = re.sub('\n', '' , text)
166
+
167
+ return text
168
+
169
+ def normalize_format(text):
170
+ return unicodedata2.normalize('NFC', text)
171
+
172
+ def word_segment(text):
173
+ try:
174
+ text = word_tokenize(text, format='text')
175
+ except:
176
+ return "Lỗi"
177
+ return text