시끄러운 문자열 목록에서 표준 문자열 추출


10

나는 수천 개의 문자열 목록을 가지고 있으며 각 목록에는 약 10 개의 문자열이 있습니다. 주어진 목록에있는 대부분의 문자열은 매우 유사하지만 일부 문자열은 다른 문자열과 거의 관련이 없으며 일부 문자열에는 관련이없는 단어가 포함되어 있습니다. 그것들은 표준 문자열의 시끄러운 변형으로 간주 될 수 있습니다. 각 목록을이 표준 문자열로 변환하는 알고리즘이나 라이브러리를 찾고 있습니다.

다음은 그러한 목록 중 하나입니다.

  • 스타 워즈 : 에피소드 IV 새로운 희망 | StarWars.com
  • 스타 워즈 에피소드 IV-새로운 희망 (1977)
  • 스타 워즈 : 에피소드 IV-새로운 희망-썩은 토마토
  • 스타 워즈보기 : 에피소드 IV-새로운 희망 온라인 무료
  • 스타 워즈 (1977)-가장 위대한 영화
  • [REC] 4 포스터 선외 모터로 죽음을 약속하다-SciFiNow

이 목록의 경우 정규식과 일치하는 모든 문자열 ^Star Wars:? Episode IV (- )?A New Hope$이 허용됩니다.

나는 코스타의 머신 러닝에 관한 앤드류 응 (Andrew Ng)의 코스를 보았지만 비슷한 문제를 찾을 수 없었다.


2
추신 : 당신이 찾고있는 용어는 "정식"이라고 생각합니다
Sean Owen

정규식을 식별하고자하는 "가장 가능성이 높은"/ "가장 합의 된"문자열입니까? 아니면 목록의 문자열 중 하나입니까?
MrMeritology

@MrMeritology 나는 정규 표현식을 찾고 있지 않습니다. 나는 내가 올바른 것으로 생각하는 문자열의 종류에 얼마나 유연한 지 설명하기 위해 내 질문에 정규 표현식을 보여주었습니다.
lacton

확인. 그런 다음 아래 답변이 도움이 될 것입니다.
MrMeritology

이것이 NER (명명 된 엔티티 인식)에 해당됩니까?
hippietrail

답변:


4

순진한 솔루션으로 먼저 목록 내에서 가장 빈번한 토큰을 포함하는 문자열을 선택하는 것이 좋습니다. 이러한 방식으로 관련없는 문자열을 제거 할 수 있습니다.

두 번째 문구에서 나는 다수결을 할 것입니다. 3 문장을 가정 :

  • 스타 워즈 : 에피소드 IV 새로운 희망 | StarWars.com
  • 스타 워즈 에피소드 IV-새로운 희망 (1977)
  • 스타 워즈 : 에피소드 IV-새로운 희망-썩은 토마토

토큰을 하나씩 살펴 보겠습니다. 우리는 "스타"로 시작합니다. 모든 문자열로 시작하면 승리합니다. "전쟁"도 이길 것입니다. 다음은 ":"입니다. 또한 이길 것입니다.

모든 토큰은 "희망"까지 다수의 투표를 할 것입니다. "Hope"다음의 다음 토큰은 "|"또는 "("또는 "-"입니다. 다수 투표에서이기는 것은 없으므로 여기서 멈출 것입니다!

다른 해결책은 아마도 가장 긴 공통 하위 시퀀스 를 사용하는 것입니다 .

내가 말했듯이 나는 그것에 대해별로하지 않았습니다. 따라서 문제에 대한 더 나은 해결책이있을 수 있습니다 :-)


3

먼저 모든 문자열 쌍 사이의 편집 거리를 계산하십시오. 참조 http://en.wikipedia.org/wiki/Edit_distancehttp://web.stanford.edu/class/cs124/lec/med.pdf . 그런 다음 거리 임계 값을 기준으로 특이 치 문자열을 제외하십시오.

나머지 문자열을 사용하면 거리 행렬을 사용하여 가장 중앙 문자열을 식별 할 수 있습니다. 사용하는 방법에 따라 일부 데이터에 대해 모호한 결과가 나타날 수 있습니다. 모든 가능성에 완벽한 방법은 없습니다. 목적 상 모호성을 해결하기위한 휴리스틱 규칙 만 있으면됩니다. 즉, 둘 이상의 후보자를 선택합니다.

문자열 목록에서 "가장 중앙"을 선택하지 않고 모든 비 이상 값 문자열에 공통적 인 패턴을 캡처하는 정규식을 생성하려고 할 수 있습니다. 이를 수행하는 한 가지 방법은 모든 비 이상 값 문자열과 등거리 인 문자열을 합성하는 것입니다. 행렬에서 필요한 편집 거리를 계산 한 다음 해당 거리를 제약 조건으로 사용하여 규칙적으로 임의로 생성합니다. 그런 다음 후보 정규 표현식을 테스트하고 제약 조건에 맞는 첫 번째 표현식을 수락하고 비 이상 값 목록의 모든 문자열을 수락합니다. (와일드 카드 문자가 아니므로 가장 긴 공통 하위 문자열 목록에서 정규식을 작성하십시오.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.