48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
aSelect = set()
for sSimil in getSimil(sWord):
for sMorph in _dMorph.get(sSimil, []):
if re.search(sPattern, sMorph):
aSelect.add(sSimil)
return aSelect
def isSimilAs (sWord, sSimil):
"return True if <sWord> phonetically similar to <sSimil> (<sWord> tested with several casing)"
if not sWord:
return False
lSimils = getSimil(sSimil)
if not lSimils:
return False
if sWord in lSimils:
return True
if sWord[0:1].isupper():
if sWord.lower() in lSimils:
return True
if sWord.isupper() and sWord.capitalize() in lSimils:
return True
return False
|
<
<
|
|
<
<
<
|
|
|
|
|
>
>
>
>
>
>
>
|
>
>
|
>
|
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
aSelect = set()
for sSimil in getSimil(sWord):
for sMorph in _dMorph.get(sSimil, []):
if re.search(sPattern, sMorph):
aSelect.add(sSimil)
return aSelect
def _getSetNumber (sWord):
"return the set number where <sWord> belongs, else -1"
if sWord in _dWord:
return _dWord[sWord]
if sWord[0:1].isupper():
if sWord.lower() in _dWord:
return _dWord[sWord.lower()]
if sWord.isupper() and sWord.capitalize() in _dWord:
return _dWord[sWord.capitalize()]
return -1
def isSimilAs (sWord, sSimil):
"return True if <sWord> phonetically similar to <sSimil> (<sWord> tested with several casing)"
if not sWord or not sSimil:
return False
n = _getSetNumber(sWord)
if n == -1:
return False
return n == _getSetNumber(sSimil)
|