textAnalystic.js 1.63 KB
const apiRequest = require('./apiRequest');

/**
 * 수정중...
 * @param {String} result - 결과 담던거
 * @param {{NE : {}[], Morp : {}[]}} analysisResult 분석 결과가 담겼습니다.
 * @description morp를 처리하는 함수 입니다 ^^
 */
const divideMorp = async ( result, analysisResult ) => {
    let tempResult = {},
    tempMorps = [];

    analysisResult.NE.forEach( ( word ) => {
        analysisResult.morp.forEach( ( morp, index ) => {
            if( word.begin <= index && word.end >= index ) {
                morp.type = "NOG";
            }
        });
    });

    analysisResult.word.forEach( ( word ) => {
        tempMorps.push( analysisResult.morp.slice( word.begin, word.end + 1 ) );
    });
}

/**
 * @param {Object} clientData - 클라이언트에서 받아온 데이터 
 * @param {String} clientData.text - 분석할 텍스트
 * @returns {Object} 분석 결과 데이터
 * @description 클라이언트 데이터를 받아 의미를 분석하고 맞춤법을 교정해 돌려줍니다.
 */
const textAnalystic = async ( clientData ) => {
    let result = { "originalText" : clientData.text },
        fixedClientData,
        textAnalystic;

    fixedClientData = await apiRequest.Korean( result.originalText );

    result.korean = fixedClientData;
    result.fixedText = result.korean.notag_html;
    try {
        textAnalystic = await apiRequest.ETRI( "WiseNLU", { "analysis_code" : "ner", "text" : result.fixedText } );
    }
    catch( err ) {
        throw new Error( err.message );
    }

    await divideMorp( result, textAnalystic.return_object.sentence[ 0 ] );
    return result;
}

module.exports = textAnalystic;