주어진 문자열이 문자열 모음과 얼마나 유사한 지 확인


10

이 질문이 여기에 속하는지 잘 모르겠으며 그렇지 않은 경우 사과드립니다. 내가하고자하는 것은 주어진 끈이 끈으로 묶여 있는지 여부를 확률 적으로 결정할 수있는 프로그래밍 방식을 개발하는 것입니다. 예를 들어, 미국 도시 이름이 10,000 개이고 문자열 "필라델피아"가있는 경우 '필라델피아'가 내가 이미 알고있는 미국 도시 이름을 기반으로하는 미국 도시 이름 일 가능성을 정량적으로 측정하고 싶습니다. 이 상황에서 실제 도시 이름과 가짜 도시 이름을 분리 할 수는 없지만 최소한 "123.75"및 "빨간 여우가 게으른 갈색 개 위로 뛰어 올랐다"와 같은 문자열이있을 것으로 예상됩니다. 일부 임계 값.

시작하기 위해 Levenshtein Distance를 살펴보고 해결하려는 문제와 적어도 비슷한 문제에 어떻게 적용되는지 살펴 보았습니다. 내가 찾은 흥미로운 응용 중 하나는 표절 감지 였는데, 한 논문은 수정 된 Smith-Waterman 알고리즘으로 Levenshtein 거리를 사용하여 주어진 기본 논문의 표절 된 버전에 따라 논문의 점수를 매기는 방법을 설명합니다. 내 질문은 누군가 나를 도울 수있는 다른 확립 된 알고리즘이나 방법론으로 올바른 방향으로 나를 가리킬 수 있는지입니다. 나는 이것이 과거의 누군가가 해결하려고 시도한 문제 일 수 있다고 생각하지만 지금까지 내 Google fu가 실패했습니다.


긍정적이고 부정적인 예가 있다면 분류기를 훈련시킬 수 있습니다. 기능을 시작하려면 Yuval Filmus가 제안한 것과 같은 간단한 통계를 가져와보십시오.
Nick


도시 이름은 나쁜 예인 것 같습니다. 그들은 특히 미국에서 사방에 있습니다. 여기에서 테이블 조회가 가장 효과적인 방법 인 것 같습니다. 문제가 더 일반적인가요?
라파엘

답변:


5

생각하기에 더 좋은 통계는 단어 길이와 그램 분석입니다. 단어 길이의 경우 도시 이름의 단어 길이 분포에 대한 통계를 수집하여 얻은 단어의 길이와 비교할 수 있습니다. n- 그램 분석은 샘플 텍스트에서 n 문자 시퀀스의 분포를 확인 합니다 (예 : n = 2 ). 두 가지 접근 방식을 결합 할 수 있습니다.=2

휴리스틱을 고려하면 다른 텍스트보다 샘플 데이터에 대해 더 높은 점수를 얻을 가능성 을 사용할 수 있습니다 . 합리적인 임계 값을 결정하기 위해 교차 유효성 검사를 수행 할 수 있습니다. 도시 이름 이 아닌 샘플 문구 세트를 선택하십시오 . 도시 이름을 큰 (80 %) 부분과 작은 (20 %) 부분으로 나눕니다. 큰 부분에 대해 모델을 학습 (즉, 큰 부분에 대한 통계 수집) 한 다음 작은 부분과 나쁜 문구 샘플에서 모델을 평가하십시오. 대부분의 도시 이름을 통과하는 합리적인 임계 값이 있지만 나쁜 문구가 적은지 확인하십시오.


감사. 나는 n 그램을 살펴보기 시작했지만 완전히 오프베이스인지 알지 못했기 때문에 당신이 그것을 언급하게되어 기쁩니다. 단어 길이도 흥미롭고 내가 생각하지 못한 것입니다.
Andrew

이것에 문자 빈도를 추가하고 싶을 수도 있습니다. 특히, 그것은 모든 수 많은 것들을 제거해야합니다. 하나의 장점은 그러한 주파수가 다수의 통계 모델에서 훈련 / 인식 될 수있는 숫자의 벡터라는 것이다.
라파엘

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