DMKael

add Rhyme_Kr.js & Refine_String.js

1 +exports.refine_String = function(readData)
2 +{
3 + var text;
4 + text = readData.replace(/[0-9]/g,"");
5 + text = text.replace(/[一-龥]/g,"");
6 + text = text.replace(/[\[]+[ㄱ-힣A-z一-龥0-9]+[\]]/g,"");
7 + text = text.replace(/[\[]+[절 羅]+[\]]/g,"");
8 + return text;
9 +};
10 +
11 +exports.refine_String_Last = function(readData)
12 +{
13 + var text;
14 + text = readData.replace(/[^ㄱ-힣 ]/g,"");
15 + return text;
16 +};
17 +
18 +exports.refine_String_for_Okt = function(readData)
19 +{
20 + var text;
21 + text = readData.replace(/[br]/g,"");
22 + text = text.replace(/[\W]/g,"");
23 + text = text.replace(/[A-z]/g,"");
24 + return text;
25 +};
1 +var start_sound = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'];
2 +var middle_sound = ['ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ'];
3 +var end_sound = ['', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'];
4 +
5 +var chosung_value={'ㄱ':0 , 'ㄲ':0, 'ㄴ':1,'ㄷ':2, 'ㄸ':2 ,'ㄹ':3, 'ㅁ':4, 'ㅂ':5, 'ㅃ':5, 'ㅅ':6, 'ㅆ':6, 'ㅇ':7, 'ㅈ':8, 'ㅉ':8, 'ㅊ':8, 'ㅋ':0, 'ㅌ':2, 'ㅍ':5,'ㅎ':9};
6 +var middle_value={'ㅏ':0, 'ㅐ':1, 'ㅑ':2,'ㅒ':1, 'ㅓ':3, 'ㅔ':1, 'ㅕ':4, 'ㅖ': 1, 'ㅗ':5, 'ㅘ':0, 'ㅙ':1, 'ㅚ':1,'ㅛ':6,'ㅜ':7,'ㅝ':3,'ㅞ':1,'ㅟ':10,'ㅠ':8,'ㅡ':9,'ㅢ':10,'ㅣ':10};
7 +var end_value={'':0, 'ㄱ':1, 'ㄲ':1, 'ㄳ':1, 'ㅋ':1, 'ㄴ':2, 'ㄵ':2, 'ㄶ':2, 'ㄷ':3, 'ㅌ':3, 'ㅅ':3, 'ㅆ':3, 'ㅈ':3, 'ㅊ':3, 'ㅌ':3, 'ㅎ':3, 'ㄹ':4, 'ㄺ':4, 'ㄽ':4, 'ㄾ':4, 'ㅀ':4, 'ㅁ':5, 'ㄻ':5, 'ㅂ':6,'ㅍ':6, 'ㄼ':6, 'ㄿ':6, 'ㅄ':6, "ㅇ":7};
8 +
9 +var refine = require('./Refine_String');
10 +//var line = "[<div class=\"lyricsCont\">이 밤 그날의 구지가 우지개 수자가 반딧불을 <br/>당신의 창 가까이 보낼게요<br/>음 사랑한다는 말 이에요<br/><br/>나 우리의 첫 입맞춤을 떠올려<br/>그럼 언제든 눈을 감고 <br/>음 가장 먼 곳으로 가요<br/><br/>난 파도가 머물던 모래 위에 적힌 글씨처럼<br/>그대가 멀리 사라져 버릴 것 같아 <br/>늘 그리워 그리워<br/><br/>여기 내 마음속에 <br/>모든 말을 다 꺼내어 줄 순 없지만<br/>사랑한다는 말 이에요<br/><br/>어떻게 나에게 그대란 행운이 온 걸까<br/>지금 우리 함께 있다면 아 얼마나 좋을까요<br/><br/>난 파도가 머물던 모래 위에 적힌 글씨처럼<br/>그대가 멀리 사라져 버릴 것 같아<br/>또 그리워 더 그리워<br/><br/>나의 일기장 안에<br/>모든 말을 다 꺼내어 줄 순 없지만<br/>사랑한다는 말<br/><br/>이 밤 그날의 반딧불을 당신의<br/>창 가까이 띄울게요<br/>음 좋은 꿈 이길 바라요</div>]";
11 +
12 +var lyric_Encoding = function(lyric)
13 +{
14 + lyric = lyric.replace(/(^[ '\^\$\*#&]+)|([ '\^\$\*#&]+$)/g, '');
15 +
16 + var r_lst = [];
17 + var lyric_array = lyric.split("");
18 + for (var i = 0; i < lyric_array.length;i++)
19 + {
20 + if ( '가' <= lyric_array[i] && '힣' >= lyric_array[i])
21 + {
22 + var ch1 = parseInt((lyric_array[i].charCodeAt(0) - '가'.charCodeAt(0)) / 588);
23 + var ch2 = parseInt(((lyric_array[i].charCodeAt(0) - '가'.charCodeAt(0)) - 588*ch1) / 28);
24 + var ch3 = (lyric_array[i].charCodeAt(0) - '가'.charCodeAt(0)) - 588*ch1 - 28*ch2;
25 + r_lst.push([chosung_value[start_sound[ch1]], middle_value[middle_sound[ch2]], end_value[end_sound[ch3]]]);
26 + }
27 + else
28 + {
29 + r_lst.push(lyric_array[i]);
30 + }
31 + }
32 + return r_lst;
33 +};
34 +
35 +var lyric_data = function(raw)
36 +{
37 + var source_data = [];
38 + var raw_array = raw.split("\r\n");
39 + for (var i = 0; i < raw_array.length;i++)
40 + {
41 + var dict_lst = [];
42 + var temp = raw_array[i].split(" ");
43 + for(var j = 0; j < temp.length;j++)
44 + {
45 + var word = lyric_Encoding(temp[j]);
46 + var word_count = word.length;
47 + dict_lst.push([word, temp[j],word_count]);
48 + }
49 + source_data.push(dict_lst);
50 + var twoWord_lst = [];
51 + for(var j = 0; j < temp.length-1;j++)
52 + {
53 + word = lyric_Encoding(temp[j] + temp[j+1]);
54 + word_count = word.length;
55 + twoWord_lst.push([word ,temp[i] + temp[i+1], word_count])
56 + }
57 + source_data.push(twoWord_lst);
58 + }
59 + var dictionaryData = [];
60 + dictionaryData = dictionaryData.concat(source_data[0],source_data[1]);
61 + return dictionaryData;
62 +};
63 +
64 +
65 +exports.rhyme_kr = function(sg, raw)
66 +{
67 + var dictData = lyric_data(raw);
68 + var sgData = lyric_data(sg);
69 + var r_lst = [];
70 +
71 +
72 + for(var i = 0; i < dictData.length;i++)
73 + {
74 + if(dictData[i][2] == sgData[0][2])
75 + {
76 + var d = dictData[i][0];
77 + var s = sgData[0][0];
78 + var tr_count = 0;
79 +
80 + for (var j = 0; j < sgData[0][2];j++)
81 + {
82 + var flag = [0,0,0];
83 + for (var k =0; k < 3; k++)
84 + {
85 + if(d[j][k] == s[j][k])
86 + flag[k] = 1;
87 + }
88 + var val = 0;
89 + for (var l = 0; l < 3; l++)
90 + {
91 + if(flag[l] === 1)
92 + val = val + 1;
93 + }
94 + if(val > 1)
95 + tr_count = tr_count + 1;
96 + }
97 + if(sgData[0][2] < 4 && tr_count == sgData[0][2])
98 + r_lst.push(dictData[i][1]);
99 + else if (sgData[0][2] > 3 && tr_count > sgData[0][2]-2)
100 + r_lst.push(dictData[i][1]);
101 + }
102 + }
103 + return (r_lst)
104 +};
105 +
106 +/*
107 +line = refine.refine_String_Last(line);
108 +line = refine.refine_String(line);
109 +//console.log(line);
110 +
111 +console.log(rhyme_kr("무지개",line));
112 +*/
......
This diff could not be displayed because it is too large.