두 본문의“관련성”을 찾는 좋은 방법은 무엇입니까?
-
20-09-2019 - |
문제
여기에 문제가 있습니다. 몇 단어에서 몇 단어에서 몇 문장에 이르기까지 수천 개의 작은 텍스트 스 니펫이 있습니다. 가장 큰 스 니펫은 디스크의 약 2k입니다. 각각과 비교하고 사용자 관련 정보를 표시 할 수 있도록 관련성 요소를 계산할 수 있기를 원합니다.
이것을하는 좋은 방법은 무엇입니까? 이 작업을 수행하는 것으로 알려진 알고리즘이 있습니까?
모든 것을 미리 계산할 수 있으므로 실시간으로 실행할 필요가 없습니다. 런타임보다 좋은 결과를 얻는 것이 더 우려됩니다.
방금 가서 내 자신의 것을 쓰기 전에 스택 오버플로 커뮤니티에 물어볼 것이라고 생각했습니다. 이전에 좋은 해결책을 찾은 사람들이 있어야합니다.
다른 팁
나는 그것을 사용한 적이 없지만 당신은 조사하고 싶을 것입니다 Levenshtein 거리
Jeff는 POD 캐스트에서 이와 같은 것에 대해 이야기하여 오른쪽에 나열된 관련 질문을 찾았습니다. (팟 캐스트 32에서)
하나의 큰 팁은 모든 것을 제거하는 것이 었습니다 일반적인 단어, "" ""및 ""this "등을 비교할 수있는 더 의미있는 단어가 남게됩니다.
그리고 여기에 비슷한 질문이 있습니다 두 문구의 의미 론적 유사성을 알려주는 알고리즘이 있습니까?
이것은 합리적인 큰 텍스트를 위해서는 매우 가능하지만 작은 텍스트에는 더 어렵습니다.
한 번 이렇게했는데 꽤 잘 작동했습니다.
- 모든 "일반"단어를 필터링합니다 (A, A, A, The, In 등 ...) (단어의 약 10-30%를 필터링)
- 나머지 단어의 빈도를 계산하고 가장 빈번한 단어의 상단 X를 저장하십시오. 이들은 주제입니다.
- 추가 단계로 2/3/4 후속 단어 그룹을 만들어 다른 텍스트의 그룹과 비교할 수 있습니다. 나는 그것을 Plagerism의 척도로 사용했습니다.
음성 알고리즘
기사, Soundex 너머 - MS SQL Server에서 퍼지 검색 기능, 설치 및 사용 방법을 보여줍니다 심해 SQL 서버로의 라이브러리. 이 라이브러리를 사용하면 문자열간에 상대적인 유사성을 찾을 수 있으며 수많은 알고리즘이 포함되어 있습니다.
나는 주로 사용하게되었습니다 Jaro Winkler 이름에 맞습니다. 다음은 SO에서 일치하는 이름에 대해 물었던 자세한 내용입니다. 사람 이름을 기준으로 일치하는 레코드
그 기반의 몇 가지 알고리즘 Levenshtein 거리 SIMMetric 라이브러리에서도 제공되며 응용 프로그램에 유용 할 것입니다.