<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def without_extra_phrases(self):
 """Removes parenthethical and dashed phrases"""

        # the last parenthesis is optional, because sometimes they are truncated
        name = re.sub(r'\s*\([^)]*\)?\s*$', '', self.name)
        name = re.sub(r'(?i)\s* formerly.*$', '', name)
        name = re.sub(r'(?i)\s*and its affiliates$', '', name)
        name = re.sub(r'\bet al\b', '', name)
        
        # in some datasets, the name of an organization is followed by a hyphen and an abbreviated name, or a specific
        # department or geographic subdivision; we want to remove this extraneous stuff without breaking names like
        # Wal-Mart or Williams-Sonoma

        # if there's a hyphen at least four characters in, proceed
        if "-" in name:
            hyphen_parts = name.rsplit("-", 1)
            # if the part after the hyphen is shorter than the part before,
            # AND isn't either a number (often occurs in Union names) or a single letter (e.g., Tech-X),
            # AND the hyphen is preceded by either whitespace or at least four characters,
            # discard the hyphen and whatever follows
            if len(hyphen_parts[1]) < len(hyphen_parts[0]) and re.search(r'(\w{4,}|\s+)$', hyphen_parts[0]) and not re.match(r'^([a-zA-Z]|[0-9]+)$', hyphen_parts[1]):
                name = hyphen_parts[0].strip()

        return name