Rhyme_Kr.js
4.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
var start_sound = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'];
var middle_sound = ['ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ'];
var end_sound = ['', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'];
var chosung_value={'ㄱ':0 , 'ㄲ':0, 'ㄴ':1,'ㄷ':2, 'ㄸ':2 ,'ㄹ':3, 'ㅁ':4, 'ㅂ':5, 'ㅃ':5, 'ㅅ':6, 'ㅆ':6, 'ㅇ':7, 'ㅈ':8, 'ㅉ':8, 'ㅊ':8, 'ㅋ':0, 'ㅌ':2, 'ㅍ':5,'ㅎ':9};
var middle_value={'ㅏ':0, 'ㅐ':1, 'ㅑ':2,'ㅒ':1, 'ㅓ':3, 'ㅔ':1, 'ㅕ':4, 'ㅖ': 1, 'ㅗ':5, 'ㅘ':0, 'ㅙ':1, 'ㅚ':1,'ㅛ':6,'ㅜ':7,'ㅝ':3,'ㅞ':1,'ㅟ':10,'ㅠ':8,'ㅡ':9,'ㅢ':10,'ㅣ':10};
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};
var refine = require('./Refine_String');
//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>]";
var lyric_Encoding = function(lyric)
{
lyric = lyric.replace(/(^[ '\^\$\*#&]+)|([ '\^\$\*#&]+$)/g, '');
var r_lst = [];
var lyric_array = lyric.split("");
for (var i = 0; i < lyric_array.length;i++)
{
if ( '가' <= lyric_array[i] && '힣' >= lyric_array[i])
{
var ch1 = parseInt((lyric_array[i].charCodeAt(0) - '가'.charCodeAt(0)) / 588);
var ch2 = parseInt(((lyric_array[i].charCodeAt(0) - '가'.charCodeAt(0)) - 588*ch1) / 28);
var ch3 = (lyric_array[i].charCodeAt(0) - '가'.charCodeAt(0)) - 588*ch1 - 28*ch2;
r_lst.push([chosung_value[start_sound[ch1]], middle_value[middle_sound[ch2]], end_value[end_sound[ch3]]]);
}
else
{
r_lst.push(lyric_array[i]);
}
}
return r_lst;
};
var lyric_data = function(raw)
{
var source_data = [];
var raw_array = raw.split("\r\n");
for (var i = 0; i < raw_array.length;i++)
{
var dict_lst = [];
var temp = raw_array[i].split(" ");
for(var j = 0; j < temp.length;j++)
{
var word = lyric_Encoding(temp[j]);
var word_count = word.length;
dict_lst.push([word, temp[j],word_count]);
}
source_data.push(dict_lst);
var twoWord_lst = [];
for(var j = 0; j < temp.length-1;j++)
{
word = lyric_Encoding(temp[j] + temp[j+1]);
word_count = word.length;
twoWord_lst.push([word ,temp[i] + temp[i+1], word_count])
}
source_data.push(twoWord_lst);
}
var dictionaryData = [];
dictionaryData = dictionaryData.concat(source_data[0],source_data[1]);
return dictionaryData;
};
exports.rhyme_kr = function(sg, raw)
{
var dictData = lyric_data(raw);
var sgData = lyric_data(sg);
var r_lst = [];
for(var i = 0; i < dictData.length;i++)
{
if(dictData[i][2] == sgData[0][2])
{
var d = dictData[i][0];
var s = sgData[0][0];
var tr_count = 0;
for (var j = 0; j < sgData[0][2];j++)
{
var flag = [0,0,0];
for (var k =0; k < 3; k++)
{
if(d[j][k] == s[j][k])
flag[k] = 1;
}
var val = 0;
for (var l = 0; l < 3; l++)
{
if(flag[l] === 1)
val = val + 1;
}
if(val > 1)
tr_count = tr_count + 1;
}
if(sgData[0][2] < 4 && tr_count == sgData[0][2])
r_lst.push(dictData[i][1]);
else if (sgData[0][2] > 3 && tr_count > sgData[0][2]-2)
r_lst.push(dictData[i][1]);
}
}
const foo = new Set(r_lst);
return (foo);
};
/*
line = refine.refine_String_Last(line);
line = refine.refine_String(line);
console.log(line);
console.log(rhyme_kr("무지개",line));
*/