def fingerprint(<EOL>self,<EOL>phrase,<EOL>phonetic_algorithm=double_metaphone,<EOL>joiner='<STR_LIT:U+0020>',<EOL>*args,<EOL>**kwargs<EOL>):
phonetic = '<STR_LIT>'<EOL>for word in phrase.split():<EOL><INDENT>word = phonetic_algorithm(word, *args, **kwargs)<EOL>if not isinstance(word, text_type) and hasattr(word, '<STR_LIT>'):<EOL><INDENT>word = word[<NUM_LIT:0>]<EOL><DEDENT>phonetic += word + joiner<EOL><DEDENT>phonetic = phonetic[: -len(joiner)]<EOL>return super(self.__class__, self).fingerprint(phonetic)<EOL>
Return the phonetic fingerprint of a phrase.

        Parameters
        ----------
        phrase : str
            The string from which to calculate the phonetic fingerprint
        phonetic_algorithm : function
            A phonetic algorithm that takes a string and returns a string
            (presumably a phonetic representation of the original string). By
            default, this function uses :py:func:`.double_metaphone`.
        joiner : str
            The string that will be placed between each word
        *args
            Variable length argument list
        **kwargs
            Arbitrary keyword arguments

        Returns
        -------
        str
            The phonetic fingerprint of the phrase

        Examples
        --------
        >>> pf = Phonetic()
        >>> pf.fingerprint('The quick brown fox jumped over the lazy dog.')
        '0 afr fks jmpt kk ls prn tk'
        >>> from abydos.phonetic import soundex
        >>> pf.fingerprint('The quick brown fox jumped over the lazy dog.',
        ... phonetic_algorithm=soundex)
        'b650 d200 f200 j513 l200 o160 q200 t000'