2014-11-04 6 views
4

다르게 포맷 된 파일 이름이 있다고 가정 해 봅시다. 나는 인간처럼 파일 이름에서 특정 측면을 추출 할 수 있기를 원한다. 패턴 인식.문자열의 지능형 패턴 일치

분명히 정규 표현식을 통해 나 자신을 무차별 적으로 다룰 수는 있지만 그게 내가하는 것이 아니다. 이제 나는이 4 개 문자열이 있다고 가정 해 봅시다 :

[MAS] Hayate no Gotoku!! 20 [BD 720p] [21D138F8].mkv 
[Leopard-Raws] Akatsuki no Yona - 05 RAW (MX 1280x720 x264 AAC).mp4 
[BLAST] Wolf Girl and Black Prince - 05 [720p] [C1252A5E].mkv 
[sage]_Mobile_Suit_Gundam_AGE_-_36_[720p][10bit][45C9E0D0].mkv 

당신이 모든 파일 이름들을 특정 패턴을 가지고 있지만 상당히 동일하지 않습니다 볼 수 있듯이. 그래서 은색 총알 정규식은 그것을 자르지 않을 것입니다. 대신이 문제를 해결하기 위해 ANN이나 다른 똑똑한 아이디어와 같은 전산 지식 기법을 살펴보고 싶습니다.

파일 이름을 추출하려고한다고 가정 해 봅시다.

Hayate no Gotoku!! 
Akatsuki no Yona 
Wolf Girl and Black Prince 
Mobile Suit Gundam AGE 

또는 에피소드 번호 : 20, 05, 05, 36 인간은 이러한 값을 반환합니다. 너 내가 갈 곳을 찾는다.

원하는 결과를 얻기 위해 어떤 유용한 기술이 유용할까요? 아니면 대학에서 연구 중이며 아직 해결 방법이없는 무언가입니까?

+0

레이블이 지정된 교육 세트가 있습니까? –

+0

@DrewNoakes 나는 훈련 세트를 만들 수 있었다. – Ortixx

답변

1

당신이 찾고있는 것은 grammar induction이라고 부르지 만 작동하지만 프로그램이 특정 문자열과 일치하지만 정규식 (또는 다른 유형의 패턴)을 찾습니다. 그러나 긍정적 인 예 (일치해야하는 문자열)와 부정적인 예 (일치 시켜서는 안되는 문자열)가 포함 된 훈련 세트라고하는 문자열을 직접 제공해야합니다.

재미있는 기술은 boosting이라고하며, 정확한 (부정적인 예제와는 일치하지 않지만) 몇 가지 긍정적 인 예와 일치하는 많은 간단한 패턴을 배웁니다. 그러나 함께 결합하면 많은 긍정적 인 예와 일치하게됩니다.

문자열을 일치시키는 대신 하위 문자열을 추출하려는 경우 파일 이름의 접두사를 사용하여 일치 시키려고합니다. 이 방법으로 하위 문자열이 시작되는 위치를 알 수 있습니다. 예를 들면 다음과 같습니다.

Positives: 
[MAS] 
[Leopard-Raws] 
[BLAST] 
[sage]_ 

Negatives: 
[MAS] H 
[Leopard-Raws] Akat 
[BL 
[sage]_Mobile_Suit_Gundam_AGE_ 

제대로 수행되면 파일 이름의 접두사에 사용할 수있는 정규 표현식을 얻어야합니다. 한 번에 한 글자 씩 접두어를 붙이면 관심 분야가 시작되는 곳을 알 수 있습니다. 이처럼 : 여기에 무슨 일이 있었 내가 배운 정규 표현식이 일치 때까지 한 번에 파일 이름 한 문자의 접두사를 증가하는 것이 무엇

[ False 
[s False 
[sa False 
[sag False 
[sage False 
[sage] True 
[sage]_ True 
[sage]_M False 

. 하지만 정규 표현식이 일치를 멈출 때까지 계속 전진하기 때문에 일치하는 가장 긴 접두사를 찾고 싶었습니다 (그렇지 않으면 [sage]가 허용되는 접두사이기 때문에 밑줄을 놓쳤을 것이기 때문에). 이 방법으로 나는 실제 내용이 시작되기 전에 접두어가 "[sage] _"라는 것을 알 것입니다. 원하는 내용이 포함 된 접두사를 사용하여 끝나는 부분을 일치시키는 작업을 수행 할 수도 있습니다.

정규 표현식 학습에 대해 자세히 알아 보려면 post을 참조하십시오. 자동 학습은 결코 완벽하지는 않지만 더 많은 예제를 사용할수록 정확해질 것입니다.