[Mecab] 영어 명사 추출

예전엔 영어 명사 분리가 잘 안되서 만들었던거 같은데, 지금은 기본 mecab으로도 잘 된다. 결과적으로 필요 없는 글이다.

아마 예전에 mecab을 잘못 설치하거나 이상하게 써서 안됐을지도…

 

dic.txt는 다운받아서 같은 경로에 두면 되며, 데이터는 http://www.114pda.com/language/dic-data/dic-ek-51873.htm에서 가져왔다.

정확도를 높이려면 사전을 추가하면 되는데, https://github.com/liks79/edic/tree/master/data에서 가져오면 될 듯 하다.

var mecab = require('mecab-ffi');
var fs = require('fs');

let tsvParser = (filePath) => {
    let data = fs.readFileSync(filePath, 'utf-8').split('\r\n');
    let result = {};
    for (let i = 0; i < data.length; i++) {
        if (!data[i]) break;
        let item = data[i].split(' /// ');

        if (!item[1] || item[1].length <= 0) {
            item[1] = '';
        }

        result[item[0]] = {eng: item[0], tag: item[1].match(/([A-Z].)/gim), kor: item[1]};
    }

    return result;
};

mecab.siyaParse = (string) => {
    result = mecab.parseSync(string);

    for (let i = 0; i < result.length; i++) {
        if (result[i][1] == 'SL') {
            if (data[result[i][0].toLowerCase()])
                result[i] = [result[i][0], data[result[i][0].toLowerCase()].tag, data[result[i][0].toLowerCase()].kor];
        }
    }

    return result;
}


var data = tsvParser('./dic.txt');

// Synchronously
result = mecab.siyaParse("It is test");
console.log(result);

 

댓글 남기기