Spaces:
Runtime error
Runtime error
import os | |
import re | |
import json | |
import string | |
import emoji | |
import pandas as pd | |
def normalize_money(sent): | |
return re.sub(r'\\d+((,|.)\\d)?[k|m|b](/)?', 'giá ', sent) | |
def normalize_time(sent): | |
return re.sub(r'\\d+(\\s)?(h|giờ)(\\s)?(\\d+)?', 'giờ ', sent) | |
def normalize_hastag(sent): | |
return re.sub(r'#+\\w+', 'tag', sent) | |
def normalize_HTML(text): | |
return re.sub(r'<[^>]*>', '', text) | |
def normalize_website(sent): | |
result = re.sub(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', 'website', sent) | |
return re.sub(r'\\w+(\\.(com|vn|me))+((\\/+([\\.\\w\\_\\-]+)?)+)?', 'website', result) | |
def normalize_emoji(sent): | |
return emoji.demojize(sent) | |
def normalize_elongate(sent): | |
patern = r'(.)\\1{1,}' | |
result = sent | |
while(re.search(patern, result) != None): | |
repeat_char = re.search(patern, result) | |
result = result.replace(repeat_char[0], repeat_char[1]) | |
return result | |
def remove_number(sent): | |
return re.sub(r'[0-9]+', '', sent) | |
def remove_punct(text): | |
''' | |
This function replaces punctuations in texts for easier handling | |
''' | |
text = text.replace(";", ",").replace("“", " ").replace("”", " ") | |
text = "".join( | |
[ | |
c | |
if c.isalpha() or c.isdigit() or c in [",","."] | |
else " " | |
for c in text | |
] | |
) | |
text = " ".join(text.split()) | |
return text | |
def normalize_acronyms(sent): | |
text = sent | |
replace_list = { | |
'ô kêi': ' ok ', 'okie': ' ok ', ' o kê ': ' ok ', 'okey': ' ok ', 'ôkê': ' ok ', | |
'oki': ' ok ', ' oke ': ' ok ',' okay':' ok ','okê':' ok ',' tks ': u' cám ơn ', | |
'thks': u' cám ơn ', 'thanks': u' cám ơn ', 'ths': u' cám ơn ', 'thank': u' cám ơn ', | |
'^_^': 'tích cực', ':)': 'tích cực', ':(': 'tiêu cực', '❤️': 'tích cực', '👍': 'tích cực', | |
'🎉': 'tích cực', '😀': 'tích cực', '😍': 'tích cực', '😂': 'tích cực', '🤗': 'tích cực', | |
'😙': 'tích cực', '🙂': 'tích cực', '😔': 'tiêu cực', '😓': 'tiêu cực', '⭐': 'star', | |
'*': 'star', '🌟': 'star','kg ': u' không ','not': u' không ', u' kg ': u' không ', | |
'"k ': u' không ',' kh ':u' không ','kô':u' không ','hok':u' không ',' kp ': u' không phải ', | |
u' kô ': u' không ', '"ko ': u' không ', u' ko ': u' không ', u' k ': u' không ', | |
'khong': u' không ', u' hok ': u' không ','he he': ' tích cực ','hehe': ' tích cực ', | |
'hihi': ' tích cực ', 'haha': ' tích cực ', 'hjhj': ' tích cực ',' lol ': ' tiêu cực ', | |
' cc ': ' tiêu cực ','cute': u' dễ thương ','huhu': ' tiêu cực ', ' vs ': u' với ', 'wa': ' quá ', 'wá': u' quá', 'j': u' gì ', '“': ' ', | |
' sz ': u' cỡ ', 'size': u' cỡ ', u' đx ': u' được ', 'dk': u' được ', 'dc': u' được ', 'đk': u' được ', | |
'đc': u' được ','authentic': u' chuẩn chính hãng ',u' aut ': u' chuẩn chính hãng ', u' auth ': u' chuẩn chính hãng ', 'thick': u' tích cực ', 'store': u' cửa hàng ', | |
'shop': u' cửa hàng ', 'sp': u' sản phẩm ', 'gud': u' tốt ','god': u' tốt ','wel done':' tốt ', 'good': u' tốt ', 'gút': u' tốt ', | |
'sấu': u' xấu ','gut': u' tốt ', u' tot ': u' tốt ', u' nice ': u' tốt ', 'perfect': 'rất tốt', 'bt': u' bình thường ', | |
'time': u' thời gian ', 'qá': u' quá ', u' ship ': u' giao hàng ', u' m ': u' mình ', u' mik ': u' mình ', | |
'ể': 'ể', 'product': 'sản phẩm', 'quality': 'chất lượng','chat':' chất ', 'excelent': 'hoàn hảo', 'bad': 'tệ','fresh': ' tươi ','sad': ' tệ ', | |
'date': u' hạn sử dụng ', 'hsd': u' hạn sử dụng ','quickly': u' nhanh ', 'quick': u' nhanh ','fast': u' nhanh ','delivery': u' giao hàng ',u' síp ': u' giao hàng ', | |
'beautiful': u' đẹp tuyệt vời ', u' tl ': u' trả lời ', u' r ': u' rồi ', u' shopE ': u' cửa hàng ',u' order ': u' đặt hàng ', | |
'chất lg': u' chất lượng ',u' sd ': u' sử dụng ',u' dt ': u' điện thoại ',u' nt ': u' nhắn tin ',u' tl ': u' trả lời ',u' sài ': u' xài ',u'bjo':u' bao giờ ', | |
'thik': u' thích ',u' sop ': u' cửa hàng ', ' fb ': ' facebook ', ' face ': ' facebook ', ' very ': u' rất ',u'quả ng ':u' quảng ', | |
'dep': u' đẹp ',u' xau ': u' xấu ','delicious': u' ngon ', u'hàg': u' hàng ', u'qủa': u' quả ', | |
'iu': u' yêu ','fake': u' giả mạo ', 'trl': 'trả lời', '><': u' tích cực ', " view ": " tầm nhìn ", | |
' por ': u' tệ ',' poor ': u' tệ ', 'ib':u' nhắn tin ', 'rep':u' trả lời ',u'fback':' feedback ','fedback':' feedback ' | |
} | |
for k, v in replace_list.items(): | |
text = text.replace(k, v) | |
return text | |
def normalize(sent): | |
result = normalize_hastag(sent) | |
result = normalize_website(result) | |
result = normalize_HTML(result) | |
result = normalize_acronyms(result) | |
result = normalize_emoji(result) | |
result = result.lower() | |
result = normalize_time(result) | |
result = normalize_money(result) | |
result = normalize_elongate(result) | |
result = normalize_acronyms(result) | |
result = remove_number(result) | |
result = remove_punct(result) | |
result = result.replace(",.", ".") | |
result = re.sub(r'\\s+', ' ', result).strip() # Remove extra whitespace | |
return result | |
def tokenize(sent, f): | |
return f(sent) | |