48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
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 isSimilAs (sWord, sSimil):
"return True if <sWord> phonetically similar to <sSimil> (<sWord> tested with several casing)"
if not sWord:
return False
def _getSetNumber (sWord):
"return the set number where <sWord> belongs, else -1"
lSimils = getSimil(sSimil)
if not lSimils:
return False
if sWord in lSimils:
return True
if sWord in _dWord:
return _dWord[sWord]
if sWord[0:1].isupper():
if sWord.lower() in lSimils:
return True
if sWord.isupper() and sWord.capitalize() in lSimils:
return True
return False
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)
|