Showing
3 changed files
with
137 additions
and
0 deletions
Refine_String.js
0 → 100644
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.
-
Please register or login to post a comment