Пример #1
0
    def ask_grandpy(self, message):
        """Parse and clean the question sent by the user to grandpy
            
        message : string object"""

        grandpy_information = dict()
        parser = Parser()

        #Clean the message
        message = parser.clean_message(message)
        message = parser.parse_message(message)

        #Getting coordinates of location from Google Maps API
        maps = Maps(message)
        coordinates = maps.get_coordinates_from_locations()

        if "error_message" in coordinates.keys():
            return {"error_message" : self.error_message()}

        else:
            grandpy_information.update({"coordinates" : coordinates})

            #Getting information from Wikipedia Page
            wiki = Wikipedia(coordinates)
            wiki.get_pageid_from_coordinates()
            wiki.get_content_from_pageid()   
            grandpy_information.update({"content" : wiki.content})

            return grandpy_information
Пример #2
0
def test_clean_accent():
    """Test about the method Parser.clean_accent(message)"""
    message_to_test = "éèêëàâäïîôöûü"
    parser_to_test = Parser()
    message_to_test = parser_to_test.clean_accent(message_to_test)
    final_message = "eeeeaaaiioouu"
    assert message_to_test == final_message
Пример #3
0
def test_clean_message():
    """Test the method clean_message from the class Parser"""

    message_to_test = "Je--voudrais\\connaître les Informations sur Parïs+Marseille-Caen."
    parser_to_test = Parser()
    message_to_test = parser_to_test.clean_message(message_to_test)
    final_message = "je voudrais connaitre les informations sur paris marseille caen"
    assert message_to_test == final_message
Пример #4
0
def test_clean_special_character():
    """Test about the method Parser.clean_special_character(message)"""

    message_to_test = "Je voudrais savoir si c'est possible, d'obtenir les coordonnées et informations sur Paris."
    parser_to_test = Parser()
    message_to_test = parser_to_test.clean_special_character(message_to_test)
    final_message = "Je voudrais savoir si c est possible d obtenir les coordonnées et informations sur Paris"
    assert message_to_test == final_message
Пример #5
0
    def test_parser_remove_extra_space(self):
        sentence_test = "one test  extra   space    beetween     words"
        parser = Parser(sentence_test)
        parser.clean_input()

        assert "  " not in parser.text
        assert "   " not in parser.text
        assert "    " not in parser.text
        assert "     " not in parser.text
Пример #6
0
    def test_parser_remove_capital_letters(self):
        sentence_test = "Texte Avec Des Majuscules A Transformer En Minuscule"
        parser = Parser(sentence_test)
        parser.clean_input()

        assert "T" not in parser.text
        assert "A" not in parser.text
        assert "D" not in parser.text
        assert "M" not in parser.text
        assert "E" not in parser.text
Пример #7
0
    def test_parser_remove_accents(self):
        sentence_test = "à é î ö ù è"
        parser = Parser(sentence_test)
        parser.clean_input()

        assert "à" not in parser.text
        assert "é" not in parser.text
        assert "î" not in parser.text
        assert "ö" not in parser.text
        assert "ù" not in parser.text
        assert "è" not in parser.text
Пример #8
0
    def setup(self):
        self.parser = Parser()

        self.parsing_requests_test = [
            ("Où se trouve Marseille ?", "marseille"),
            ("Tu pourrais me dire où se situe Cannes ?", "cannes"),
            ("Papy ! Parle moi de Toulon !", "toulon"),
            ("Qu'est-ce que tu peux me dire sur Lyon ?", "lyon"),
            ("Tu pourrais me parler d'Arles ?", "arles"),
            ("Où est Montpellier ??", "montpellier"),
            ("Raconte moi l'histoire d'Avignon.", "avignon"),
            ("Qu'est-ce que tu peux me dire à propos de Nice?", "nice"),
            ("Adresse de la Poste à Arles", "la poste a arles"),
            ("Salut Grandpy", None)
        ]
Пример #9
0
class TestParser:
    def setup(self):
        self.parser = Parser()

        self.parsing_requests_test = [
            ("Où se trouve Marseille ?", "marseille"),
            ("Tu pourrais me dire où se situe Cannes ?", "cannes"),
            ("Papy ! Parle moi de Toulon !", "toulon"),
            ("Qu'est-ce que tu peux me dire sur Lyon ?", "lyon"),
            ("Tu pourrais me parler d'Arles ?", "arles"),
            ("Où est Montpellier ??", "montpellier"),
            ("Raconte moi l'histoire d'Avignon.", "avignon"),
            ("Qu'est-ce que tu peux me dire à propos de Nice?", "nice"),
            ("Adresse de la Poste à Arles", "la poste a arles"),
            ("Salut Grandpy", None)
        ]

    def test_parse_request(self):
        """Check that the parser returns meaningful information"""
        
        for request, result in self.parsing_requests_test:
            assert self.parser.parse_request(request) == result
Пример #10
0
    def grandpy(self):
        # error list
        list_error = [
            "Je suis un peu dur de la feuille, peux tu reformuler ?",
            "Je ne suis pas sur de comprendre, peux tu le dire autrement ?",
            "Argh, Alzheimer quand tu nous tiens.. reformules veux tu ?"
        ]

        # Answer list
        list_answer = [
            "Bien sur mon enfant, voici l'adresse:",
            "Pas de souci, je te donne l'adresse mon enfant:",
            "Il n'y a pas de probleme mon enfant, voila l'adresse:"
        ]

        # Anecdote list
        list_anecdote = [
            "Tiens d'ailleurs, j'ai une anecdote interessante:",
            "A ce propos, j'ai une petite info pour toi:",
            "Le savais-tu ?"
        ]

        # Parser
        parser = Parser(self.raw_question)
        clean_question = parser.clean_input()

        # Here
        here = Here(clean_question)
        sorted_informations = here.getting_sorted_informations()
        if here.error:
            return {
                "grandpyerror": random.choice(list_error)
            }
        else:
            title = sorted_informations[0]
            latitude = sorted_informations[1][0]
            longitude = sorted_informations[1][1]
            address = sorted_informations[3]

        # Wiki
        wiki = Wiki(latitude, longitude)
        page_id = wiki.article_id_from_sorted_raw_info()
        full_extract = wiki.getting_extract_and_url_from_closest_wiki_page(
            page_id
        )

        article_extract = full_extract[0]
        url = full_extract[1]

        return {
            "title": title,
            "latitude": latitude,
            "longitude": longitude,
            "address": address.replace('<br/>', ', '),
            "mapapi": HERE_JS_MAP,
            "articleextract": article_extract,
            "urlarticle": url,
            "grandpyanecdote": random.choice(list_anecdote),
            "grandpyanswer":
            title +
            "? " +
            random.choice(list_answer) +
            " " +
            address.replace('<br/>', ', ')

        }
Пример #11
0
    def test_parser_extract_location_from_a_question(self):
        sentence_test = "ou se situe la tour eiffel ?"
        parser = Parser(sentence_test)
        parser.clean_input()

        assert parser.text == "la tour eiffel"
Пример #12
0
    def test_parser_remove_spaces_in_beggining_and_the_end(self):
        sentence_test = " a b "
        parser = Parser(sentence_test)
        parser.clean_input()

        assert parser.text == "a b"
Пример #13
0
def test_remove_accents():
    parser = Parser("éèâ")
    expected_result = "eea"
    assert parser.remove_accents().text == expected_result
Пример #14
0
def test_remove_capitals():
    parser = Parser("Salut")
    expected_result = "salut"
    assert parser.remove_capitals().text == expected_result
Пример #15
0
def test_parser_text():
    parser = Parser(
        "Salut, comment vas-tu? Pourrais-tu par hasard m'indiquer quelle est l'adresse de la tour eiffel, s'il te plait ?")
    expected_result = "la tour eiffel"
    assert parser.parser_text().text == expected_result