일단 데이터에 대한 불규칙한 일치 지점, 혹은 불규칙한 불일치가 나타나는
소위 '비슷한' 데이터를 찾는것은 위에 말씀드린 패턴인식 기술을 사용하는 것이 옳은 것이라
생각됩니다.
하지만 더 구현하기 쉬운 것을 원하신다면 이런 방법은 어떨까요?
문장중에 특정 텍스트를 찾듯이
abcdefghijklmnopqrstuvwxyz
위의 스트링이 첫번째 음악파일의 데이터라고 가정하고
위의 일부분의 데이터와 비슷한 파일이 있을때, (예 : deffghhk <-f와 h가 두번 들어가는 엄밀히 말해 위
스트링의 일부가 아님)
char타입 문자의 아스키 코드 값으로 오차 +-2 한도 내에서는 일치한다고 인정 해주고,
일치하는 스트링을 찾는거죠.
또한 오차범위 외의 값을 가지는 데이터가 30%를 넘으면 일치하지 않는다는 규칙을 추가하면
어느정도 근접한 부분을 찾아낼 수 있겠죠.
이런 방식을 확장해보면, 비교할 데이터의 일부분을 샘플로 추출해서 일치 지점의 후보지 지점의 조합이
샘플 추출 지점의 순서와 앞뒤가 바뀌지 않을 수 있는 (같은 순서) 로 배열될 수 있다면,
두 데이터는 비슷할 여지가 있다. 라고 말해도 큰 무리는 아니겠지요.
여기에서 제약조건들을 추가해 나가시면 좀더 정확성을 높일 수 있을테고요.
하지만, 로컬 컴퓨터의 음악 파일은 수백 수천개 정도 됩니다.
저런 작업이 일일이 행해지기에는 엄청난 시간이 소요되겠지요.
하지만 한번에 특징공간을 구성하면, 그 이후의 비교작업은 명령하면 1초내에 답변이 나올 정도로 빠르며
매번 특징공간을 재편성 하지 않는 방법도 있고(정확성은 저하), 비교적 적은 작업으로 재편성 할 수 있는
방법도 있기 때문에, 어렵더라도 패턴인식 기술을 이용하는것이 효율적이라고 생각합니다.
(다른 악기로 연주된 동일곡이나, 리믹스 된 곡까지 찾는것도 기대할 수 있습니다.)
그보다 쉽게 작성하고, 성능도 '봐줄만 한' 방법이 있다면 논문을 써도 좋을것 같다는 생각이 듭니다.
ps. 덕분에 흥미로웠습니다. ㅎㅅㅎ
좋은하루 되세요. |