Esempio n. 1
0
 def testFloatCutoff(self):
     input = "five point one three seven seven seven seven seven"
     self.assertEqual(NumberService.parseMagnitude(input), '5.14')
Esempio n. 2
0
 def testScientific(self):
     input = 5e-05
     self.assertEqual(NumberService.parseMagnitude(input),
                      '5 times ten to the negative 5')
Esempio n. 3
0
def handle(text, mic, profile):
    # Vocab used in Currency Exchange Rate Module
    phrases = [
        "YES",
        "NO",
        "JAPANESE",
        "YEN",
        "AMERICAN",
        "DOLLAR",
        "INDIAN",
        "RUPEES",
        "EURO",
        "SWISS",
        "FRANC",
        "BRITISH",
        "POUND",
        "CHINESE",
        "YUAN",
    ]

    # Comment out below two lines if you are using Jasper in TEXT Mode
    currexch_stt_engine = mic.active_stt_engine.get_instance("rateexch", phrases)
    mic = Mic(mic.speaker, mic.passive_stt_engine, currexch_stt_enginess)

    serviceNum = NumberService()

    def convertToCode(currency):

        code_list = {
            "INDIAN": "INR",
            "RUPEES": "INR",
            "YEN": "JPY",
            "JAPANESE": "JPY",
            "AMERICAN": "USD",
            "DOLLAR": "USD",
            "YUAN": "CNH",
            "CHINESE": "CNH",
            "EURO": "EUR",
            "POUND": "GBP",
            "BRITISH": "GBP",
            " SWISS": "CHF",
            "FRANC": "CHF",
        }

        for key, value in code_list.iteritems():
            if key in currency.split():
                return value
        return ""

    def currencyConverterYahoo(currency_from, currency_to, currency_input):
        yql_base_url = "https://query.yahooapis.com/v1/public/yql"
        yql_query = (
            'select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20("' + currency_from + currency_to + '")'
        )
        yql_query_url = (
            yql_base_url + "?q=" + yql_query + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"
        )

        yql_response = urllib2.urlopen(yql_query_url)
        yql_json = json.loads(yql_response.read())
        currency_output = currency_input * float(yql_json["query"]["results"]["rate"]["Rate"])
        return currency_output

    while True:
        mic.say(" First Currency?")
        currency_from = convertToCode(mic.activeListen())

        mic.say(" Second Currency?")
        currency_to = convertToCode(mic.activeListen())

        if currency_from != "" and currency_to != "":
            mic.say(" Getting exchange rate of " + currency_from + " against " + currency_to + ".")
            currency_input = 1
            currency_input_str = serviceNum.parseMagnitude(currency_input)

            try:
                # YAHOO Services
                rate = currencyConverterYahoo(currency_from, currency_to, currency_input)
                rateStr = serviceNum.parseMagnitude(rate)

            except (IOError, ValueError, KeyError, TypeError):
                pass  # invalid json
                mic.say(" An error occurred. Maybe the A P I is off line?")
                break

            else:
                pass  # valid json
                mic.say(" Okay, here is the exchange rate.")
                mic.say(
                    " It is approximately "
                    + rateStr
                    + " "
                    + currency_to
                    + " for "
                    + currency_input_str
                    + " "
                    + currency_from
                    + " ."
                )
                mic.say(" Do you want to continue?")
                ans = mic.activeListen()
                if "NO" in ans.split():
                    break
                continue
        else:
            mic.say(" One or both currencies are not understood. Please try again.")
            continue
Esempio n. 4
0
from semantic.numbers import NumberService

service = NumberService()

print service.parse("Two hundred and six")

print service.parse("Five point one five")

print service.parse("Eleven and two thirds")

print service.parseMagnitude("7e-05")
Esempio n. 5
0
def handle(text, mic, profile):
    # Vocab used in Currency Exchange Rate Module
    phrases = [
        "YES", "NO", "JAPANESE", "YEN", "AMERICAN", "DOLLAR", "INDIAN",
        "RUPEES", "EURO", "SWISS", "FRANC", "BRITISH", "POUND", "CHINESE",
        "YUAN"
    ]

    # Comment out below two lines if you are using Jasper in TEXT Mode
    currexch_stt_engine = mic.active_stt_engine.get_instance(
        'rateexch', phrases)
    mic = Mic(mic.speaker, mic.passive_stt_engine, currexch_stt_enginess)

    serviceNum = NumberService()

    def convertToCode(currency):

        code_list = {
            "INDIAN": "INR",
            "RUPEES": "INR",
            "YEN": "JPY",
            "JAPANESE": "JPY",
            "AMERICAN": "USD",
            "DOLLAR": "USD",
            "YUAN": "CNH",
            "CHINESE": "CNH",
            "EURO": "EUR",
            "POUND": "GBP",
            "BRITISH": "GBP",
            " SWISS": "CHF",
            "FRANC": "CHF"
        }

        for key, value in code_list.iteritems():
            if key in currency.split():
                return value
        return ''

    def currencyConverterYahoo(currency_from, currency_to, currency_input):
        yql_base_url = "https://query.yahooapis.com/v1/public/yql"
        yql_query = 'select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20("' + currency_from + currency_to + '")'
        yql_query_url = yql_base_url + "?q=" + yql_query + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"

        yql_response = urllib2.urlopen(yql_query_url)
        yql_json = json.loads(yql_response.read())
        currency_output = currency_input * float(
            yql_json['query']['results']['rate']['Rate'])
        return currency_output

    while True:
        mic.say(" First Currency?")
        currency_from = convertToCode(mic.activeListen())

        mic.say(" Second Currency?")
        currency_to = convertToCode(mic.activeListen())

        if currency_from != "" and currency_to != "":
            mic.say(" Getting exchange rate of " + currency_from +
                    " against " + currency_to + ".")
            currency_input = 1
            currency_input_str = serviceNum.parseMagnitude(currency_input)

            try:
                # YAHOO Services
                rate = currencyConverterYahoo(currency_from, currency_to,
                                              currency_input)
                rateStr = serviceNum.parseMagnitude(rate)

            except (IOError, ValueError, KeyError, TypeError):
                pass  # invalid json
                mic.say(" An error occurred. Maybe the A P I is off line?")
                break

            else:
                pass  # valid json
                mic.say(" Okay, here is the exchange rate.")
                mic.say(" It is approximately " + rateStr + " " + currency_to +
                        " for " + currency_input_str + " " + currency_from +
                        " .")
                mic.say(" Do you want to continue?")
                ans = mic.activeListen()
                if "NO" in ans.split():
                    break
                continue
        else:
            mic.say(
                " One or both currencies are not understood. Please try again."
            )
            continue
Esempio n. 6
0
 def testScientific(self):
     inp = 5e-05
     self.assertEqual(NumberService.parseMagnitude(inp),
                      '5 times ten to the negative 5')
Esempio n. 7
0
 def testFloatCutoff(self):
     inp = "five point one three seven seven seven seven seven"
     self.assertEqual(NumberService.parseMagnitude(inp), '5.14')