وب سرویس نرمالساز (Normalizer)

سرویس: نرمال ساز فارسی | Normalizer

تعریف مسئله

هدف از ترمالساری، حذف کاراکتر های اضافه و یکسان سازی کاراکتر های است که شکل یکسان ولی کد asci متفاوت دارند می باشد

چگونه کار میکند

هدف این سرویس، نرمالسازی متن ورودی است

الگوریتم

یکسان سازی کاراکتر های موجود در متن و حذف کاراکتر های اضافی به عنوان یک مرحله پیش پردازش در نظر گرفته می شود و خروجی آن می تواند در پردازش های بعدی ای که روی متن اعمال می گردد مورد استفاده قرار گیرد. منظور از نرمالسازی متن یکسان سازی کاراکتر های موجود در متن می باشد بدین معنی که کاراکتر هایی که مشابه هستند ولی کد asci آنها متفاوت است به یک فرم تبدیل می شوند مانند دو کاراکتر "آ" و "ا" . از دیگر تغییراتی که در این سرویس روی متن اعمال می شود حذف ایموجی های موجود در متن و همچنین حذف تگ های html موجود در متن می باشد. بنابراین این سرویس پیش پردازش های زیر را روی متن انجام می دهد: • یکسان سازی کاراکتر هایی که مشابه هستند ولی کد asci متفاوت دارند • حذف ایموجی های موجود در متن • حذف تگ های html

کاربرد سرویس

به طور کلی نرمالسازی یکی از پایه ای ترین پیش پردازش هایی است که روی متن انجام می شود و می توان از خروجی آن در پروژه های دیگر استفاده کرد. در ادامه نمونه ای از کاربرد های نرمالساز آورده شده است: • یکسان سازی متن برای سرچ کردن در موتور جست و جو

نحوه استفاده

این سرویس مجموعه ای از متن های ورودی را در قالب یک آرایه از جیسون ها دریافت می کند که هر عنصر آن یک متن می باشد. پس از نرمالسازی خروجی به صورت یک آرایه برگردانده می شود.

ورودی API

همانطور که دیده می شود ورودی شامل دو متن مجزا می باشد و در خروجی متن نرمال شده متناظر با هر متن ورودی دیده می شود. مثال زیر ورودی API در قالب یک JSON Array برای دو جمله " در دِیتاک محصولی ارائه مي دهیم که مي‌ تواند به تصمیم‌گیری‌ ها کمک کند"و "مشکلات شناسایی مي‌ شوند تا کیفیت محصول و عملکرد مشتري را بهبود و ارتقاء باید" را نمایش می دهد. [ "در دِیتاک محصولی ارائه مي دهیم که مي‌ تواند به تصمیم‌گیری‌ ها کمک کند", "مشکلات شناسایی مي‌ شوند تا کیفیت محصول و عملکرد مشتري را بهبود و ارتقاء باید"]

خروجی API

خروجی این API به صورت JSON Array است که به ازای هر متن ورودی، متن نرمال شده آن به صورت مجزا مشخص شده است. [ "در دیتاک محصولی ارایه می دهیم که می تواند به تصمیم گیری ها کمک کند", "مشکلات شناسایی می شوند تا کیفیت محصول و عملکرد مشتری را بهبود و ارتقا باید" ]

نمونه کد PHP

                                        $ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://sakoo.dataak.com/api/services/nlp/persian_normalizer");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
 $data = [
     'text'=>'روحیه تیمی در دیتاک از نان شب هم واجب‌تر است و افرادی که توانایی کار تیمی ندارند در کنار ما آرامش خود را از دست خواهند داد',
     'token'=> 'token'
 ];          
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 $server_output = curl_exec($ch);
 print_r($server_output);
                                    

نمونه کد java

                                        import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

    public class MTest {

        public static void main(String[] args) throws Exception{
            URL url = new URL("https://sakoo.dataak.com/api/services/nlp/persian_normalizer");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            Map<String, String> parameters = new HashMap<>();
            con.setDoOutput(true);
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            con.setConnectTimeout(5000);
            con.setReadTimeout(5000);
            con.setInstanceFollowRedirects(false);
            
            String token="token";
            token=java.net.URLEncoder.encode(token, "UTF-8").replace("+","%20");
            
            String urlParameters  = "text=کمیته انضباطی، نفت را نقره داغ کرد&token="+token;
            try(OutputStream os = con.getOutputStream()) {
                byte[] input = urlParameters.getBytes("utf-8");
                os.write(input, 0, input.length);
            }
            
            DataOutputStream out = new DataOutputStream(con.getOutputStream());
            out.flush();
            out.close();

            int status = con.getResponseCode();
            String s=con.getResponseMessage();
            Reader streamReader = null;
            
            if (status > 299) {
               
                streamReader = new InputStreamReader(con.getErrorStream());
            } else {
                streamReader = new InputStreamReader(con.getInputStream());

                BufferedReader in = new BufferedReader(
                        new InputStreamReader(con.getInputStream()));
                String inputLine;
                StringBuffer content = new StringBuffer();
                while ((inputLine = in.readLine()) != null) {
                    content.append(inputLine);
                }
                in.close();
                
                System.out.println(content);
            }
            con.disconnect();
        }
    }
                                    

نمونه کد python

                                        import requests
url = 'https://sakoo.dataak.com/api/services/nlp/persian_normalizer'
data = {
    'text': 'هرجا که داده‌اي وجود دارد، دِیتاک برای سامان بخشیدن و تبدیل آن به دانش آماده است. دِیتاک شرکتي دانش بنیان و تخصصي درحوزهً داده کاوي (Data Mining) و کلان داده (Big Data) است.',
    'token': 'token'
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3'}
response = requests.post(url, data=data, headers=headers)

print(response.text)