calcDistance.js 1.49 KB

const e = require('express');
const levenshtein = require('js-levenshtein');
const db = require('../model/db');
const {calcDistance} = require('../service/calcDistance');
const {getProfanity} = require('../service/query');
const {standardize, removeSpecial} = require('../service/standardization');
const Hangul = require('hangul-js');

exports.calcDistance = async (req, res, next) => {
    const { word } = req.body;
  
    const profanityList = await getProfanity();

    let rare = word;
    let specialRemoved = removeSpecial(word);
    let specialRemovedRare = specialRemoved;
    let specialNotRemoved = word;

    rare = Hangul.disassemble(rare);
    rare = rare.join('');
    
    specialRemovedRare = Hangul.disassemble(specialRemovedRare);
    specialRemovedRare = specialRemovedRare.join('');

    specialRemoved = standardize(specialRemoved);
    specialNotRemoved = standardize(specialNotRemoved);

    const rareResult = calcDistance(rare, profanityList);
    const specialRemovedRareResult = calcDistance(specialRemovedRare, profanityList);
    const specialRemovedResult = calcDistance(specialRemoved, profanityList);
    const specialNotRemovedResult = calcDistance(specialNotRemoved, profanityList);

    const minResult = Math.min(rareResult, specialRemovedRareResult, specialRemovedResult, specialNotRemovedResult);

    if (minResult <= 1){
        res.status(200).json({success : true, isProfanity : "욕설"});
    }else{
        res.status(200).json({success : true, isProfanity : "정상"});
    }
  };