From a2ac640ebb414f165fb71ab7843b5864a720c84a Mon Sep 17 00:00:00 2001 From: Aleksandr Karasev Date: Tue, 22 Dec 2015 10:47:55 +0300 Subject: [PATCH] fix absorptions --- ta4/__init__.py | 4 +++- tests/test_absorptions.py | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ta4/__init__.py b/ta4/__init__.py index c83c21b..59ad717 100644 --- a/ta4/__init__.py +++ b/ta4/__init__.py @@ -157,7 +157,6 @@ def get_whole_markers(words): def absorptions(phrases): u""" Поглощения фраз - Каждая фраза должна на вход список фраз/вхождений - [("one phrase", 10), ("phrase", 2)] """ phrases = [(Sentence(phrase), count) for phrase, count in phrases] @@ -167,6 +166,9 @@ def absorptions(phrases): for i, (phrase, count) in enumerate(phrases): for j in range(i+1, len(phrases)): (candidate, cand_count) = phrases[j] + # Поглащаются фразы со *, только при одинаковой длинне + if phrase.is_special and len(phrase) != len(candidate): + continue if is_contains(candidate, phrase): count -= 1 results.append((phrase, count)) diff --git a/tests/test_absorptions.py b/tests/test_absorptions.py index e09781d..e1ae598 100644 --- a/tests/test_absorptions.py +++ b/tests/test_absorptions.py @@ -35,6 +35,14 @@ [(u"купить деревянный стол", 10), (u"купить * стол", 11)], ), + ( + [(u"купить длинный деревянный стол", 10), + (u"купить * деревянный стол", 12), + (u"купить * деревянный", 12)], + [(u"купить длинный деревянный стол", 10), + (u"купить * деревянный стол", 11), + (u"купить * деревянный", 12)], + ), ]) def test_absorptions(input, result): assert set(absorptions(input)) == set(result)