3

네덜란드어 사용하는 사람들에게 "ij"라는 두 문자는 "y"로 쉽게 교환되는 단일 문자로 간주됩니다. 나는 "IJ"1 대신 2언어 별 특이 사항에 대한 Damerau-Levenshtein 거리

나 '의 현재 가치로 "Y"사이의 거리를 계산 Damerau–Levenshtein distance의 변형을하고 싶은 내가 일하고 있어요 프로젝트에 대한

나 자신을 시도했지만 실패했다. 내 문제는 두 텍스트의 길이가 다른 사실을 처리하는 방법에 대한 단서가 없다는 것입니다. 누구든지이 문제를 해결하는 방법에 대한 제안/코드 조각이 있습니까?

감사합니다.

+0

네가 네덜란드어를 음소로 변환 한 다음 거리를 쓴다면 어떻게 될까? – dnagirl

+0

AFAIK 그러면 "원래"두 텍스트에 비해 거리가 변경 될 수 있습니다. –

답변

2

위키 피 디아 문서는 전문 용어로 다소 느슨합니다. "자연어"에는 "문자열"같은 것이 없습니다. 글자와 문자 조합으로 표현할 수있는 자연어의 음소가 있습니다.

일부 문자 조합은 "gh"가 -f-와 같이 들리거나 전혀 소리가 나지 않는 현대 영어 "거친"에서와 같이 현대 시대까지 살아남은 역사적 관례의 흔적입니다. 원시 "문자열"에 초점을 맞추면 알고리즘은 언어와 정사각형 규칙의 역사적 관계에 대해 불가지론해야하며, 이는 문자 조합이 단일 음소와 관련이있을 때마다 임의의 메트릭을 유도합니다. "러프"에서 "루프"까지 어떻게 측정할까요? 또는 "through"에서 "thru"로? 또는 독일어 o- 움라우트가 "oe"입니까?

귀하의 경우, -y-는 음성 학적으로 그리고 정교하게 -ij-와 교환 할 수 있습니다. 그래서 알고리즘에 따라, 두 개의 삭제가 삽입에 이어 지거나, -j- 또는 -i-의 단일 삭제 다음에 -y-로 남은 문자의 전치가 뒤 따릅니다. 아니면 합쳐져서 합병이 뒤따른 것입니까?

알고리즘을 적용하기 전에 다른 사용되지 않은 다른 문자 (예 : U00EC, 라틴 소문자 i 및 악센트 부호 사용)를 사용하는 것이 좋습니다.

알고리즘이 멀티 코드 포인트 문자를 어떻게 처리합니까?

+0

다중 코드 포인트 문자는 Java 기반 ("char"형식 사용) 구현이므로 "equal"과 "equal equal"을 비교하기 때문에 잘 처리됩니다. –

+0

우리 팀이 약간의 수수께끼를 풀고 해결책을 찾았습니다. 가장 유용한 제안을 한 "답"으로 당신을 수여합니다. 감사. –

1

거리를 측정하는 방식 때문에 D-L 거리 자체가 당신을 위해 처리하지 않습니다.

여기에 관련된 코드 (또는 언어)가 없으므로 모든 문자열이 동일한 구조를 유지할 수 있도록 제안해야합니다.

는 전에 구문 분석 할 것 같은 일반적인 용어에 물어 이후 상황의 DL 거리가 문자 문자를 비교하고 실제로 자신에 문자열을 읽지 않는 것을 염두에

곰을 명확히하기 위해 ij가 y와 교환되어서는 안되는 경우가 다른 문제를 대신 일으키는 경우가 있기 때문에 비교해보십시오.

0

아이디어는 각 문자열을 "ij"및 영어 "gh" "th"와 같은 쌍성과 친구가 한 문자 만 구성된 일종의 작성된 정형 표현으로 변환하는 것입니다. 거리 측정법은 Damerau-Levenshtein을 수행 할 때 모든 유형의 재생에 대해 동일하지 않아도되므로 원하는 모든 처벌을 사용할 수 있지만 테이블을 로컬로 채워야하므로 실제적으로 각 사운드가 테이블의 한 셀이되기를 원합니다 .

그러나 "ij"가 "ij"가 아닌 철자 맞춤 또는 단어 세분화 경계 (네덜란드어로 표시 될 수 있는지 여부는 알 수 없음) 또는 기타 다른 상황에서이 경우 깨집니다. 실제로는 변증 법적 의미가 아닙니다.

그렇지 않으면 약간의 둘러보기가 필요합니다. 이는 상황을 복잡하게 만들지 만 알고리즘의 성장 순서를 변경해서는 안됩니다. (나는 믿습니다). 상수 요인은 여전히 ​​훨씬 더 커질 것입니다.

관련 문제