2009-04-28 3 views
10

다른 언어를 찾으려면이 단어를 올바르게 입력하고 싶습니다.문자열을 결정하는 방법

두 개의 텍스트를 비교해야합니다. 두 개의 문자열이 비슷하다면 문자열이 매우 다르면 점수가 매우 달라야 매우 득점을 얻고 싶습니다.

이메일의 md5 해시를 가져 와서 한 문자를 변경하면 해시가 크게 변경되어 너무 많이 변경되지 않도록하고 싶습니다. 두 가지 내용이 문자열을 저장하지 않고 어떻게 비슷한 지 비교할 필요가 있습니다.

업데이트 : 저는 사람들이 제공 한 다양한 링크의 아이디어를 결합 해 보려고합니다. 이상적으로는 내 입력을 항상 비교할 수 있도록 참조 문자열을 사용하고 있으므로 내 점수를 작성하는 단일 입력 기능을 좋아할 것입니다. 나는 또한 asci 캐릭터를 데리고 이것들을 요약 해보고있다. 아직 제공된 모든 링크를 읽는 중입니다.

+0

"점수"는 무엇을 의미합니까? 당신은 문자열이 서로 얼마나 가까운 지 순위를 얻고 싶습니까? 그러나 세 번째 단락은 작은 변경 사항에 강력한 해시 유사 값을 찾고있는 것처럼 들립니다 ("강력한 해시"는 종종 문자열 이외의 오디오 및 이미지에 사용되는 이러한 도구의 용어입니다). – SPWorley

답변

1

두 개의 텍스트를 비교해야합니다. 두 개의 문자열이 비슷하다면 문자열이 매우 다르면 점수가 매우 달라야 매우 득점을 얻고 싶습니다.

정말 "동일"또는 "다른"의 의미에 따라 다릅니다. 예를 들어, 누군가가 "미국"을 문자열에서 "미국"으로 바꾼 경우 그 문자는 대부분 같은 문자열 (미국은 더 긴 문자의 약어이기 때문에)이거나 문자가 많이 변경 되었기 때문에 매우 다릅니다)?

"동일성"을 계산하는 방법을 설명하거나 기존 정의를 사용하는 기능을 개발해야합니다. 예를 들어, 앞에서 설명한 Levenshtein distance은 원래 문자열로 이동하기 위해 변경해야하는 횟수를 기준으로 총 차이를 측정합니다.

+0

감사합니다 John for 내 목적은 미국과 미국은 차이가 있습니다. –

1

Levenshtein 거리에는 값을 생성하기 위해 두 입력 문자열이 모두 필요하므로 모든 문자열을 저장해야합니다.

그러나 적은 수의 문자열을 마커로 사용하고 문자열로만 저장할 수 있습니다.

그런 다음 새 문자열에서 각 마커 문자열까지의 거리를 계산하여이 값을 저장합니다. 그런 다음 모든 마커와 유사한 Levenshtein 거리를 가진 두 개의 문자열도 서로 비슷하다는 것을 알 수 있습니다. 상호 Levenshtein 거리가 가능한 한 길어 지도록 이러한 마커를 "엔지니어링"하는 것이 현명 할 것입니다. 이 방향으로 어떤 연구가 있었는지 나는 알지 못합니다.

1

많은 사람들이 접근법과 같은 거리/미터법을 살펴 보라고 제안했으며, 나는 그 질문의 말씨가 그렇게 생각한다고 생각합니다. (그런데, md5와 같은 해시는 메트릭이하는 것과 반대되는 일을 거의 시도하기 때문에이 방법이 효과가 없다는 것은 거의 놀라운 일이 아닙니다.작은 델타에서 많이 변하지 않는 유사한 아이디어가 있지만, 당신이하고 싶은 것에 대한 충분한 정보를 인코딩하지 않는다고 생각합니다.)

특히 의견에 당신의 업데이트가 주어진다면, 나는 이런 유형의 접근법을 생각합니다. 별로 도움이되지 않습니다.

찾고있는 것은 더 많은 클러스터링 문제입니다. 여기서 각 이메일에서 서명 (예 : 기능 벡터)을 생성 한 다음 나중에 새로운 입력과 비교하려고합니다. 그래서 본질적으로 기계 학습 문제입니다. "가까운"것이 무엇을 의미하는지 결정하는 것은 약간의 어려움 일 수 있습니다. 시작하기 위해 실제로 당신이보고있는 이메일이 많은 스팸 필터에 의해 수행 된 일종의 기능 생성을 살펴 보는 것이 좋다고 가정 할 때, 이것은 아마도 (아마도 유클리드, 시작하기에 충분할) 공간을 제공 할 것입니다. 서명 (특징 벡터)을 기준으로 거리를 측정합니다.

문제에 대해 자세히 알지 못하면 더 구체적으로 설명하기가 어렵습니다.

6

실제로 많은 단어가 들어있는 전체 문서를 비교하려는 사용자의 의견을 읽은 것 같습니다.

이것은 정보 검색 시스템에서 treating documents as N-dimensional points in space에 의해 성공적으로 수행됩니다. 언어의 각 단어는 축입니다. 축을 따른 거리는 단어가 문서에 나타나는 횟수로 결정됩니다. 비슷한 문서가 공간에서 서로 "가까이"있습니다.

이렇게하면 전체 문서를 저장할 필요가 없으며 단어 수만 계산됩니다. 그리고 일반적으로 언어에서 가장 일반적인 단어는 전혀 계산되지 않습니다.

+0

감사합니다. erickson 매우 재미있는 독서 –

관련 문제